物体検出 (Object Detection)

1 Object Detection の概要

物体検出(object detection)とは,画像一枚を入力としてその画像上の物体インスタンスの,矩形に囲まれた関心領域(ROI)のバウンディングボックス(bounding box)を検出(detection)し,検出した各インスタンスの語義による物体クラスの識別も同時に行う問題である.

この記事では,現在主流の画像物体検出技術である「深層学習ベースの物体検出(3節)」を中心として述べたい.その前段階の時代の技術の「単一物体検出(2節)」についてもまとめておくことで,読者が深層学習ベースの物体検出と以前の手法との比較を行えるようにしていおきたい.

1.1 記事の構成

2節以降,以下の構成で物体検出について述べる:

  • 2節 古典的な,単一クラスの物体検出モデル
    • 2.1 CNN手法登場前の大まかな流れ.
    • 2.2 顔検出(Viola & Jones) と 歩行者検出(HOG + SVM)
    • 2.3 Deformable Part Models (DPMs)
  • 3節 深層学習ベースの物体検出
    • 3.1 2ステージ型の例:
      • Faster R-CNN
    • 3.2 1ステージ型の例:
      • Yolo
      • SSD

2. 古典的な,単一クラス検出器による物体検出

まず2.1節では,古典的手法から現在までの流れを簡単にだけ述べる.

2.1 CNN手法登場前の大まかな流れ

2.1.1 テンプレートマッチング

古典的なマシンビジョンでは,テンプレートマッチング(template matching)と呼ばれる剛体を対象とした物体検出方式が主流であった.まず検出対象物体に対してテンプレート画像を用意し,画像内の探索範囲内中でテンプレートと対象の相関マッチングを,各候補位置で行う「スライディングウィンドウ処理」をおこない,テンプレート画像と類似の高い対象のみを検出する方式である.これは 畳み込みを用いた画像フィルタリングと似たスライディングウィンドウをベースにした処理手順であるといえる.

テンプレートマッチング方式は「外観検査」のように,背景が単純な単色で,対象物体以外の背景領域に外乱やノイズが少ない条件に画像を絞れる設定では通用しやすい.しかし,一般的な風景画像では,人や物の周囲には背景も撮影されている.よって,検出したい対象の見え方の変化が大きく,テンプレートを複数用意したくらいでは物体検出が達成できない.特に「人/顔/猫」クラスなどの,見え方や姿勢が様々に変化する対象を,テンプレートマッチング技術だけでうまく検出することは困難であった.

2.1.2 単一物体検出

そんな中,機械学習の登場に伴い,単一物体検出モデルに基づく物体検出技術が最初に登場した.単一物体検出モデルでは意味的なクラスごとに固定サイズの矩形範囲の局所画像が「物体(クラス1) or 背景(クラス0)」のどちらなのかを,HOGなどの手作り特徴を入力とした2クラス識別器(SVM,Adaboostなど)を学習しておき,スライディングウィンドウの各位置でクラス識別を行う(例:顔検出.歩行者検出など.2.2節).

単一物体検出モデル(人検出器や顔検出器)は,ディープラーニングが主流になる以前から,動画監視や画像検索,デジタルカメラの顔検出などでよく使用されてきた.顔認証などで人や顔などの同定(Identification)を行う際には,ID認証処理を行いやすい関心領域(物体領域)を先に自動的に抽出しておきたいので,単一物体検出を前処理として実行することが多い.

2.1.3 大規模クラス物体検出モデル

一方,ディープラーニング登場以降の大規模クラス物体検出モデル(3節以降)は,VGGNetなどで当初行われていた大規模物体クラス識別を,物体検出と同時に済ませることを目的としている(例:Faster R-CNN,SSD, Yoloなど).深い表現を学習できることにより,物体1000クラスを単一のネットワークで識別できるようになった点が,個別にクラスごとに学習していた以前の物体検出との大きな違いである.3節では「2ステージ制(Faster R-CNNなど)」「1ステージ制(SSD, Yoloなど)」の2種類の戦略について紹介する.

2.2 顔検出器(Viola & Jones)と,歩行者検出器 (HOG + SVM)の登場

2.2.1 顔検出器:Viola & JonesのAdaboost + Haar-like特徴

