ROIプーリング (G検定)

ROIプーリング

1. 定義と概要

ROIプーリング(RoI Pooling)とは、Fast R-CNNで提案された処理です。関心領域(Region of Interest、ROI)とは、物体候補領域を指す略語です。

特徴マップ上で、大きさが異なる関心領域をH×W個(例えば7×7)の格子(ビン)に分割します。各ビン内の値の最大値を取り出すマックスプーリング(格子に区切った領域ごとに最大値だけを取り出して情報を圧縮する処理)を行うことで、候補領域の大きさによらず常に同じ大きさの固定サイズの特徴に変換します。

例えば100×150ピクセルの候補領域と50×80ピクセルの候補領域は、いずれも同じ7×7の固定サイズ特徴に変換されます。入り口の大きさがばらばらでも、出口の大きさは常にそろうという処理にあたります。

物体検出モデルのR-CNN(候補領域ごとに画像を切り出してCNNを個別に適用する初期の物体検出モデル)は、候補領域の数だけCNNの順伝播を繰り返す必要があり、1枚の画像に約2,000個出る候補領域では処理が低速でした。Fast R-CNNは、画像全体に1回だけCNNを適用して特徴マップを作成した後、その特徴マップ上で各候補領域に対応する部分だけを切り出す方式に転換したことで高速化を実現しました。

ただし後段の全結合層(すべてのユニットが結合し、クラス分類や矩形の位置調整を行う層)へは固定サイズの入力を渡す必要がある一方、候補領域の大きさはさまざまに異なります。そこでROIプーリングによって、切り出した特徴を固定サイズへそろえる処理が不可欠になりました。

2. 試験対策ポイント

G検定の重要な論点は、ROIプーリングの目的が、大きさの異なる候補領域の特徴マップを、全結合層に渡せる同じ次元数の固定サイズ特徴にそろえることにある点です。

ROIプーリングの導入によって、候補領域ごとにCNNを繰り返し実行していたR-CNNの方式から、画像全体で特徴マップを1回だけ計算し候補領域ごとに特徴マップの一部を切り出す方式へ転換されました。この転換はFast R-CNNの高速化に直結する変更点です。

ROIプーリングの処理では、候補領域の座標を整数値に丸める量子化(小数を含む座標などの値を整数に丸めること)が2段階で発生します。1段階目は、候補領域を囲む最小の四角形である外接矩形の座標を整数へ丸める段階です。2段階目は、格子に分割した各ビンの境界を整数へ丸める段階です。

この丸めが積み重なることで特徴マップ上でサブピクセル単位のずれが生じ、元の画像上ではCNNのストライド(畳み込みやプーリングでフィルタを動かす間隔)に応じたずれとして現れます。矩形検出への影響はわずかでも、画素単位の精度が求められる用途では見過ごせない弱点になります。

この位置ずれという弱点は、後継のMask R-CNN(Faster R-CNNを拡張し、マスク予測の分岐を加えて画素単位の領域抽出まで行うモデル)で解消されます。Mask R-CNNで導入されたRoIAlign(候補領域を固定サイズへ変換する際、座標を丸めずバイリニア補間で値を求め位置ずれを抑える処理)は、座標を整数に丸めない点がROIプーリングとの違いです。

バイリニア補間(周囲の値から間の位置の値を滑らかに計算する方法)を使う点が特徴で、補間処理の計算内容そのものはMask R-CNNの学習事項です。ROIプーリング、Fast R-CNN、RoIAlign、Mask R-CNNは関連用語の束として押さえておきたいところです。

3. 関連概念との比較・相違点

通常のプーリング層との最大の違いは目的にあります。通常のプーリング層は特徴マップ全体を等間隔に区切って情報量を圧縮する目的で使われるのに対し、ROIプーリングは候補領域ごとに大きさが異なる範囲を固定サイズへそろえる目的で使われます。値の取り方が最大値である点は共通していますが、区切る対象が画像全体か候補領域かという点で異なります。

