今回はタイトルの通り、R-CNN,Fast R-CNN, Faster R-CNNについて何が違うのかを書いていきます。というのも、筆者がよく忘れてしまうからです・・・
R-CNNとは
R-CNNとはregion with CNN features の略で、CNNを利用した物体検出の手法です。CNNって何?物体検出とは?の方は別の記事をご参照ください。
R-CNNの流れとしてまず物体領域候補を抽出します。R-CNNでは選択的検索法を利用し、これにより複数の物体領域候補を抽出します。
次に抽出された物体領域候補内をCNNにかけ、そのCNNの中間層から得られる特徴を線形SVM(分類器)に入力することで、その物体が何なのかを予測します。つまりここは、普通にCNNで画像を分類するのと同じようなかたちになります。
次に、不要なバウンディングボックスを排除します。また、CNNから得られる特徴からバウンディングボックスのパラメータへの回帰を行います。これは分類されるクラスごとに学習されます。なので例えばそのクラスが人であれば、縦長のバウンディングボックスなのではないかというような回帰モデルができるかもしれません。
Fast R-CNNとは
Fast R-CNNとは、R -CNNより少し早いものです。
何が違くて早いかというと、
R-CNNでは物体領域候補をトリミングしてそれを一枚の画像としてCNNにかけ、特徴を分類していたようなかたちになるところを、
Faster R-CNNでは入力画像全体の特徴マップを作りそれを活用するという点です。
R-CNNでは物体領域候補を抽出しそれをCNNにかける際、CNNの入力層の大きさは決まっているため、その物体領域候補の画像が全て同じ大きさに統一された上でそれぞれの特徴が出しますが、
Fast R-CNNでは全体の特徴マップから物体領域候補の部分を切り取ることになるため、物体領域候補の大きさにより次元数は異なってしまいます。
そこで、異なる次元数を一定の大きさに統一するために
RoIプーリング層が必要となります。
またFast R-CNNではクラス認識とバウンディングボックスへの回帰を同時に学習されるために、マルチタスク損失を最適化することで、ネットワークのパラメータを求めます。
Faster R-CNNについて
Faster R-CNN は、Fast R-CNN よりさらに早い手法です。
Faster R-CNNは、物体領域候補を抽出する際、選択的検索法ではなく、特徴マップから物体領域候補を抽出するRPN(領域提案ネットワーク)を利用することにより高速化します。
このRPNはバウンディングボックスを予測する回帰ネットワークと物体の有無を予測する分類ネットワークの2つを統合することにより実現されています。
回帰ネットワークではあらかじめk個のアンカーと呼ばれる、局所領域を中心とした標準的なバウンディンボックスを使うことにより実現します。局所領域はスライディングウィンドウにより生成されます。
物体領域候補の抽出の後はFast R-CNNと同じです。
参考資料
原田達也(2017)「画像認識(機械学習プロフェッショナルシリーズ)」
こちらの本は大変わかりやすく、オススメです!
あとがき
Qiitaに慣れておらず、文章の書き方等々雑なのでまた書き直すかもしれません。
また、記事を読んでいただきありがとうございます!!(,,> <,,)
編集リクエストもお待ちしております。