アンカーボックス (Anchor Box) [物体検出]

記事を共有する:

1. アンカーボックス (Anchor box)とは [概要]

アンカーボックス (Anchor box)とは,アンカーベースの物体検出ネットワーク手法において,CNN特徴マップ上に配置した各アンカー点周辺に,予測の元矩形として複数サイズ配置しておく,バウンディングボックス予測の事前分布候補群である.

アンカーボックスベースの物体検出 (Faster R-CNN, YOLO, SSDなど)では,各アンカー周辺に配置したK個のアンカーボックス領域から,そのアンカー点(空間グリッド内の1セル)の特徴量ベクトルを入力として,「物体クラス識別」+「アンカーボックスに対するズレ量(オフセット)の回帰」の2つの予測を行う.アンカーボックスは「これくらいの大きさ・縦横比のボックスで,物体が検出されるはず」と,事前に定めておいた事前分布であるゆえ,少数の候補群からだけの高速な処理が実現できる.

古典的な単一クラス物体検出DPM (Deformable Part Models,変形可能パーツモデル群)の時代では,スライディングウィンドウ方式で,密に各ピクセル位置において,固定サイズ窓内の画像特徴からクラス識別を行っていた.CNN物体検出では,R-CNN(Region-CNN)などで提案された「クラス識別と回帰位置特定(Localization)を,マルチタスク学習」という基本戦略が定番になった.

CNN物体検出では,「CNNの特徴マップ出力(小さめ)」と「入力画像サイズ(大きめ)」との空間対応付けを行う際に, 疎な候補である「アンカーボックス群からの(物体クラスごとの)ズレの回帰」という作戦をとる.つまり,単一クラス物体検出DPM(変形可能パーツモデル群)の頃の「密な固定サイズ窓によるスライディングウィンドウ処理」は行わなくなり,CNN物体検出では,疎な各アンカー位置において,K個の各アンカーボックスからの[識別 + 回帰]を行う疎な候補群だけからの2ヘッドによる予測という方針に変わった.

1.1 アンカーボックスからの予測手順

アンカーボックス(Anchor Box)
図1. アンカーボックス (Anchor Box)

図1は,各セルに対して配置された (3スケール x 3アスペクト)からなる 計9個のアンカーボックスを基準にして,各アンカーボックス内の特徴を集約した特徴ベクトルをもとに,クラス識別と回帰を行う様子を図示したものである.(アンカーボックス内の特徴集約方法については, Faster R-CNNの前半ステージの領域提案ネットワーク(3.1節) が,実例として参考になる).

VGGNetなどのCNNバックボーンで計算した終盤層の,特徴マップ [S x S] サイズの各セルの中心には,基準点としてアンカー(Anchor)が配置されている (図1-a).そして,アンカー周辺には,それぞれK種類のアンカーボックスが配置されており,全部で [S x S] x K 個のアンカーボックスが用意されている (図1-b) .次の1.2節で述べるように,K個のアンカーボックスのサイズS・アスペクト比は,初期の手法(Faster R-CNNの領域提案ネットワークや,SSD) では手動で決められていたが,データドリブンに物体検出データセットの画像群から決めることも多くなっていった.

最後に,各アンカー周辺に準備された [S x S] x K 個のアンカーボックスに対して,個別に回帰オフセット量が出力されてバウンディングボックス矩形が「アンカボックス+オフセットでの修正」の結果として推定される (図1-c).YOLO v2だと,各セルには,クラス確率と信頼度も得られており,クラス予測もされたバウンディングボックス矩形のみが残るので,それらをNMS(非最大値抑制)することで,最終的な(クラス識別済み)検出結果が得られる.

※ 関連書籍にも挙げている「Pythonで学ぶ画像認識 (機械学習実践シリーズ)」の5章では,複数の種類のアンカーの配置が,綺麗な図解入りで実装コードとともに示されている.とてもわかりやすいので,図1までに私は留めて,詳しい図はこの本に任せたい.

1.2 アンカーボックス群の準備方法

1.2.1 初期は手動

アンカーボックスのアイデアが提案された Faster R-CNN [Ren et al., 2015] の領域提案ネットワーク(RPN)では,図1-b のように,設計者(論文著者)が決めた,「3スケール × 3アスペクト比 (1:1, 1:2, 2:1) = 9」の,k = 9 個ずつのアンカーボックスを,各アンカー(各セル)に配置した.

また,YOLO v1 でも,「セルのボックスサイズ」をそのままアンカーボックスとして使用した.また,YOLO直後に登場したSSDでは,FPN(Feature Pyramid Network)を導入し,マルチスケール検出処理を行うようになったが,アンカーボックス(SSDの呼び方は1ステージ型向けの「デフォルトボックス」)の,アスペクト比率やサイズ (1, 2, 3, 1/2, 1/3)は,著者が手動で決めていた.

1.2.2 その後はデータセットドリブン

一方,YOLO v2では,データセットの正解バウンディングボックスのサイズ分布から,アンカーボックスのサイズを,データドリブンに自動決定することが提案された.具体的には,Pascal VOCCOCOの正解バウンディングボックス群から,K-meansクラスタリングを K = 5で 行い,アンカーボックスのサイズを決定する .

※ YOLO v2 論文 [Redmon and Farhadi, 2016] のFigure 2が,ボックスサイズの可視化例で参考になる.

これ以降,アンカーベース手法では,データの分布に沿ったアンカーボックス群を学習時に用意することも行われるようになった.ただ,手作業で決める手法も,その後も多い.

YOLO v2 (2016)の時期以降の物体検出では,CenterNetなど「アンカー・フリー手法」の研究も多くなってきて,主流の1つを成すようになる.それらの手法では,アンカーボックスを使用しない.一方で,インスタンスセグメンテーションなどでR-CNN手法の発展は継続しており,DETRでも(本来アンカーフリーなのに)アンカーをわざわざ配置する手法も研究されているなど「アンカーフリーとアンカーボックスのどちらが良いか」は,定まっていない.よって,2極的思考に陥って,どちらかだけを信奉することのないように注意してほしい.

2.まとめ

ディープラーニング時代の物体検出における,アンカーボックスの役割と,変遷について紹介した.

特徴マップ上の,各セル位置(=アンカー点)において,K個の異なるアンカーボックスを用いることで,ボックスサイズの事前分布をもとにして,効率的な物体検出が実施できる.

関連書籍

References

  • [Liu et al. 2016] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, Cheng-Yang Fu, and A. C. Berg. Ssd: Single shot multibox detector. In ECCV, 2016.
  • [Redmon et al., 2016] Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. You only look once: Unified, real-time object detection. In CVPR, 2016.
  • [Redmon and Farhadi, 2016] J. Redmon and A. Farhadi. YOLO9000: Better, Faster, Stronger. In CVPR, 2017.
  • [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.

参照外部リンク