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

記事を共有する:

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

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

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

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

この記事では,CNNベースの複数クラス物体検出(3節)のうち,初期手法(Faster R-CNN, YOLO, SSD)についてしっかり説明比較を行いたい.具体的には,アンカーボックスベースの2ステージR-CNN型の初期手法(Faster R-CNN)と,1ステージ型の初期手法(YOLO, SSD)の2つにフォーカスをあてるので,それらディープラーニング時代の基礎手法をしっかり身に付けて頂きたい.つまり,3節がこの記事のメインコンテンツである.4節では(アンカーボックス型)2ステージ型と1ステージ型の違いをまとめる.また,以降の動向も,さわりだけ紹介する (アンカーフリー型やキーポイントの導入に,マルチスケール対応やDense Object検出など)

また,深層学習以前の物体検出(2節)についても,主題である3節に入る前に,駆け足でまとめている.古典的なテンプレートマッチング時代を脱して,機械学習化・実応用に初めて成功した単一クラス物体検出(2.1節 顔検出や歩行者検出 )や,パーツベースの複数クラス検出(2.2節,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を用いた複数クラス物体検出」は,物体検出の,(1)物体クラス識別(classification)と(2)位置特定(localization)の2タスクを,同時に学習する,ディープラーニング登場以降の物体検出手法である.物体クラス数をCとすると「C = 20クラス(Pascal VOC 2007) ~ 80クラス(MS COCOデータセット)」の識別と,そのバウンディングボックスの位置特定を,1つの物体検出CNN複数クラスいっぺんに学習する.深いネットワークを用いて巨大なモデルに学習することで,数十~数千物体クラスを1つのネットワークだけで検出できるようになった.

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:領域提案の特徴マップをROI poolingで正規化したものに対して,「多クラス識別 + 修正量回帰」を行う.
  • 1ステージ型 (3.2節, YOLOSSD):
    • 入力:画像全体に対してCNNバックボーンで計算した特徴マップ
    • アンカーボックス群(領域候補)に対応する部分特徴マップから,クラス識別・位置特定(=BBox回帰)を直接(1ステージで)行う.

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

以降は,この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] (図3)の提案により,初めて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の処理手順

最初 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 省モデル化・高速化

(※ この節 は 2019年に記述) モデルサイズが小さいゆえ,SSD や YOLO などの1ステージ検出器は,同時期に発展が始まった「CNNの省モデル化および高速化」の発展から特に恩恵を受けている.パソコン上と違い,「組み込み環境」での小計算資源においてや,メモリの少ないPC環境でも,ある程度の高速性と精度を保った状態で,1ステージ物体検出モデルを使用できるようになっていった.

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

4. 物体検出のまとめ

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

深層学習ベースの物体検出手法(3節)の基本的仕組みは,「検出結果領域矩形のPrior」である少数のアンカーボックスから正解ボックスへのオフセット修正量を,特徴マップ上のアンカー点周辺の領域特徴に対して回帰するという処理であったことを,3節では述べた.また,同じく領域特徴を元に,2節の頃と違い,複数クラス(20~80クラス程度)の物体のクラス検出器も学習する.これら2つの問題は,マルチヘッド(回帰ヘッド+識別ヘッド)で,ファイン・チューニングにより学習する.

4.1 2ステージ型と1ステージ型の物体検出の違い(まとめ)

3節冒頭にリストとしてまとめた「2ステージ型と1ステージ型の違い」を,まとめの節なので再度文章でまとめておく.

2ステージ型(R-CNNシリーズ)では,まず前半ステージで後半ステージで処理する領域候補(Region Proposal)を少数だけ物体検出する.その候補検出には,Selctive Searchや,アンカーボックス処理を用いたRPN(領域提案ネットワーク)を使用する.後半ステージでは,「サイズがバラバラな」領域候補の,空間領域に対応する部分特徴マップを,ROI Poolingを用いて,統一されたサイズにプーリング(特徴集約)する.そして,2ヘッド構成の(Fast) R-CNNにより,(1) 領域候補からのオフセット回帰と,(2) 物体クラス識別を行う.

1ステージ型では,最初から候補ボックスが,特徴マップ上の各グリッド周辺にアンカーボックスが領域候補として配置されている.それらの大量の領域候補において,それぞれ直接「オフセット回帰 +クラス識別」の2ヘッドを学習する.2ステージ型では,明示的に存在してステージ間の橋渡しに使用する領域候補(Region Proposal)が,1ステージ型だと隠ぺいされており表出してこない(=各出力ROIでは,直接クラス識別も一緒に行われる).

4.2 物体検出のその後の発展 (2017年以降)

3節では,ディープラーニング流行以降の,初期のCNN物体検出ネットワーク(2016年ごろまで)の紹介までにとどめた.

その後は,以下に示すような代表的な手法・工夫が研究され,物体検出の発展は続いていく:

  • Mask R-CNN [He et al., 2017] :
  • Feature Pyramid Networks [Lin et al., 2017]:
    • 特徴量マップの効率的なピラミッド化により,マルチスケール対応性が向上
    • 複数スケールの物体を検出可能なモデルを,効率良い構造で学習しやすくなった.
  • RetinaNet [Lin et al., 2017]:
    • 提案のFocal Lossを用いると,1ステージ型で問題となっていた「クラス不均衡」へ賢く対応できるようになる
    • 以降,Focal Lossによって,1ステージ検出器の優位性が高まることに.
  • CornerNet [Law and Deng, 2018], CenterNet [Zhou et al.,2019]:
    • 1ステージ型だが,アンカーの設置をやめた,「アンカーフリーで1ステージ型のキーポイントベース物体検出」.
    • この路線は,人物姿勢推定向けのAssociative Embeddingに習って,「キーポイントの埋め込みベクトルも使用する」路線を取っていく.シンプルであり,マルチタスク学習化も行いやすい.
    • 領域提案内の特徴だけでなく,入力全体の特徴で推論できるゆえに高精度も確保しやすいことから,あらたな主流アプローチとなっていく.

参考書籍

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.
  • [Lin et al., 2017] Lin, Tsung-Yi, Priya Goyal, Ross Girshick, Kaiming He, and Piotr Dollár. “Focal loss for dense object detection. In ICCV, 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. In CVPR, 2016
  • [Redmon and Farhadi, 2017] J. Redmon and A. Farhadi. YOLO9000: Better, Faster, Stronger. In CVPR, 2017.
  • [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.
  • [Zhou et al., 2019] Zhou, X., Wang, D., & Krähenbühl, P. (2019). Objects as points. arXiv preprint arXiv:1904.07850.

外部参照リンク