物体検出(Object Detection) [ディープラーニングの手法中心に]

1. 物体検出(Object Detection) とは [概要]

物体検出(Object Detection)とは,画像の入力に対して,画像中に映っている各物体領域のバウンディングボックスを検出し,その物体のクラス識別も行う,画像認識の重要な問題である.また,物体中心(Object-centric)な処理を行うための前処理(矩形領域抽出)でもあるので,その意味でも,非常に重要かつ本質的な問題の1つである.

この記事では,近年主流であるCNNベースの複数クラス物体検出(3節)の初期手法を中心に述べたい.具体的には,アンカーボックスベースの2ステージ型初期手法(Faster R-CNN)と1ステージ型初期手法(YOLO, SSD)が,にフォーカスをあてるので,それらの基礎手法をしっかり身に付けて頂きたい.

物体検出(Object Detection)
図1. 物体検出(Object Detection)

図1のように,入力画像において,各物体インスタンスの(1) 関心領域(ROI)を矩形で囲ったバウンディングボックス検出(detect)し,その (2) 物体ROIの意味的な物体クラスの識別も行うのが物体検出である.

その主題に入る前に,深層学習以前の物体検出(2節)についても,駆け足でまとめておく.テンプレートマッチングから始まり,機械学習化に初めて成功した単一クラス物体検出(顔検出や歩行者検出 2.2節)や,パーツベースの複数クラス検出(2.3節,DPM)についてまとめる.この従来手法の紹介により,読者が深層学習ベースの物体検出手法との比較を行えたり,昔の技術からの着想も得やすくしておきたい.

1.2. 記事の構成

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

3節の深層学習ベースの手法の章では,「2ステージ型モデル(3.1節)」と「1ステージ型モデル(3.2節)」の2カテゴリに分けて,初期の各提案手法を紹介する.

逆に,初期手法のその後応用である各手法 (FPNや Focal Loss, CornerNet・CenterNet)などは,この記事では対象外とする(「その後の発展(4.1節)」で述べる).

2. 深層学習登場までの物体検出

まず2.1節では,古典的手法から現在までの流れを,以下の2段階にわけて,深層学習以前の「物体検出」手法の変遷をおさえる:

  1. 単一クラス物体検出の登場:顔検出と歩行者検出(2.1節)
  2. Pascal VOCで複数クラスへチャレンジ(2.2節)

その上で,CNNベースの手法との違いを2.3節で先に確認しておきたい.

2.1 単一物体クラス検出の登場

機械学習を用いたパターン認識技術の登場に伴い,単一物体クラス検出モデルが登場した.昨今の物体検出ネットワークまで,多用なクラスを高精度に検出できたりはしないものの,限定的なクラスや姿勢・視点(特に「正面から見た外見」「正面顔」など,画像上で3D的に変化しづらいパーツ)に対しては,顔,歩行者などの単一クラスについて,よい検出器を初めて学習できるようになった.

単一物体クラス検出モデルでは,意味的な1クラスのみを検出対象とする.画像上にアノテーションした,固定サイズのバウンディンボックス(BBox)領域内の局所画像が「物体(クラス1) or 背景(クラス0)」のどちらなのかについて,HOGなどの手作り特徴を入力とした2クラス識別器(SVM,AdaBoostなど)を学習する.そして,テスト時にはスライディングウィンドウの各位置でクラス識別を行い,たくさんの候補バウンディングボックスを出力する.

最後に,複数残った候補バウンディングボックス群に対して,非極大値抑制(Non-Maximum Suppression, NMS)を行うことで,尤もらしい検出結果のみが残る

2.1.1 「同定・検索」の前処理としての役割.

単一物体クラス検出モデル(人検出器や顔検出器)は,ディープラーニングが手段の主流になる以前から,動画監視や画像検索,デジタルカメラの顔検出などにおいて,産業応用で使用されてきた.

顔認証などで人や顔などの同定(Identification)を行う際には,ID認証処理を行いやすい関心領域(ROI)バウンディングボックスを,先に物体検出モデルで自動抽出しておき,その領域の画像だけで判定した.よって,同定エンジンの前処理として,単一クラス物体検出を使用するという処理手順にすることが多い.よって,人検出や顔検出のモデルは,それらの同定処理・物体インスタンスの検索処理の前処理として,使用されるようにもなっていった.

2.2 複数クラス物体検出(Multi-class Object Detection):DPMの登場

