物体検出とR-CNNについて学んだことを備忘録として残します.
物体検出ってなんだ?
物体検出(object detection)とは,クラスの識別(classification)と物体の位置特定(localization)を合わせたものです.
クラス識別(classification)ってなんだ?
クラス識別(classification)とは,入力画像に対してその画像が何を示すかを出力することで,
一つの入力に対して出力も一つになります.
ちなみに,この「5」の画像は”MNIST”という画像データセットのものです.
位置特定(localization)ってなんだ?
位置特定(localization)とは,入力画像から特定の個所を出力することで,
一つの入力に対して出力は複数になります.
また,特定の個所を囲んだ矩形をバウンディングボックス(Bounding Box)といいます.
つまり,物体検出ってなんだ?
物体検出とは,このクラス識別と物体の位置特定を合わせたものになります.
どうやって物体検出するか?
今回のもう一つのテーマはR-CNNですが,このR-CNNが出る前は,
ウィンドウを細かくずらしていって,そのウィンドウごとに得られた領域をそれぞれCNNで分類していました.
ただこれだと,入力画像1枚に対して,複数回(ウィンドウで得た領域分)CNNを回さなければ
ならないので,非常に遅くなってしまいます.
(CNNについては前に記事を書いたので,こちらを参照してください)
R-CNN
上記の問題を解決するため,R-CNNが提案されました.
- 画像を入力
- 入力した画像から,RoI(region of interest, 候補領域)と呼ばれるものを
複数(2000個ほど)抽出する.そして,抽出したRoIすべてを,次のCNNへの
入力のためにリサイズする. - 先ほどリサイズしたRoIすべてをCNNに入力し,分類する.
「CNNに入れる前に,先に物体っぽい部分(RoI)を見つけよう」というのがR-CNNの新規性です.
このRoIを見つけるアルゴリズムとして,R-CNNではSelective Searchという手法を採用しています.
Selective Searchについての詳細は,以下のURLが分かりやすいです.
ちなみに,このRoIを生成するアルゴリズムのことをregion proposalと言うらしいです.
(RoIとregion proposalの使い分けがごっちゃになってるのを見ますが,僕が調べた感じだとこのように使い分けてるらしい)
次の記事では,R-CNNの欠点を改善したFast R-CNNについて書きたいと思います,
コメント