論文メモ: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
物体検出の分野でブレイクスルーとなったFaster R-CNNの提案論文 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (arXiv) についての備忘録として整理します。
ポイント
- 先発のFast R-CNNで時間を要していた物体領域候補の抽出も、ニューラルネットワークで置き換えたことで、推論を高速化
- 物体の領域抽出処理と分類を1つのネットワークに統合することで、一気通貫で学習できるようになった
@article{DBLP:journals/corr/RenHG015, author = {Shaoqing Ren and Kaiming He and Ross B. Girshick and Jian Sun}, title = {Faster {R-CNN:} Towards Real-Time Object Detection with Region Proposal Networks}, journal = {CoRR}, volume = {abs/1506.01497}, year = {2015}, url = {http://arxiv.org/abs/1506.01497}, archivePrefix = {arXiv}, eprint = {1506.01497}, timestamp = {Mon, 13 Aug 2018 16:46:02 +0200}, biburl = {https://dblp.org/rec/bib/journals/corr/RenHG015}, bibsource = {dblp computer science bibliography, https://dblp.org} }
イシュー
物体検出アルゴリズムFast R-CNNの推論の高速化が本論文のメインイシューです。
背景
R-CNN1で、物体候補領域検出 (Region Proposal) と分類 (CNN + SVM) を行うアーキテクチャが提案されました。
Region ProposalにはSelective Searchを採用してます。Selective Searchは類似したセグメント (最小単位は画素) をグルーピングしていくことで、複数のセグメントに分割する手法です。
Selective Searchで得られた全ての領域に対して、CNNで特徴抽出し、SVMで分類するというものでした。
Fast R-CNN2では、R-CNNで領域候補の数だけCNNを通していた点に着目し、元の画像からCNNで得られた特徴マップを入力として分類する手法を提案しました。これによってCNNを通す回数が画像あたり1回になり、大幅に推論時間を短縮しました。
一方でRegion Proposalの計算は、R-CNN同様Selective Searchが使われていました。
その結果、Region Proposalの推論時間が大部分 (本論文の実験では80%以上) を占めるようになりました。動画に対するリアルタイムな物体検出 (5fps以上) を実現するためには、このRegion Proposalの短縮化が最後のハードルになってました。
アイディアとアーキテクチャ
キーとなるアイディアは、CNNから得られた特徴マップをインプットとしたRegion Proposal用のニューラルネットワーク (Region Proposal Network: RPN) を学習によって獲得することで、時間のかかるSelective Searchよりも高い推論速度を実現できるということです。3
- Region Proposal以外はFast R-CNNを踏襲
RPN
Faster R-CNNのブロックアーキテクチャは下図です。
- RPNのインプットは、conv layers (論文中ではZFNet4またはVGG165) から得られた特徴マップ
- 典型的な特徴マップの次元数は W (~60) x H (~40) x (256 or 512)
- RPNのアウトプットは、物体領域 (Region of Interest: RoI) のリスト (可変数)
- Fast R-CNNでは、最初にRoI Poolingによって各RoIを固定サイズの特徴マップになるようにリサイズします
RPNのフローは大きく3ステップです。
Step 1. 特徴マップから n x n のスライディングウィンドウ (論文中は3 x 3) によって256 or 512次元の特徴ベクトルN個を抽出
Step 2. 特徴ベクトルN個を2つの全結合ネットワークへ入力
- cls: 物体 or 背景を分類するネットワーク
- reg: BBox (x, y, width, height) を予測するネットワーク
Step 3. NMS (non-maximum supression) で重複が大きいRoIを削除
- IoUが0.7以上で重複するRoIは、clsの出力 (score) が最大のもののみを残して削除
- 1画像あたり約2000個のRoIまで削減
Anchor
ステップ1.の特徴ベクトルの抽出では、特徴マップ1要素中に複数の物体が含まれるケースを考慮する必要があります。
論文では、スケールとアスペクト比がそれぞれ異なるk個のAnchorを導入しての特徴ベクトルを計算することで、これに対応しています。
実験では以下 3 x 3 = 9 パターンが使われています。
- スケール: 1282, 2562, 5122
- アスペクト比: 1:1, 1:2, 2:1
損失関数
RPNの損失関数は、2つのネットワーク (cls, reg) の損失関数 ( ) の合計で表されます。
- はAnchorのインデックス
- はlog loss
- はsmooth L1 loss
RPNとFaster R-CNNの同時学習
RPNとFaster R-CNNはCNN層を共有するため、学習を工夫しています。 (このあたりの理解がちょっと怪しく、実装を追って見てみる必要があります。)
- RPNを学習 (CNNは学習済みモデルで初期化)
- Faster R-CNNを、1.のRPNが推論したRoIを使って、学習 (こちらもCNNは学習済みモデルで初期化)
- CNNを2.で固定し、RPNをfine-tuning
- CNNを2.で固定し、3.のRPNが推論したRoIを使って、Faster R-CNNをfine-tuning
実験
PASCAL VOC 2007 / 2012とMS COCO 2014のデータセットを使った検証が行われてますが、ここではPASCALだけに留めます。
PASCAL VOC
推論速度
1番重要なRegion Proposalの計算 (推論) 時間ですが、VGG16でみると1枚あたり1510msから10msへ100倍以上改善されてます。全推論時間でも5fpsをマークしてます。(SS = Selective Search)
RPNの計算効率の良さに加えて、GPUの恩恵を受けられるようになったのも大きいです。
精度
2007のテストセットでmAP (mean Average Precision) を比較しても、一貫してSelective Searchよりも高い値をマークしてます。(shared / unshared はRPNとFast R-CNNの重み共有の有無を表してます。)
Selective Searchよりも高品質なRegion Proposalが学習によって獲得できることの証左となってます。
ちなみにAnchorの有無で比較してみると、VOC 2007の場合はスケールをバリエーションさせた場合にmAPを改善できることが示されてます。
- Anchorはドメイン次第でチューニングするのが良さそうです
まとめ
今回はFaster R-CNNの提案論文について紹介しました。
2019年現在、mAP 0.869がSOTA となってますが、end to endの学習で物体検出できるネットワークを実現したという点でとても重要な提案だったかと思います。
-
R. Girshick, J. Donahue, T. Darrell, and J. Malik, “Rich feature hierarchies for accurate object detection and semantic seg-mentation,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR) , 2014. (arXiv)↩
-
R. Girshick, “Fast R-CNN,” in IEEE International Conference on Computer Vision (ICCV) , 2015. (arXiv)↩
-
古典的な画像処理アルゴリズムからの大胆な方針転換に思えます。それだけSelective Searchがexpensiveだったことが伺えます。↩
-
M. D. Zeiler and R. Fergus, “Visualizing and understanding convolutional neural networks,” in European Conference on Computer Vision (ECCV) , 2014. (arXiv)↩
-
K. Simonyan and A. Zisserman. “Very deep convolutional networks for large-scale image recognition,” In Proc. of ICLR, 2015. (arXiv)↩