Deformable Part Models (version 2)
図2. Deformable Part Models (version 2)

そんな中,自転車クラスなどの,20物体クラスを対象とした物体認識ベンチマーク 「PASCAL VOC 2008」の勝者として,アスペクト比やパーツ移動による見え方の変化にも対応できる,Deformable Part Models(DPM, 変形可能パーツモデル)を用いた物体検出手法 が登場した [Felzenszwalb et al., 2008] (図2).

DPMは「自転車」のような「パーツ配置に多様性があるクラス」でも,パーツの変形具合を学習できる.また,DPMは以前よりもパーツ位置の変化に頑健な物体検出器の学習を,パーツのROIのアノテーションは行わず,Latent SVMによる弱教師あり学習によって,自動で学習できるようになった.

DPMの登場は,物体検出モデルを学習できるクラスが一気に増えることになり,パラダイムシフトを起こした.しかし,DPMも,部分遮蔽の対応には限界があり,密に複数物体が映っている状況は解けなかった.また,計算時間も早いとは言えず,動画でのリアルタイム計算など,実用には難があるモデルであった.

3. CNNを用いた複数クラス物体検出

ディープラーニング登場以降のCNNを用いた複数クラス物体検出モデルは,物体検出の,物体クラス識別(classification)と位置特定(localization)の2タスクを,マルチタスク学習して同時に行う世代の物体検出手法である.物体クラス数をCとすると「C = 20クラス(Pascal VOC 2007) ~ 80クラス(MS COCO)」の識別と,そのバウンディングボックスの位置特定を,1つの物体検出CNN複数クラスいっぺんに学習する.深いネットワークを用いて巨大なモデルに学習することで,数十~数千物体クラスを1つのネットワークだけで検出できるようになった.

従来の単一クラス検出(2節)の時代では,1物体クラスごとに検出モデルを1つずつ用意していた.それが点が,現代と大きく異なる点である.また,CNNの表現力の高さのおかげで,「見えの変化」や「視点(view)・姿勢(pose/articulation)の変化」へもうまく対応できるようになった.位置特定(localization)を担当する回帰ヘッドの使用により,「物体内・物体間の部分遮蔽」にも強くなった.

この3節では「初期のCNN物体検出モデル」の話まで限定としたい.物体検出研究でよく使用されるCOCOデータセットの「80クラス」をクラス数Cの上限と見なした話を,中心的に紹介する

CNN物体検出ネットワークの初期手法では,以下2つの構成(もとい戦略)が主流となった:

  • 2ステージ型 (3.1節, Faster R-CNN [Ren et al., 2015] ):
    • 以下の2ステージに処理を分担:
      1. 領域提案ネットワーク(RPN):アンカーボックスから「領域提案を検出 + BBox回帰」
      2. Fast R-CNN:各領域提案に対し「多クラス識別 + 修正量回帰」.
  • 1ステージ型 (3.2節, YOLOSSD):

以降は,この2種類の手法を,3.1節,3.2節で順に概要紹介をおこなう.

3.1 アンカーベース・2ステージ型の物体検出CNN

Faster R-CNN
図3. Faster R-CNN

後半ステージに領域候補ごとにR-CNNを実行する方式の物体検出手法が「(アンカーボックスベースの)2ステージ型のCNN物体検出手法」である.Faster R-CNN [Ren et al., 2015] の提案により初めてEnd-to-Endでのディープラーニングモデルのみでの2ステージ手法が確立された.処理が前半・後半の2ステージに分かれていることから,2ステージ型と呼ぶ.

前半ステージのRPN(領域提案ネットワーク)では,「アンカーボックスを用いての,効率的なバウンディングボックス候補探索」が提案された.画像入力からVGGNetでEncodeした空間サイズの小さな特徴マップ上の,各セル中心位置(=アンカー)において,少数のK個のアスペクト比のバウンディングボックスのみをアンカーボックスとして処理対象とする.そして,各セル位置で,K個のアンカーボックスから回帰・(位置特定)を行う.学習時には,アンカーボックスと正解ボックスの間で,Smooth L1ロスで,バウンディングボックス回帰ヘッドを学習する.(※ のちに,バウンディングボックス回帰の損失には,評価関数と同じくIoUが用いられるようになる)

後半ステージ(Fast R-CNN)には,全クラスの確率が一緒に学習されていることが重要な点である.従来の単体クラス物体検出(2節)や,では,各物体ごとに1モデルを学習する「2クラス識別」学習であった.それと異なり,ROI Poolingを行って集約した画像特徴マップに対して,複数クラスの同時発生具合を後半ステージにおいて学習する.