2001年のViola & JonesのAdaboostを用いたHaar-like特徴選択による高速な顔検出器 [1] の登場により,当時のデジタルカメラでも実時間での物体検出が初めて可能になった.これをきっかけとして顔検出の産業応用ブームが始まり,それについで,顔以外のクラスを対象とした単一物体クラス検出の研究が盛んになった.

Boostingベースの物体検出器は,特徴選択により速度向上と精度向上を両立させやすい.よって,顔検出以外に,歩行者検出でもこの路線が有効活用され発展していった.

2.2.2 歩行者検出器:HOG + SVM 検出器

2005年には,マルチスケールの歩行者検出手法の当時の決定版として「HOG (Histograms of oriented gradients) 特徴ベクトルとSupport Vector Machinesを用いた歩行者検出 [2]」も登場した.

こうしてViola & Jones の顔検出[1]と,Dalal & Triggs の歩行者検出 [2] の2つの手法を皮切りに,それらを基盤として単一物体クラス検出手法が,活発に研究されていくこととなった.

2.3 Deformable Part Models (DPMs) の登場

Deformable Part Models (DPMs)による複数物体検出手法 [3]が,PASCAL VOC ベンチマーク2008の勝者として登場した.

2.3.1 パーツ検出器の弱教師あり学習

DPMsは「HOG特徴 + Latent SVM」を用いて,パーツの矩形ラベルなしのデータセットから各パーツの位置関係グラフを,パーツ検出器弱教師あり学習により学習する.物体全体の矩形は教師情報として与えるが,パーツの矩形は教師として与えずにLatent SVMの潜在変数化されている.よって,Latent SVMの学習中にその潜在変数であるパーツ位置とパーツフィルタが自動的に決まる.

当時の物体認識チャレンジの主戦場であったPASCAL VOC Challengeは,それまで検出器の主な対象であった,歩行者や顔「以外の」,様々な物体クラスの検出モデル学習用のラベルを新たに提供し始め,20クラス程度の物体クラスが検出対象となった.領域矩形のアクペスト比が固定で済む「歩行者(全身)」や「顔」などの物体クラスと違い,たとえば新登場した「自転車」クラスは「見え方の多様性が大きい」クラスである.よって,当時の「縦横のアスペクトが固定でしか学習できない」物体検出技術 (Haar-like特徴+Boostingや,HOG+SVM) では,自転車クラスの見え方やアスペクト比は多様すぎるゆえ,精度の高い検出器を学習できなかった.

そこでDPMsでは,パーツ検出の概念をLatent SVMと共に導入した.物体クラスのパーツ位置を,Latent SVM の潜在変数とし,その$N$個のパーツ位置の潜在変数$\bm{z_i}$も,検出器の学習中に同時に探索する.全体検出器 (root filter) のSVMを学習するのに加えて,自動探索が終わった$N$個のパーツ位置の領域サンプルから,各パーツの検出器$N$個も学習し,Latent SVMのグラフィカルモデルへ,それらのパーツ配置(Root Filter矩形に対する相対的位置・サイズ)も線形回帰させておく.テスト時には全体と各パーツの両方のフィルタ応答をもとに,グラフィカルモデルの推論を通じて全パーツの最適配置を検出結果として推定する.

こうして「自転車」のような「パーツ配置に多様性があるクラス」でも,パーツの変形具合を学習できるモデルとなり,DPMsでは以前よりもパーツ位置の変化に頑健な物体検出器の学習を,パーツROIのアノテーション無しで行えるようになった.

2.3.2 視点Mixureの導入

パーツ位置の潜在変数に加えてDPMでは,視点(view)別のモデルを複数学習しておき,それらの混合モデルとして1モデル化する視点Mixtureも提案された.テスト時には,Root Filterの応答が最も強い視点のLatent SVMモデルを用いて物体検出を行う.

旧来の「歩行者」検出器では,視点が変わっても縦横比が64 x 128で揃えやすかったが,PASCAL VOCで新たに物体検出器を学習する必要が出た「自転車」クラスや「犬」クラスなど,正面・横・その他視点で,物体領域矩形のアスペクト比が大きく異なり,見え方も視点ごとに異なってくるクラス群を検出できるように視点mixtureモデル化が考案された.

2.3.3 DPMsの課題

以上のように,DPMはPascalデータセットのような「写り方の視点・パーツ配置が多様な物体」も,1モデルとして一括学習できるようになり,当時としては一躍,最高峰の物体検出技術として躍り出ることになった.

