深層学習の学習 R-CNN

R-CNN(Region-CNN)とは

2014年に発表された一般物体検出の代表的なネットワーク。
元論文は、 Rich feature hierarchies for accurate object detection and semantic segmentation
ディープラーニングの一般物体検出手法の発展をまとめた図が下記のようにGitHubで公開されているが、R-CNNが出発点になっていることが分かる。

https://github.com/hoya012/deep_learning_object_detection/blob/master/assets/deep_learning_object_detection_history.PNG?raw=true

R-CNNのプロセス

R-CNNのプロセスは大きく下記のように示せる。
(参考はこちら
1.対象画像の入力
2.入力画像に対して、物体が映っている領域の候補(region Proposal)をSelective Searchで約2000個抽出し、CNNのインプットの大きさに合うようにそれぞれの領域中の画像をリサイズする。
3.それぞれの領域に対してCNN(Alex Net)で特徴量を計算
4.それぞれの領域に何が映っているのかSVMで分類する

Region Proposal

入力画像からSelective Searchで物体が写っている領域の候補(Region Proposal)矩形を2000こ抽出し、CNNの入力画像とする。Selective Searchによってあらかじめ候補領域を絞り込むことで、高速化を図っている。
CNNの入力サイズは固定のため、Selective Searchで抽出した領域はCNNの入力サイズに合わせてリサイズする。

Selective Search

ピクセルレベルで類似する領域を階層的に結合して一つの物体領域を出力し、そのBBを出力する。

Compute CNN Feature

物体認識として使うCNNは、ImageNetデータセットで学習した一般的認識のネットワークを流用し、別のデータセットで転移学習を行う。

Classify Regions

SVMによって領域を分類する。

R-CNNの課題

R-CNNは深層学習以前の一般物体検出手法に比べて認識精度を大きく向上させたが、時間が非常にかかる。
また、CNN、SVM、BBの回帰とプロセスごとに別々に学習する必要がある。