したがって旧来の単一物体クラス物体検出モデルと比べると,複数クラス間や複数インスタンス間で遮蔽している物体でも,複数クラス同士の遮へい具合も後半ステージに学習できるようになっており,遮蔽している物体もうまく検出できやすい.例えば,「バイクに二人乗りしている2人がお互い重なって写っている入力画像を処理する場合」を考える.重なり時の特徴マップの様子を沢山学習しておくことで,互いに遮蔽している2人とバイク(2物体)ともうまく検出しやすい検出モデルを学習できる.次節の1ステージ型も「物体間遮蔽やクラス間遮蔽をモデリング(学習)できる」ところは2ステージ型と共通している.

3.2. アンカーベース・1ステージ型の物体検出CNN

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

1ステージ検出器は,特徴マップ上の空間グリッド上の各アンカーに配置したアンカーボックスに対し,単一ネットワークを用いて,入力画像を畳込んだ画像全体の特徴マップから,各アンカーボックスに対する「オフセットの回帰」と「クラス識別」を直接おこなう.つまり,2ステージ型のように「領域候補検出処理による前半処理フェーズ」に分離することはせず,ネットワークに出力を直接学習させるという1ステージ型手法である.

3.2.1 YOLO (You Only Look at Once)

YOLO v1
図4. YOLO v1

Yolo (You Only Look at Once) [Redmon et al., 2016], [Redmon and Farhadi, 2016] は,1ステージ型の代表的な大規模物体検出手法である.画像全体を$S \times S$個の正方形セルから構成される「グリッド」に分割してとらえる.各セル(i,j)において,それぞれ [BBox回帰量・BBox信頼度・ 条件付きsoftmaxクラス確率]の3種のラベルを,各チャンネルの値に学習する.テスト時は,「信頼度・条件付きクラス確率 = クラス確率」をBBoxのスコアとして用い,それらクラス確率付きBBox群を非極大値抑制(NMS)で処理することで最終的な検出結果を得る.

Yoloの研究は,version 3までは主著者自身が進めていった.段階的に他手法のいいところを取り入れて,SSDに対して最初は遅かった速度の改善などがなされつつ,超多数クラス(Yolo v2 で 9000クラス)の検出に対応しながら,高性能にもなっていった.Yolo v2 [Redmon and Farhadi, 2016] は, Faster R-CNN で提案されたアンカーボックスを導入したので,この時点で実質的に「(クラス確率も学習するかどうか以外では)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. SSD(Single Shot Multibox Detector)の処理フロー

SSD(Single Shot Multibox Detector) [Liu et al., 2016] は,YOLOと同時期に提案されたが,YOLOを少し改善し,ネットワーク設計思想も異なる代表的な1ステージ手法である.SSDは全体が完全畳み込みネットワーク(FCN)構造である:

  • 前半:「特徴量抽出ネットワーク」
  • 後半:「(SSD流の)Feature Pyramid Network (※ FPNのように,Encoderとのスキップ接続はない)
    • 各解像度ごとの検出を担当する「検出器(Classifier)」を畳み込み層で配置.
    • 各スケールの検出器では,そのスケールに沿ったサイズのアンカーボックス(※ SSDではデフォルトボックスと呼ぶ)から各サイズの物体を検出する.

最初 Conv5_3 層では,[38 x 38] の空間セルにおいて,異なる6種のアスペクト比のデフォルトボックス(≒アンカーボックス)に対し,(クラス確率 Nクラス分,オフセット4つ)のペアの予測をそれぞれ行う.その層以降は,特徴マップを畳み込んで小さくしていくにつれ,それまで畳み込んだ受容野の範囲が大きくなり,より後半を圧縮した抽象化度の高い対象物体をの検出する事になるが,特徴マップの空間サイズはどんどん狭まっていく.

SSDは,YOLO v1より高速に動く一方で,初期の畳み込み層の特徴を後半の層まで伝えるスキップ接続のような仕組みは設けられていない.つまり,VGGNetそのままの単純な畳み込みを連続して伝搬し続けるFCNがSSDの構造である.よって,出力ヘッドに送られるConv4_3は,VGGNet序盤層で消えてしまう「細部の低レベル特徴」が足りないため,小さな物体の検出には弱い

