ROI pooling(関心領域プーリング)

1. ROI Pooling とは [概要]

ROI Pooling (関心領域プーリング) とは,Faster R-CNN シリーズの研究で確立された,「アンカーあり2ステージ型の物体検出ネットワーク」において,2ステージ間で,候補領域特徴を集約して受け渡すために用られる領域プーリング層のことでである.Fast R-CNN の研究で提案され [Girshick, 2015],その後は物体領域の特徴を集約する際に.ROI Pooling を用いると,入力の領域提案バウンディンボックスがどのような大きさでも,同一の空間サイズの特徴マップへ集約できるので,後半ステージのネットワークが,統一された同じサイズの入力特徴マップを受け取れるメリットが生まれる.

最初に提案された2ステージ型の物体検出ネットワークは,Fast R-CNNや,その改善版の Faster R-CNN である.1ステージ目では,それぞれSelective Search,と領域提案ネットワーク(RPN)の処理により,縦横サイズが異なる関心領域(Region of Interest)のバウンディングボックスを,多数出力する(下記,図1の例,赤の黒柴と,青の石台).共に後半ステージにはFast R-CNN ネットワークを用いたいのだが,1ステージ目の領域提案の出力矩形サイズに関わらず,「同じ入力サイズの特徴マップ」が前半ステージから送られてくると楽であり,ネットワークの学習する畳み込みフィルタにも統一性が出せる.

ROI pooling (関心領域プーリング)
図1 ROI pooling (関心領域プーリング)

そこで,Fast R-CNNの研究 [Girshick, 2015] では,2ステージ目への入力特徴マップを一定のサイズへと統一する目的で,ROI pooling が考案された(図1).1ステージ目のCNNの処理が推定した各領域候補に対して,ROI Poolingを用いると,毎回同じ入力空間サイズの (例えば[3 × 3] × C 特徴マップ)へプーリングして特徴を空間方向でグリッド集約する.こうして,元の領域候補サイズの大小や縦横比率がバラバラで異なっていても,ROI poolingを行うと,同一の[ H × W ] 空間サイズである特徴マップを,2ステージ目の物体検出判定の入力に用いることができるようになった.

2. ROI Pooling の処理

Faster R-CNNの後半ステージ「Fast R-CNN」では,空間サイズが [224 × 224] 画素のRGB画像入力を,VGGNet-16層の全結合層手前まで順伝搬することで,ROI pooling 用の[H × W] × C チャンネルの特徴マップが手に入る.各BBoxは入力画像において (r,c)がBBoxの左上コーナー点で,(w,h)がBBoxの幅と高さとする.そして,[3 x 3] x C の領域内特徴マップを得るのがROI poolingの目的である.図1は 入力 [H x W] = [224 x 224]特徴マップ [h x w] x C = [7 x 7]x Cで,ROI pooling後の出力が [3 x 3] x Cの例である.(※ ちなみにVGGではC=128チャンネル).

2.1 処理手順(直感的にまず説明)

ROI Pooling の処理は,次のように単なるスケーリングと量子化による座標割り当てを行っているだけで,難しいことはない.入力画像[H,W]と特徴マップ[h, w]の比(H/h),(W/w)を使って領域提案をそれぞれ縮小し,グリッドをつくって,各サブ領域でプーリングするだけである.

まず,入力画像上のBBox によるROIの4パラメータ(r,c,w,h)を元に,特徴マップ上でROIに対応する領域を(デジタル画像なので)量子化して整数値として(r’,c’w’h)の領域を,出力の[3 x 3] へ分割する.そして,その [3 x 3]の各グリッドから 最大プーリングによりROI内の領域特徴を抽出する.

例えば,図1の元画像[224 x 224]の赤領域がスケーリングの結果 [4.2 x 6.1] になったら,それを量子化して,特徴マップ上に割り当てた[4 x 6] の範囲を,出力の[3 x 3]のグリッドにそれぞれ対応付けて分割しておき,[3 x 3] の最大プーリングを行えばROI poolingの処理は終了である.(※ 参照記事の例の[4 x 6]の例に合わせてあるので図解で見たい人はそちらを参照).

2.2 処理手順(もう少し詳しく,アルゴリズム的に説明)

図1の(1) ~ (3)に対応させて,もう少しROI poolingの手順を,あまり抽象度をあげすぎに,やや具体的に述べると,以下の通りになる:

  1. 入力画像をVGGnetに順伝搬し, [7 x 7] x C の特徴マップを取得する.また,ステージ1 (Selective SearchやRPN)で領域候補が検出されている.
  2. 領域提案を特徴マップ上の値にスケーリングする.(r’,c’,w’,h’) = (H/h, W/h, x/w, y/h)の各要素を(roundで)整数化し,プーリング用 [3 x 3]に対応する「整数グリッド位置」を [7 x 7] 上で確定させる.
  3. 例えば,領域[4 x 6]の各座標が,出力[3 x 3]の各領域にそれぞれ分配されている.よって,あとは,最大値プーリングを行い[3 x 3] x C サイズの,ROI内特徴マップを得て,ROI Poolingの処理は全て終了である.

この処理より,提案領域の中の特徴をのみをプーリングして,2ステージ目(Fast R-CNN)向けに用意できる.

2.3 ROI Pooling の課題

ROI Poolingでは,2.1節で見たような, H:h , W:wの割合で,縮小した領域範囲内の,ROIに対応したプーリング済み特徴が欲しい.よって「特徴マップグリッド上の各座標に量子化する(丸める)処理」により,ROI Poolingの対象BBoxである,(r’,c’,w’,h’)の4つの矩形パラメータを計算していた.

しかし,量子化している時点で「ズレの残っているなんとなくの特徴」までしか抽出できておらず,物体検出の粒度では良いものの,画素単位での出力が必要なタスクである「インスタンスセグメンテーション」や「(トップダウンな2ステージ型の)人物姿勢推定」などでは,ROI Poolingが抽出する領域提案に対応した特徴マップの特徴では,画素レベルでの特徴マップの位置合わせが足りなかった.

そこで,Faster R-CNN の著者らグループは,インスタンスセグメンテーション向けに手法の Mask R-CNN において,より正確に位置合わせして補間した特徴マップをつくりだす ROI Alignを提案することで,ROI Poolingを発展させる.

3. ROI Pooling のまとめ

ROI Poolingは,Fast R-CNNの研究において,提案されたR-CNN型の2ステージ物体検出むけに,1ステージで得た画像上の領域提案処理に対応する,(空間サイズが小さくなった)CNN特徴マップ上の特徴テンソルを抽出して集約する仕組みである.毎回同一サイズの特徴マップにROI Poolingで集約できるので,2ステージ目のFast R-CNNが,固定入力をもとにしたネットワークを組めるようになり助かる.

具体的には,入力画像のサイズ[H × W]と,バックボーンCNNの特徴マップ空間 [h × w] のサイズ比を素直に用いて,提案領域のROIに対応する領域(r’,c’,w’,h’) を計算し,その(r’,c’,w’,h’) 内部の特徴を,特徴マップからプーリングで取り出し集約するという処理である.ただし,比を使ってBBoxを求める際に,(r’,c’,w’,h’) を特徴マップのグリッドに対応した自然数に量子化するので,位置合わせ精度がまだ微妙でああり,ROI Align (Mask R-CNN) などが提案されていくことになる

関連記事

関連書籍

References

  • [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.

参照外部リンク

SNSでシェアやブックマークを行う