しかし,そのDPMをもってしても,畳み込みニューラルネットワークが実現したような「高速な大規模クラス検出モデル」は実現できていなかった.パーツモデルと視点Mixtureを用いても「2次元平面的なパーツの移動」と「物体全体の視点による見えの変化」までしかモデリングできない.したがって「3次元的な見えの変化が多い物体クラス」については,まだ十分な性能の検出器を学習できなかった.Rootフィルタもパーツフィルタも固定サイズであるので,「パーツの平行移動だけで表現できない対象の見えの変化」はモデリングできていない.また,全パーツ写っていないとグラフが検出できないので,「対象物体の半分しか写っていない場合」など,パーツが全部写っていない部分遮蔽画像にも対応できなかった.

それに対して,Faster R-CNN 以降の深層学習による物体検出器(3節以降)では,深層学習やCNNのパワーのおかげでこれらの弱点を克服することができ,多様な物体クラスの検出や,きびしい遮蔽への対応が可能となる.

※ ちなみに人物姿勢推定においては,DPMsの弱点を克服するような,Flexible Mixture-of-Parts などのDPM発展手法が,Deep Learning流行前にいくつか登場した(以下の記事を参照):

3. 深層学習ベースの object detection

物体検出では,事前学習済みのVGGNetなどをバックボーンとして特徴抽出に用いる物体検出モデルとして,以下の2つの構成が主流となった:

  • 2ステージ型 (3.1節, Faster R-CNNなど):
    • 領域提案ネットワークと,大規模クラス識別ネットワークの2段階に処理を分けることで,「多クラス識別+バウンディングボックス修正量回帰」を行い,複数クラスの物体を検出する.
    • Faster R-CNNなどでは,PASCAL VOC2012(20クラス)やCOCOデータセット(80クラス)の検出器を学習する.
  • 1ステージ型 (3.2節, Yolo, SSDなど):
    • 入力画像全体に対してCNNバックボーンで計算した特徴マップから,(領域候補で絞ることは行わず)事前に入力配置されたアンカーボックス群に対して,クラス識別およびバウンディングボックス回帰を,1つのネットワークで直接行う.
    • Yolo v2の頃以降の1ステージ型検出器では,ImageNetのクラス数相当の1000クラス以上の検出を行えるようになる.

以降は,この2種類の手法を順に紹介する.

3.1 「2ステージ型」の例: Faster R-CNN

Faster R-CNN による Object Detection
図 Faster R-CNN

Faster R-CNN(Faster Region CNN) [4]の提案により,深層学習ベースの物体検出手法として最初に確立された戦略が,「2ステージ型のCNN物体検出手法」である.処理が前後半の2ステージに分かれているので,2ステージ型と呼ぶ.

Faster R-CNNの前半ステージでは物体領域候補をまず検出しておき,後半ステージでは,その各候補領域において「多クラス識別」と「推定したクラスに従った矩形領域の修正」の推定を両方行う.

Faster R-CNN の2つのステージでは:

  • 前半ステージ領域提案ネットワーク (RPN: Region Proposal Network)を用いて,物体が写っている物体の領域提案 (Region Proposal)をスライディングウィンドウ + アンカーボックス処理で検出する.検出された領域提案群は,同じ物体インタンス周辺に30~100個ほどが近い位置に多数検出されているので(Viola&Jones [1] や HOG+SVM [2]などの頃と同様に)Non-maximal Suppression (NMS) 処理(= クラスタリング)を行う.これにより,物体領域ごとに1つの領域候補だけが出力される.
  • 後半ステージ:RPNで計算済みの特徴マップから,各領域提案内のアンカー部分の画像特徴のみをROI pooling を用いて縦横サイズが正規化された形で集約する.そのROIプーリングされた特徴マップを用いて,物体クラス識別とアンカーに対する修正量回帰の2つの予測を行うことで,最終的なクラス識別済みの検出結果バウンディングボックス群を得ることができる.

(※ RPN/Faster R-CNNは,出力層以外は Fully Convolutional Network なので,入力画像サイズが可変で済む).

2節の単体クラス識別器の「2クラス識別」学習と違い,この後半ステージのネットワークには全クラスの確率が一緒に学習されている点がポイントである.アンカー領域内の画像特徴に対して「複数クラスの同時発生具合」を後半ステージで学習する.したがって,複数クラス間や複数インスタンス間が遮蔽している様子も検出できやすくなる.例えばバイクの上に乗っている2人がお互い重なって写っている場合でも,(そういう画像から重なり時の特徴マップを沢山学習しておけば)2人ともうまく検出しやすいモデルを学習できる.

