Faster R-CNN徹底解説:リアルタイムな物体検出を実現するRegion Proposal Networkのすべて
こんにちは、ゆずかきです。
この記事では、「Faster R-CNN」 という、物体検出(Object Detection)の世界で非常に有名なフレームワークについて、論文「Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks」をベースに深く掘り下げたいと思います。
今回の主役は、RPN(Region Proposal Network) と呼ばれる、学習によってエッジや特徴量を自動抽出し、かつ“ほぼコストゼロ” でRegion Proposal(物体領域の候補)を生成してしまう技術です。これによって、従来ボトルネックとされていた領域候補抽出アルゴリズム(Selective Searchなど)の処理を大幅に高速化し、かつ高精度な物体検出を実現しています。
また、今回は合わせて、SAM (Selective Anchor Mechanism) という古典的ながら今なお活用の余地がある概念についても言及しながら、SEO的にも押さえておきたいキーワードを多めに取り入れつつ解説を進めます。
それでは、論文で紹介されている手法を、できるだけ噛み砕いてみていきましょう。
論文URL
👇
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
§本記事の構成
- はじめに: Faster R-CNNとは?
- Faster R-CNNを生んだ背景:高速化への取り組み
- Region Proposal Network (RPN)のアーキテクチャ
- SAM(Selective Anchor Mechanism)との関連性
- Faster R-CNN全体の学習手順:4ステップのアルゴリズム
- 主要な実験結果と考察(PASCAL VOC, MS COCO)
- 応用と今後の展望:ResNetや他分野への波及
- まとめ & おわりに
§はじめに: Faster R-CNNとは?
論文正式名称は、
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
著者は、Shaoqing Ren、Kaiming He、Ross Girshick、Jian Sun の4名(Microsoft Research や Facebook AI Research など)。arXivには2015年6月に初稿が投稿され、2016年1月に改訂版が公開されています。
Faster R-CNNは、2段階の物体検出アーキテクチャを提唱してきた流れの集大成ともいえるフレームワークです。
- 第一段階: 画像全体から “物体がありそうな領域"(Region Proposal)を生成
- 第二段階: その領域を物体クラス(人・犬・車など)に分類し、さらにBounding Boxを精緻に調整(回帰)
従来のR-CNNファミリー(R-CNN, SPPnet, Fast R-CNN)では、Region Proposalのステップとして Selective Search や EdgeBoxes といった外部アルゴリズムを使っていました。しかしこれらはCPUで数百ミリ秒〜数秒ほど要するため、せっかくCNNをGPUで高速に処理しても、Region Proposalがボトルネックになってしまうという問題がありました。
Faster R-CNNでは、RPN(Region Proposal Network) という学習型ネットワークで領域候補を生成し、従来手法の数分の1〜数十分の1程度にまで高速化を達成しています。しかも精度(mAP)も向上しているという、画期的な手法として注目を集めました。
§Faster R-CNNを生んだ背景:高速化への取り組み
もともと、物体検出には
- スライディングウィンドウ方式
- 領域候補抽出方式
など様々な流れがありました。Deep Learningがブレイクする前のDPM(Deformable Parts Model)などでは、スライディングウィンドウをマルチスケールに適用する手法が主流でしたが、計算コストの問題や背景領域の膨大な無駄が指摘されてきました。
そこでSelective Search (SS) や EdgeBoxes (EB) といった領域候補(Region Proposal)生成アルゴリズムが登場。画像をオーバーセグメンテーションしたり、エッジ密度を評価したりして「ここに物体がある可能性が高そう」という候補矩形を抽出し、大幅に探索空間を絞るやり方が主流になりました。
しかし、Fast R-CNN(Ross Girshick, 2015)でRoI(Region of Interest)プーリングなどを使いCNNの計算を共有できるようになっても、領域候補の生成自体がCPUベースで数秒程度かかり、これが高速化のネックに。
Faster R-CNNは、そこを学習型ネットワーク(RPN)で置き換えてやろうと発想転換したわけです。RPNは画像全体からほぼコストゼロで領域候補を作り出すことができ、さらにCNNベースの特徴抽出をFast R-CNNと完全に共有するため、推論時にもほぼ追加コストなく300個程度の高品質な領域候補が得られるのが大きな強みと言えます。
§Region Proposal Network (RPN)のアーキテクチャ
RPNは、“Fully Convolutional Network” (FCN) の一種とみなすことができます。具体的には以下のような流れ:
- CNNで画像全体を畳み込み
- VGG-16やZFといったベースネットの特徴量をまず計算します(たとえばVGG-16なら13層のConvを通す)。
- 特定の層(最後のConv層など)の出力フィーチャマップの各位置に対し、3×3の小さな畳み込み(スライド) を行う
- この3×3 Convの出力を、さらに2つの1×1 Convへ分岐し、「分類スコア(objectness)」と「バウンディングボックス回帰(補正)」を同時に推定します。
- Anchor(アンカー)
- 各スライド位置には、いくつかのスケール・アスペクト比をあらかじめ仮定した矩形(Anchor)が配置される(論文中の例では3スケール×3アスペクト比 = 9個)。
- 各Anchorに対して、「物体が存在するか否かの2値分類 (cls)」 と 「Bounding Boxの補正値 (reg)」 を出力。
- 最終的に、スコア上位のAnchorを回帰補正したものを、Non-Maximum Suppression (NMS) で絞り込むと、高品質な領域候補となる。
この仕組みにより、1つのCNNフィーチャマップから同時に複数スケールの物体候補を一気に取り出せるわけです。
さらに言えば、画像の各スライド位置が平行移動すると、Anchorも平行移動するため、翻訳不変性が高い のが特徴です。
学習ロス関数
RPNの損失関数は、
[
L({p_i}, {t_i}) = \frac{1}{N_{\text{cls}}}\sum_i L_{\text{cls}}(p_i, p_i^) + \frac{\lambda}{N_{\text{reg}}}\sum_i [p_i^ \ge 1] L_{\text{reg}}(t_i, t_i^*)
]
といった形で、
- Lcls: 物体/背景の2クラス分類(Cross Entropy)
- Lreg: バウンディングボックス回帰(Smooth L1)
を組み合わせたマルチタスクロスになっています。
Anchorが正例かどうかは、IoUが0.7以上であれば正例(物体あり)、IoU<0.3であれば負例(背景)などのしきい値で定義されます。
Anchor多スケール設計とSAM(Selective Anchor Mechanism)
このAnchorベースの考え方は、古典的にはSAM (Selective Anchor Mechanism) と呼ばれるアプローチの一種でもあります。実際、スケール・アスペクト比をあらかじめ複数用意しておき、入力をマルチスケールでスキャンするような仕組みは、SAMの考え方をCNN上で実現したものとも位置づけられます。
- Anchorのスケール×アスペクト比 = 多様な物体サイズを一つのConv層からカバー
- SAM(Selective Anchor Mechanism) の概念はDPMなどスライディングウィンドウ時代から連綿と使われてきた
- Faster R-CNNでは、SAMをアンカー方式で実装 し、高速・高精度化に成功
こうした古い概念でありながら、SAM はまだまだ多くの実装で使える要素を持ち、SEO的にも注目され続けるキーワードと言えます。
§Faster R-CNN全体の学習手順:4ステップのアルゴリズム
Faster R-CNNは大きく分けると以下のモジュールで構成されます。
- RPN: Region Proposalを吐き出すネットワーク
- Fast R-CNN部分: 各提案領域をRoIプーリングで特徴抽出 → クラス分類 & バウンディングボックス回帰
両者はCNNフィーチャを共有できますが、その学習には工夫が必要。論文では次の4ステップの交互学習を提案しています。
- Step-1: ImageNetで事前学習済みのCNN(VGG-16等)をベースにRPNを学習。ここではFast R-CNN部分はまだ考慮しない。
- Step-2: 得られたRPNで領域候補を生成し、その候補を使ってFast R-CNNを学習。RPNは固定。
- Step-3: 学習済みFast R-CNNの重みで初期化しつつRPNをさらにfine-tune(RPNの専用層だけ更新し、共有層は固定)。
- Step-4: 最後に、共有層を固定した状態でFast R-CNN部分を微調整(検出器側の全結合層などだけ学習)。
この交互学習により、RPNとFast R-CNNが畳み込み層を共有しながらも、それぞれのタスクに最適なフィルタを調整していきます。
また、論文では「近似的なJoint Training」や「RoI Warping」といった話も言及されていますが、最終的には上記4ステップ方式で十分高精度が出る、という実験結果が示されています。
§主要な実験結果と考察(PASCAL VOC, MS COCO)
Faster R-CNNの性能評価は主に PASCAL VOC や MS COCO データセットで行われています。代表的な結果をピックアップします。
PASCAL VOC 2007, 2012
- Selective Search + Fast R-CNN で mAP ~58.7% (ZFネット) ~66.9% (VGG-16)
- Faster R-CNN (RPN) + Fast R-CNN で mAP ~59.9% (ZF) ~69.9% (VGG-16)
- VOC2007 trainval と VOC2012 trainval のunionを使って学習すると ~73.2%
- COCOデータを追加学習に用いると ~78.8% まで向上する例もあり、大規模データとの相性が非常に良い
このように、RPNを用いるFaster R-CNNは、Selective Searchなど外部提案手法を上回る精度を発揮し、かつ推論時間が大幅に短縮されます。
MS COCO
- Fast R-CNN (SS提案) → mAP@[.5:.95] ~19.3% (VGG-16)
- Faster R-CNN (RPN提案) → mAP@[.5:.95] ~21.5% (VGG-16)
- ResNet-101ベースなどより深いネットを用いると mAP@[.5:.95] ~27〜30%台へ大きく向上
- ILSVRCやCOCOのコンペで1st-place獲得など、現行SOTA(State-of-the-Art) を牽引
COCOの評価指標はIoU閾値を変動させる平均を取る方式で、精度が厳しく問われるため、RPNの提案領域品質が非常に効いてきます。かつ“SAM(Selective Anchor Mechanism)”を活用してマルチスケールの物体を漏れなく捉えられる点もCOCOなど大規模データでの成功要因と言えそうです。
§応用と今後の展望:ResNetや他分野への波及
Faster R-CNNは発表当時(2015〜2016年)から、その高速性と高精度によって一躍有名になり、以下のように多方面に応用されてきました:
- より深いネットワーク(ResNet, DenseNetなど)との組み合わせ
- ResNet-101を用いるとMS COCOのmAP@[.5:.95]が大幅上昇。
- 学習データを拡大(COCO、Open Images)すればするほど、RPNによる内部学習が利いてくる。
- 3D物体検出やVideo物体検出
- Point Cloudへの拡張(3D RPN)や、Videoフレーム間でのRPN活用など、汎用的に波及。
- セマンティックセグメンテーションとの統合
- Mask R-CNN (2017) はRPNで得た領域に対してマスク予測を行う方法で、高精度のインスタンスセグメンテーションを実現。
- SAM(Selective Anchor Mechanism)の再評価
- Transformerなどが台頭しても、ローカルなAnchorやSAMを使った方法は、小さい物体検出などでなお優位性があるケースが多い。
- 特にリアルタイム性が必要なアプリケーションや、メモリリソースが限られた組込み環境では、SAMを取り入れたAnchorベースのアーキテクチャがいまだ重宝される。
Faster R-CNNの重要性は今なお色褪せず、多くの研究や産業応用でベースライン/拡張元として用いられています。
§まとめ & おわりに
Faster R-CNN は、
- RPNによって高速かつ高精度なRegion Proposalを生成
- そのままFast R-CNNのステージに繋ぎ、CNNの畳み込み層を共有
- 結果として提案領域抽出のオーバーヘッドがほぼゼロになり、実用レベルのリアルタイム検出が可能
という、革新的な2段階物体検出フレームワークでした。
- SAM (Selective Anchor Mechanism) の基本アイデア(マルチスケール・マルチアスペクト比のスライディングウィンドウ)をCNNと融合することで、理にかなったシンプル設計を実装
- PASCAL VOCやMS COCOでSOTA級のmAP を達成し、ILSVRC/COCOの複数トラックでも優勝
- データ量を増やす(COCO→VOCへのfine-tuningなど)ことでさらに精度が伸び、大規模学習に適したアーキテクチャ
- 後続のMask R-CNN、Cascade R-CNNなど数多くの手法の基礎になっている
今回ご紹介した通り、「従来手法のボトルネックをRPNに置き換えるだけで大幅高速化を実現し、それでいて精度も向上する」というインパクトは非常に大きいものでした。さらに、SAM(Selective Anchor Mechanism) の概念を取り入れたこのアンカー設計は、多くの後続研究にも受け継がれています。
Faster R-CNNが登場してから、One-Stage検出(YOLO, SSDなど)やTransformer系検出(DETRなど)といった新しい流れも台頭しましたが、それらでも多かれ少なかれ、AnchorやSAMのコンセプトは何らかの形で活かされているのが実情です。リアルタイム応用や組込み応用を考える際にも、Faster R-CNNの考え方は現在でも十分参考になるでしょう。
🔑この記事のポイントまとめ
- Faster R-CNN は「RPN + Fast R-CNN」を一体化する2段階検出フレームワーク
- Region Proposal Network (RPN) が領域候補を学習的に生成 → 従来手法より高速・高精度
- SAM (Selective Anchor Mechanism):スライディングウィンドウ的発想をマルチスケール+マルチアスペクト比で実装する古典概念ながら、未だ主要な手法に組み込まれ続ける
- PASCAL VOCやMS COCO でSOTA級精度を達成、かつ実用的な推論速度(5fps〜17fpsなど)
- 拡張性が高く、Mask R-CNNやResNetなどとの組合せでさらに高精度化・多用途化
以上、Faster R-CNNの論文内容を概観してきました。SAM の考え方を巧みに取り入れつつ、RPNを用いて領域候補生成を高速化するという発想は、物体検出の世界を大きく前進させたと言えるでしょう。
最新のDeep Learning技術との融合によってさらに性能を伸ばす余地もあり、今後もFaster R-CNNの枠組みや、そこに含まれるSelective Anchor Mechanism(SAM) は多方面で活用されることは間違いありません。
最後までお読みいただき、ありがとうございました!
ディスカッション
コメント一覧
まだ、コメントがありません