R-CNN (Region-CNN)

記事を共有する:

1. R-CNN (Region-CNN)とは [概要]

R-CNN (Region-CNN)とは,2ステージ構成で,Coarse-to-Fineな予測を行う,2ステージ型 物体検出である [Girshick et al., 2014].

まず粗い前処理である前半ステージでは,Selective Search [Uijlings et al., 2013]による領域提案のバウンディンボックスを検出する.

後半ステージでは,各領域提案バウンディンボックス内の画像から,CNNの順伝搬で領域特徴ベクトルを抽出したのち,2モデルによる予測を実施する:

  1. (1) 物体クラスの識別(SVM)
  2. (2)領域候補バウンディンボックスの修正量(線形回帰)

これにより,各候補領域の物体クラスと修正済みバウンディンボックスが,最終的に確定し,最後にNMS(非極大値抑制)により,最終的な物体検出結果を得る.

領域提案の抽出を前処理として行ったのち,各領域候補内でのみ,CNNを使用することから「R-CNN(Region CNN)」と名付けられた.Ross Girschick (DPMの研究にも大学在籍時に参加)が所属する,Facebookの物体検出チームから,連続的に発表された「Faster R-CNN までのR-CNNシリーズ3部作(R-CNN /FastR-CNN/ Faster R-CNN)」のうち,このR-CNNは,最初の提案に相当する.

R-CNN 論文 [Girshick et al., 2014] の,Pascal VOC 2011を用いた物体画像からの物体検出実験では,当時のstate-of-the-artであったDPMの「33~34%」というmAP値を大きく上回る「58%」のmAPをたたき出し,CNNを使用することのアドバンテージを強く示した研究となった.ただし,物体検出CNNの書規定案の1つであったR-CNNは,計算がまだ非効率的で処理速度も非常に遅く(数分かかる),精度が良いものの時間がかかりすぎて,まだ実用的ではなかった.

Fast R-CNN と Faster R-CNN は,物体検出に特化した提案に変わるが,それらの前身であるR-CNNでは,Pascal VOC を使っているのもあり,「物体前景マスクのセグメンテーション(=インスタンスセグメンテーション)」についても,実験が行われた.

1.1 記事の構成

Faster R-CNNの記事では,シリーズ3部作の全体的な流れを,まとめて確認できるようにしてある.

以降この記事では,以下の構成で,R-CNNについて紹介する:

  • 2節 R-CNNの全体的な構成(前後半ステージの概要)
  • 3節 R-CNNの詳細 (後半ステージの詳細)
  • 4節 まとめ

2. R-CNN の 全体的な構成

R-CNN による物体検出
図1 R CNN による物体検出

まず,2節ではR-CNN(図1-右側)を用いた物体検出の全体的な構成(図1)について述べる.それを元に,3節では,後半ステージで用いるR-CNNの詳細について述べる.

前後半2ステージによる処理手順をまとめると,以下のようになる:

  • 前半ステージ (図1 左側):
    • Selective Search を使用し,画像座標上の「領域提案(Region Proposal)」を検出.
    • 領域提案は,クラス識別されていないObject候補。
    • また,各領域提案のバウンディングボックス矩形の位置合わせは粗い(後半ステージでボックス位置を洗練させる).
    • 検出された領域提案は,前景マスク情報も含む.
  • 後半ステージ (図1 右側):
    • 前半ステージの領域候補の領域画像を入力に,R-CNNによる検出処理を行う.
    • 各提案領域内の画像を切り出し,CNNの入力(224×224)に合うようリサイズ.
    • リサイズ画像を全結合層まで順伝搬し,特徴ベクトル(4096次元)を計算.
    • 4096次元ベクトルを入力として,以下の2つの予測を,独立に行う:
      1. [Classification] SVMで,物体クラス識別.
      2. [Localization] 線形回帰により,領域候補に対するBBoxの修正量を推定

以上が,R-CNNを用いた2ステージ処理の,全体像である.