3.2 「1ステージ型」の物体検出器

Faster R-CNNによる2ステージモデルの手法が確立した時期に,並行して登場してきたのが,YoloやSSDなどの1ステージ型の検出器 (one stage detector)である.

1ステージ検出器は,あらかじめ定めた複数スケールでグリッド上に配置した各アンカーボックスに対して,単一ネットワークを用いて,入力画像を畳込んだ画像全体の特徴量から,アンカーに対するオフセットの回帰とそのアンカーボックスのクラス識別を直接行う.つまり,2ステージ型のように,一旦前半のネットワークで物体かどうかの2クラス識別を学習するという「Proposal検出処理」によるクッションは置かずに,$N$クラスの違いと検出矩形を,最初から最後までのネットワーク全体を用いて,バックボーンのネットワークに直接学習させる.

※ 単一クラス物体検出や2ステージ型のProposal Networkで採用されてきた「候補領域のサブサンプリング」の概念がこの1ステージ型には存在しないのもあり,(私も含めて)古い手法についても詳しい世代の人からすると,この「スタイルの違い」に初めは混乱するかもしれない.

3.2.1 YOLO (You Only Look at Once)

Yolo (You Only Look at Once) [6]は,1ステージ型の代表的な大規模物体検出手法である.画像全体を$W \times H$個のセルから構成されるグリッドに分割してとらえる(例:yolo v2では画像全体を$13 \times 13$のセルに区切る).グリッド上の各セルおいて,それぞれ [クラス識別/バウンディングボックス回帰/物体度]の3つのラベルをマルチタスク学習する.テスト時にはクラス識別結果と物体度を掛け合わせたスコアを検出結果出力のスコアとして用い,それらの検出結果をNMSすることで最終的な検出結果を得る.

Yoloの研究 にはversion 3まで存在する(※2019年現在).段階的に他手法のいいところを取り入れて,SSDに対して最初は遅かった速度の改善などがなされつつ超多クラス(Yolo v2で9000クラス検出)対応しながら高性能にもなっていった.Yolo v2はFaster-RCNNで提案されたアンカーを導入し,この時点で実質的にRPNとYolo v2がほぼ等価になったとも捉えることができる.

※ 2020年 6月追記:Yoloの作者 Joseph Redomonが,2020年2月に,Yoloなどの画像検出技術の監視社会助長性の高さを危惧し,Computer Visionの研究者からの引退を宣言したことが話題となった (参考記事).しかし,そんな作者の願いも虚しく,台湾の他ラボが継承したYolo v4が,さっそくこの春に登場してしてはいる.

3.2.2 SSD(Single Shot multibox Detector)

SSD(Single Shot Multibox Detector) [5]は,yoloと少し異なる設計思想として同時期に提案された1ステージ型の代表手法である.

SSDの前半の「特徴量抽出ネットワーク」では,VGGやInceptionなどの画像全体を畳み込む特徴抽出部分を用いて特徴量を入力画像全体から抽出しておき,特徴マップも元画像と同じサイズを保ちVGG終盤の全結合層もFCN形式で畳み込み層に変換している(具体的にはVGG16のConv5_3および全結合からConvに変えたConv6 Conv7まで用いる).

SSDの後半の各「検出ネットワーク」では,前半のネットワークの各中間層から,対応するスケールごとにそのスケールサイズに沿ったアンカーサイズを用いて物体を検出する設計になっている.従って,前半の特徴量抽出ネットワークで画像を畳みこみ特徴マップのセルサイズを減らしていきながら,その各層の結果から解像度ごとのブランチを作り,スケールごとに別々のラベル(クラスとバウンディングボックスのオフセット)および各セルのクラス確率を,Extra feature layersと呼ばれる畳み込み層にスケールごとに個別に学習させる.