「RoIAlign」との最大の違いは、位置ずれの有無にあります。ROIプーリングは候補領域の座標を整数に丸める量子化を行うため位置ずれが生じるのに対し、「RoIAlign」は座標を丸めずバイリニア補間で値を求めるため位置ずれが抑えられます。

補間の計算内容そのものはMask R-CNNの学習事項ですが、座標を丸めるか丸めないかという一点がROIプーリングと「RoIAlign」を分ける軸になります。3つの処理の対応関係を、区切る対象と値の求め方で整理すると次のようになります。

処理 区切る対象 目的 値の求め方
通常のプーリング層 特徴マップ全体を等間隔に区切る 情報量を圧縮する 区切った領域ごとの最大値
ROIプーリング 大きさが異なる候補領域 固定サイズへそろえる 座標を整数に丸めたうえでビンごとの最大値
「RoIAlign」 大きさが異なる候補領域 固定サイズへそろえる 座標を丸めずバイリニア補間で計算

用途面では、矩形検出で足りる場面ではROIプーリングのままで十分ですが、画素単位の精度が必要な場面では「RoIAlign」を使うモデルへの置き換えが検討されます。

4. ビジネス・実務での活用シナリオ

製造業の外観検査では、検査画像内に複数出る欠陥候補領域を1回の特徴マップ計算とROIプーリングだけで一括処理します。候補領域ごとにCNNを個別に回すR-CNN方式に比べて検査にかかる時間を大幅に短縮でき、検査ラインの稼働速度を落とさずに済みます。

小売・在庫管理の分野では、陳列棚の商品を検出する物体検出モデルにROIプーリングを組み込む事例があります。店舗カメラの映像に数百点規模で写り込む商品候補を実用的な処理時間で検出できるため、欠品や品出し状況の把握を短時間で済ませられます。

医療画像診断の研究開発では、病変候補領域の検出速度は確保できる一方、矩形検出止まりでは画素単位の精度が不足する用途があります。このような場面では、「RoIAlign」を使うMask R-CNN系モデルへの置き換えが検討されます。

5. 要点まとめ

  • ROIプーリングは、Fast R-CNNで大きさが異なる候補領域を格子に分割し最大値を取ることで固定サイズの特徴に変換する処理で、全結合層への入力をそろえる役割を持ちます。
  • 候補領域ごとにCNNを繰り返さず特徴マップを1回だけ計算する方式への転換により、R-CNNからFast R-CNNへの高速化に直結しました。
  • 座標を整数に丸める量子化が2段階で発生するため位置ずれが生じる弱点があり、Mask R-CNNの「RoIAlign」によるバイリニア補間で解消されます。

6. 確認問題

問1ROIプーリングは、大きさが異なる候補領域の特徴を、格子状に分割した各マスの最大値を取ることで固定サイズの特徴に変換する処理である。

解答・解説をみる

○ 正しい

ROIプーリングはH×W個のビンに分割し、各ビン内の最大値を取り出すマックスプーリングの一種です。候補領域の大きさによらず、常に同じサイズの特徴を得られます。

問2ROIプーリングにおける座標の丸め(量子化)は、候補領域の外接矩形の座標を丸める処理のみで発生し、格子に分割した後の各ビンの境界では発生しない。

解答・解説をみる

× 誤り

正しくは、外接矩形の座標を丸める処理と、格子に分割した各ビンの境界を丸める処理の2段階で量子化が発生します。片方だけでなく両方の丸めが積み重なり、位置ずれの原因になります。

問3ROIプーリングの導入により、候補領域ごとにCNNを個別に適用していたR-CNNの方式から、画像全体の特徴マップを1回だけ計算する方式へ転換され、Fast R-CNNの高速化につながった。

解答・解説をみる

○ 正しい

R-CNNは候補領域の数だけCNNの順伝播を繰り返す必要がありましたが、Fast R-CNNは特徴マップを1回だけ計算し、ROIプーリングで各候補領域に対応する部分を切り出すことで高速化しました。