Faster R-CNNYOLOSSDの登場した2015年以降は,物体検出ネットワークもEnd-to-End学習することが当たり前であるが,この当時は,まだそういった知見が溜まっておらず,一部のみCNNで領域内の特徴ベクトルを計算する戦略であった.これは,旧来手法の「BBox内のHOG特徴を用いて,SVMで検出」という構成から,特徴計算部分だけCNNにとりあえず差し替えてみたという風にみなすことができる.

また,R-CNN時点では,識別・回帰をCNN内で行わっていないわけだが,DPM [Felzenszwalb et al., 2008],[Felzenszwalb et al., 2010]よりも検出精度がかなり高くなった意味で,R-CNNでも十分に新規性は確保できたとも言える.

3. R-CNN の詳細

3節では,後半ステージのR-CNN(図1-右半分)の詳細について述べる.

3.1 再パラメータ化したBBox修正量の回帰

バウンディングボックス修正量の回帰
図2 バウンディングボックス修正量の回帰修正量$d x d y d w d h$を領域提案$bmp$を入力に回帰しておく

各領域提案において,領域提案内で計算したCNN特徴ベクトルを入力に,領域提案の中心位置$(x,y)$・サイズ$(w,h)$の,正解BBoxへの修正量(オフセット)を,線形回帰モデルへ学習することが提案された(図3).

領域提案BBoxの中心位置・サイズを$\bm{p} = (p_x,p_y,p_w,p_h)$で表す.また,物体クラス$k$の正解領域BBoxの中心位置・サイズを$\bm{g} = (g_x, g_y, g_w, g_h)$で表す.

これらの間の修正量を$(d_x(\bm{p}),d_y(\bm{p}),d_w(\bm{p}),d_y(\bm{p}))$と定義し,修正量を$\bm{p}$を入力とした線形回帰 $d_{\star}(p)$ を学習しておいて,それを予測することを,著者らは考えた:

\[
\tilde{g_x} = p_x d_x(\bm{p}) + p_x\\
\tilde{g_y} = p_x d_y(\bm{p}) + p_y\\
\tilde{g_w} = p_w \exp (d_w(\bm{p}))\\
\tilde{g_h} = p_h \exp (d_h(\bm{p}))
\]

しかし,上記の$\bm{g}$では,線形回帰の学習上都合が悪い.

そこで,再パラメータ化された修正量$\bm{t}=(t_x, t_y, t_w, t_h)$を代わりに回帰することを提案した(図2):

\[
t_x = (g_x – p_x)/p_w\\
t_y = (g_y – p_y)/p_h\\
t_w = \log (g_w/p_w)\\
t_h = \log (g_h/p_h)
\]

この再パラメータ化された$\bm{t}$を,R-CNNでは線形回帰モデルに学習する.

3.2 R-CNN の予測と学習

R-CNNでは「 物体クラスのSVM識別 + BBoxの線形回帰」の2タスクを,それぞれ個別の識別モデルに学習する(※ Fast R-CNN以降は,複数ヘッド構成のCNNに,識別と回帰をいっしょくたにマルチタスク学習する).

R-CNNは,入力の候補領域内のCNN特徴ベクトル(AlexNetの全結合層ベクトル)を入力として,以下の2モデルにそれぞれ物体クラスとBBox修正量を学習する:

  1. クラス識別用のSVM: 「物体 or 背景」を,N個の物体クラスごとに,2値SVMへ学習 (Pascal VOC 2010の場合,N = 20クラス).
  2. 線形回帰:物体クラスごとに,領域候補の修正量$\bm{t}$を,線形回帰モデルに学習.

テスト時は,これら2つの学習済みモデルを,それぞれ独立に実行することで,領域提案のBBoxごとに,検出を行う.

前半ステージのSelective Searchは前景セグメンテーションも出力するので,後半ステージ出力後は,物体前景マスク領域の結果も予測され,R-CNNの研究では Pascal VOC 2011でのセグメンテーション精度も従来手法と比較している.(※ Fast R-CNN と Faster R-CNNでは,前景セグメンテーション問題は無視される).