最初Conv6層では, $38×38$のセルに置いて,アスペクト比が異なる6個アンカーボックスに対して(クラス確率,オフセット)のペアの予測をそれぞれ行う.以降,特徴マップを畳み込んで小さくしていくにつれ,元画像では(それまで畳み込んだReceptive fieldが)見る範囲が大きくなるので,各畳み込み層が終わった時点で出力するボックス数がそれぞれ以下のように設定されている:

  • Conv6: (38×38) ×6 = 5776 ボックス (6アンカーボックス/セル)
  • Conv7: (19×19) ×6 = 2166 ボックス (6アンカーボックス/セル)
  • Conv8_2: (10×10)×6 = 600 ボックス(6アンカーボックス/セル)
  • Conv9_2: (5×5)×6 = 150 ボックス (6アンカーボックス/セル)
  • Conv10_2: (3×3)×4 = 36 (4アンカーボックス/セル)
  • Conv11_2: (1×1)×4 = 4 (4アンカーボックス/セル)

以上を合計して5776 + 2166 + 600 + 150 + 36 +4 = 計8732個のアンカーボックスがスケールごとに配置されており,SSD論文ではこれらのボックス群をdefault boxと呼んでいる.このように,特徴マップ上の途中において,スケールごとに個別に予測を行うことから,8732個もの大量のdefault boxを使用するので,single shot「multibox」detectorと名付けられている.

SSDは,yolo v1より高速に動く一方,初期の畳み込み特徴を後半の層まで伝える(スキップ接続のようなな)仕組みが設けられていない単純なネットワーク構成である.そのせいで,各出力ブランチには細部の情報が足りない分,小さな物体の検出には弱い.この弱点に対抗する改善手法として,その後RetinaNetやRefineDetが登場する (これらの発展手法は.本記事では取り上げない).

3.3.3 省モデル化・高速化

SSDやYoloの提案と同時期に進んだ「Deep Neural Networkモデルの省モデル化および高速化」の発展の恩恵を,1ステージ制の検出器は特に受けている.パソコン上では無い組み込み環境の計算資源やメモリの少ない環境でも,ある程度の高速性と制度を保った状態で使用できるようになっている.エッジコンピューティング目的で物体検出モデルを使用している方は,MobileNet v2 [7]の論文で提案された「軽量型のSSD (SSD Lite)」が標準装備されていことが多いので触ったことがある方も多いと思う (※この段落は 2019年に記述した内容).

4. まとめ

この記事では,画像からの物体検出手法として,古典的な単一クラス検出器(2節)と,深層学習時代の物体検出器(3節)についてまとめた.深層学習ベースの物体検出手法では,「アンカー」と呼ばれる「検出結果領域のPrior」に対する矩形修正量を,特徴マップ上のアンカー内の局所特徴に対して学習しておくことが基本である.

この記事の3節では深層学習化してからの物体検出の初期手法(2016年ごろまで)の紹介までにとどめている.その後も,以下に示すような代表的な手法や工夫が研究され,物体検出の発展は続いている:

  • Mask R-CNN [8]:検出と同時に物体マスクも同時学習 (関連記事:インスタンスセグメンテーション)
  • Feature Pyramid Networks [9]:特徴量マップの効率的なピラミッド化により,マルチスケール対応性が向上.(関連記事:CNNの特徴集約:Feature Pyramid Networks(FPN)など )
  • CornerNet [10]:アンカーをやめて,Keypointの埋め込みベクトルをプーリングする,物体検出の新路線.あらたな主流アプローチの1つになりつつある.

References

  • [1] P. Viola, M. Jones. Rapid object detection using a boosted cascade of simple features, In CVPR 2001.
  • [2] N. Dalal, B. Triggs. Histograms of oriented gradients for human detection, In CVPR, 2005.
  • [3] P. Felzenszwalb, D. McAllester, and D. Ramanan. A discriminatively trained, multiscale, deformable part model. In CVPR, 2008.
  • [4] S. Ren, K. He, R. Girshick and J. Sun. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, In NeruIPS 2015.
  • [5] 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.
  • [6] J. Redmon and A. Farhadi. YOLO9000: Better, Faster, Stronger. In CVPR, 2016.
  • [7] M. Sandler, A. Howard, M. Zhu, A. Zhmoginov, and L.-C. Chen. Mobilenetv2: Inverted residuals and linear bottle- necks. In CVPR, 2018.
  • [8] K. He, G. Gkioxari, P. Dollar, and R. Girshick, “Mask r-cnn. In ICCV, 2017.
  • [9] T. Lin, P. Dollár, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. In CVPR, 2017.
  • [10] H. Law and J. Deng. Cornernet: Detecting objects as paired keypoints. In ECCV, 2018.
  • [11] 画像認識 (機械学習プロフェッショナルシリーズ),原田達也,講談社, 2017.

外部参照リンク

関連記事