け日記

最近はPythonでいろいろやってます

論文メモ: 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を固定サイズの特徴マップになるようにリサイズします

Figure 2抜粋

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を導入しての特徴ベクトルを計算することで、これに対応しています。

Figure 3.抜粋

実験では以下 3 x 3 = 9 パターンが使われています。

  • スケール: 1282, 2562, 5122
  • アスペクト比: 1:1, 1:2, 2:1

損失関数

RPNの損失関数は、2つのネットワーク (cls, reg) の損失関数 (  L_{cls}, L_{reg} ) の合計で表されます。

  •  i はAnchorのインデックス
  •  L_{cls} はlog loss
  •  L_{reg} はsmooth L1 loss

式 (1) 抜粋

RPNとFaster R-CNNの同時学習

RPNとFaster R-CNNはCNN層を共有するため、学習を工夫しています。 (このあたりの理解がちょっと怪しく、実装を追って見てみる必要があります。)

  1. RPNを学習 (CNNは学習済みモデルで初期化)
  2. Faster R-CNNを、1.のRPNが推論したRoIを使って、学習 (こちらもCNNは学習済みモデルで初期化)
  3. CNNを2.で固定し、RPNをfine-tuning
  4. 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の恩恵を受けられるようになったのも大きいです。

f:id:ohke:20191116134419p:plain
Table 5抜粋

精度

2007のテストセットでmAP (mean Average Precision) を比較しても、一貫してSelective Searchよりも高い値をマークしてます。(shared / unshared はRPNとFast R-CNNの重み共有の有無を表してます。)

Selective Searchよりも高品質なRegion Proposalが学習によって獲得できることの証左となってます。

Table 4抜粋

ちなみにAnchorの有無で比較してみると、VOC 2007の場合はスケールをバリエーションさせた場合にmAPを改善できることが示されてます。

  • Anchorはドメイン次第でチューニングするのが良さそうです

Table 8抜粋

まとめ

今回はFaster R-CNNの提案論文について紹介しました。

2019年現在、mAP 0.869がSOTA となってますが、end to endの学習で物体検出できるネットワークを実現したという点でとても重要な提案だったかと思います。


  1. 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)

  2. R. Girshick, “Fast R-CNN,” in IEEE International Conference on Computer Vision (ICCV) , 2015. (arXiv)

  3. 古典的な画像処理アルゴリズムからの大胆な方針転換に思えます。それだけSelective Searchがexpensiveだったことが伺えます。

  4. M. D. Zeiler and R. Fergus, “Visualizing and understanding convolutional neural networks,” in European Conference on Computer Vision (ECCV) , 2014. (arXiv)

  5. K. Simonyan and A. Zisserman. “Very deep convolutional networks for large-scale image recognition,” In Proc. of ICLR, 2015. (arXiv)