しかし,このチームはその後,インスタンスセグメンテーションの Mask R-CNN において,物体前景マスク領域の予測も復活させて,同時学習を提案することとなる.

3.3 R-CNN の意義と課題

Pascal VOC 2010に対して,CNN以前の最高性能手法であった DPM [Felzenszwalb et al., 2010] やRegionlets [Wang et al., 2013] を,mAPで10%以上更新する大幅な性能向上を達成した.

こうして,CNNで高精度物体検出を達成できる可能性を示したものの,最初のR-CNNには以下のような欠点があり,実用レベルにはまだ遠かった[Girshick et al., 2014]:

  • 学習が3ステージに分離している:
    • 領域提案からCNNをfine-tuneして特徴抽出CNNを学習.そのCNN特徴から,クラス識別SVMと,bbox線形回帰をそれぞれ学習する.よって,各モデル間に一貫性はない.
  • 学習速度が遅い:
    • 1画像につき2000個くらいの領域候補が出る.従って,2000回/画像もCNNを順伝搬する必要があり,膨大に学習時間がかかる.
  • テスト速度が遅い:
    • 1枚の画像を処理するのに47秒もかかるので,実用的に到底使えない.

そこで,著者らは高速化版として次にFast R-CNNを提案する.

4. まとめ

Faster R-CNN までの3部作(R-CNN /FastR-CNN/ Faster R-CNN)」の1つめに相当する,R-CNN(Region CNN)について,この記事では紹介した.

端対端学習を行うのが,現代の物体検出ネットワークでは当たり前であるが,R-CNNはディープラーニング流行初期(2014年)の提案であり,まだその段階に業界的に達していなかった.よって,当時の非CNN物体検出手法の処理構成に沿ったかたちで,まずは「領域提案候補内の特徴を抽出する領域CNN」という発想のもとに,前段にSelective Searchが置かれた2ステージ型の構成が提案された.

CNN以前の最先端であったDPMと比べて,一気に精度は向上したものの,ナイーヴな計算効率・処理速度面に大きく問題があった.そこで,処理速度面を解決する,効率化研究を同じチームが行った結果,Fast R-CNN, Faster R-CNN がすぐに提案されることとなる.

関連書籍

References

  • [Cheng et al., 2014] Cheng, M. M., Zhang, Z., Lin, W. Y., & Torr, P. (2014). BING: Binarized normed gradients for objectness estimation at 300fps. In CVPR 2014.
  • [Felzenszwalb et al., 2008] P. Felzenszwalb, D. McAllester, and D. Ramanan. A discriminatively trained, multiscale, deformable part model. In CVPR, 2008.
  • [Felzenszwalb et al., 2010] P. Felzenszwalb, R. Girshick, D. McAllester, and D. Ramanan. Object detection with discriminatively trained part based models. TPAMI, 2010.
  • [Girshick et al., 2014] Girshick, R., Donahue, J., Darrell, T., & Malik, J. (2014). Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.
  • [Girshick, 2015] Girshick, R. Fast r-cnn. In ICCV, 2015.
  • [He et al., 2014] He K., Zhang X., Ren, S., and Sun, J. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014.
  • [Ren et al., 2015] Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster r-cnn: towards real-time object detection with region proposal networks. In NIPS, 2015.
  • [Uijlings et al., 2013] Uijlings, J. R., Van De Sande, K. E., Gevers, T., and Smeulders, A. W. Selective search for object recognition. International journal of computer vision, 104(2), 154–171.
  • [Wang et al., 2013] X.Wang, M.Yang, S.Zhu, and Y.Lin. Regionlets for generic object detection. In ICCV, 2013.
  • [Wu et al., 2020] Wu, X., Sahoo, D., & Hoi, S. C. (2020). Recent advances in deep learning for object detection. Neurocomputing, 396, 39-64.

参照外部リンク