この弱点に対抗する改善手法として,その後 FPN(特徴ピラミッドネットワーク)や,RetinaNet, RefineDet などが登場する(4.1節).

3.2.3 省モデル化・高速化

モデルサイズが小さいゆえ,SSD や YOLO などの1ステージ検出器は,それらと同時期に発展が始まった「ディープニューラルネットワークの省モデル化および高速化」の発展から特に恩恵を受けている.パソコン上では無い「組み込み環境」での小計算資源や,メモリの少ない環境でも,ある程度の高速性と精度を保った状態で,1ステージ物体検出モデルを使用できるようになってきている.

例えば,エッジコンピューティング目的で物体検出モデルを使用している方は,MobileNet v2 [Sandler et al., 2018] の論文で提案された「軽量型のSSD (SSD Lite)」が標準装備されていことが多いく,SSDを使ったことがある方も多いと思う (※ この3.3.3節 は 2019年に記述).

4. まとめ

この記事では,画像からの物体検出手法として,古典的な「単一クラス検出器(2節)」と,「深層学習時代の物体検出器(3節)」の2つに別けて,順に基礎的な話のみまとめた.

深層学習ベースの物体検出手法(3節)では,アンカーと呼ばれる「検出結果領域のPrior」に対する矩形修正量を,特徴マップ上のアンカー内の局所特徴に対して回帰しておくことが基本である.また,2節の頃と違い,複数クラス(20~80クラス程度)の物体のクラス検出器も,まとめて1つのネットワークにマルチヘッド学習で学習する.

4.1 物体検出(Object Detection)のその後の発展(2017以降)

この記事の3節では,ディープラーニング流行以降の,初期のCNN物体検出ネットワーク(2016年ごろまで)の紹介のみにとどめた.それら基本的な初期モデルはこの記事でおさえられたと思うが,その後も,以下に示すような代表的な手法や工夫が研究され,発展は続いていく:

  • Mask R-CNN [He et al., 2017] :検出と同時に,各インスタンスの物体マスクも同時学習するインスタンスセグメンテーションの問題設定むけへの発展.
  • Feature Pyramid Networks [Lin et al., 2017]:特徴量マップの効率的なピラミッド化により,マルチスケール対応性が向上し,複数スケールの物体を検出可能なモデルを学習しやすくなる.
  • CornerNet [Law and Deng, 2018]:1ステージ型だが,アンカーの設置をやめて,人物姿勢推定向けに登場したAssociative Embeddingに習って「キーポイントの埋め込みベクトルをプーリングする」という新路線を取ったアンカーフリー・1ステージ型の物体検出ネットワークである.シンプルであり,マルチタスク学習化もしやすく,領域提案内の特徴だけでなく,入力全体の特徴で推論できるゆえに高精度も確保しやすいことから,あらたな主流アプローチとなっていく.

参考書籍

References

  • [Dalal and Triggs, 2005] N. Dalal, B. Triggs. Histograms of oriented gradients for human detection, In CVPR, 2005.
  • [Dollar et al., 2009] Piotr Dollar, Zhuowen Tu, Pietro Perona, and Serge Belongie. Integral channel features. In BMVC, 2009.
  • [Felzenszwalb et al., 2008] P. Felzenszwalb, D. McAllester, and D. Ramanan. A discriminatively trained, multiscale, deformable part model. In CVPR, 2008.
  • [He et al., 2017] K. He, G. Gkioxari, P. Dollar, and R. Girshick, “Mask r-cnn. In ICCV, 2017.
  • [Law and Deng, 2018] H. Law and J. Deng. Cornernet: Detecting objects as paired keypoints. In ECCV, 2018.
  • [Lin et al., 2017] T. Lin, P. Dollár, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. In CVPR, 2017.
  • [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.
  • [Redmon and Farhadi, 2016] J. Redmon and A. Farhadi. YOLO9000: Better, Faster, Stronger. In CVPR, 2016.
  • [Ren et al., 2015] S. Ren, K. He, R. Girshick and J. Sun. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, In NeruIPS 2015.
  • [Sandler et al., 2018] M. Sandler, A. Howard, M. Zhu, A. Zhmoginov, and L.-C. Chen. Mobilenetv2: Inverted residuals and linear bottle- necks. In CVPR, 2018.
  • [Viloa and Jones, 2001] P. Viola, M. Jones. Rapid object detection using a boosted cascade of simple features, In CVPR 2001.

外部参照リンク

関連記事