物体検出(Object Detection)

1. 物体検出とは [概要]

物体検出 (object detection) とは,画像の入力に対して,画像中に映る各物体インスタンスの 物体を検出し,なおかつそのクラスを識別するという,コンピュータビジョンの問題の代表的な問題である.より具体的には,入力画像において,各物体インスタンスの(1) 関心領域(ROI)を矩形で囲ったバウンディングボックス検出(detect) し,その (2) 物体ROIの意味的な物体クラスの識別も行う,という問題設定である.

この記事では,近年主流の物体検出テクニックである「深層学習ベースの物体検出(3節)」を中心に述べたい.その中でも,初期のアンカーベースの2ステージ型手法(Faster R-CNN)と,アンカーベースの1ステージ型手法(YOLO, SSD)が,物体検出ネットワークの基礎となる大事な初期手法なので,それらのみにフォーカスをあててしっかり身に付けて頂きたい.よって,それ以降の物体検出ネットワークの発展は,まとめで少し触れて,別の記事に分割する(4.1節).

一方で,それ以前の時代の「単一物体検出(2節)」についても,駆け足でまとめておき,読者が深層学習ベースの物体検出と,それ以前の手法との比較を行えたり,昔の技術からの着想も得やすくしておきたい.物体検出は,人間が普段認識している物体単位どおり,そのままコンピュータが各物体の「領域」および「物体クラス」を推定できるので,更なる高次タスクにも活用しやすく汎用性が高い.よって,現在の画像認識では,最も基本的で重要な技術の1つである.

一方で,その汎用性の高さと基盤技術ぶりから過剰に発展すると監視社会助長にもつながる技術である.したがって,「人間性の尊重」の視点で,モラルやプライバシー面も常に配慮する必要性が高く,物体検出システムを研究開発する側のモラルの高さも問われる技術である.昔ながらの物体追跡技術と共に,軍事転用にも繋がりやすい技術である.3節以降で紹介する,初期の物体検出ニューラルネットワーク(Faster R-CNNなどの1ステージ型 ,YOLO, SSD の2ステージ型)は,今(2022年)では,クラウド開発環境や組み込み開発環境上で,広く「ツール化」され「コモディティ化」もしている.よって,専門性がない人でも,誰でも使える時代になっている.しかし,その使い道や,研究発展方向に常に気を付けておかないと,人間の自由やプライバシーを過度に犯す社会を招くことを,(特に産業応用側の方ほど)肝に銘じておいていただきたい.

1.1. 記事の構成

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

  • 2節 古典的な,単一クラスの物体検出モデル
    • 2.1 CNN手法登場前の大まかな流れ.
    • 2.2 顔検出(Viola & Jones) と 歩行者検出(HOG・SVM)
    • 2.3 Deformable Part Models (DPM)
  • 3節 CNNを用いた物体検出 (初期のモデル)
  • 4節 まとめ
    • 4.1 その後の発展 (キーポイント)

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

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

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

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

古典的なマシンビジョンでは,剛体を検出対象としたテンプレートマッチング(Template Matching)と呼ばれる,物体検出方式だけが,まず実現して実用的に使われていた.テンプレートマッチングでは,検出対象物体に対してテンプレート画像を用意し,画像内の探索範囲内中でテンプレートと対象のあいだで相関マッチングを各候補位置で行う『スライディングウィンドウ処理』をおこない,その結果,テンプレート画像と類似度の高かった領域を物体検出結果として出力する方式である.テンプレートマッチング方式は, 畳み込みを用いた画像フィルタリングと似ており,スライディングウィンドウを用いた処理手順同士である点が,両者は共通している.

テンプレートマッチング方式は「外観検査」のように,画像の背景が単純な単色で,検出対象も「剛体的」であり,検出対象の物体以外の背景領域に,外乱やノイズが少ない条件設定において,威力を発揮しやすい.その一方で,日常の風景画像や,動画に映る数多くの一般物体を検出対象にしようとしても,人や物の周囲には背景も撮影されていてその背景変化も複雑である.検出したい対象物体も,視点・照明などによって外見(Appearance)の変化も大きい.よって,テンプレートを複数用意した程度では,日常画像からの物体検出が実現できなかった.

特に「人 / 顔 / 猫」クラスなどの『関節自由度(articulation)=姿勢の変化』によって画像上の外見が変化する「動物系のクラス」を,テンプレートマッチング技術だけでうまく検出することは困難であった(逆に言うと剛体形状のクラスは,古い技術で,結構いける).

2.1.2 「単一物体クラス検出モデル」の登場

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

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

「同定・検索」の前処理としての単一物体検出

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

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

2.1.3 CNNによる「大規模クラス物体検出」

一方,ディープラーニング登場以降の,CNNFCNをバックボーンに用いた「大規模クラス物体検出(3節以降)」は,AlexNetVGGNetなどで当初取り組まれていた,大規模物体クラス識別問題を,物体検出と同時に済ませることができるモデルである.Faster R-CNN,YOLO・SSD などが,その初期のCNN物体検出モデルであり,20クラス(Pascal VOCやImageNet) ~ 80クラス(COCOデータセット)の物体クラスを,1つの物体検出モデルで一挙に学習する.またYOLOのv2(YOLO 9000)では千クラス以上の超多数の物体クラス検出を(巨大な)1モデルだけに学習したなど,1モデルだけで物体検出を担当するクラス数や,その認識粒度も増していくことになった.ただし,以降のこの記事は初期CNN物体検出モデルの話までなので,COCOの80クラスの検出の話までを中心に展開する.

CNNベースの物体検出モデルは,深いネットワークを用いて巨大なモデルに学習できるので,数十~数千物体クラスを1つのネットワークだけで検出できるようになった理由である.従来の「手作り特徴 + 機械学習モデル」による物体検出手法(2節)では,物体クラスごとに検出モデルは1つずつ用意していた.それが,CNN世代になると,20~80クラスの物体の「クラス識別・位置特定」を,「ひとつのCNNにいっぺんに学習させる」点が,2節の従来モデルと大きく異なる.

また,CNNベースの物体検出モデルは,「見えの変化」や「視点(view)・姿勢(pose/articulation)の変化」へもうまく対応できるようになり,位置特定(localization)を担当する回帰ヘッドの使用で「物体内・物体間の部分遮蔽」にも強くなった.

3節では「2ステージ型モデル(Faster R-CNNなど)」「1ステージ型モデル(Yolo, SSDsなど)」の2種類の戦略にカテゴリ分けして,基本となる初期の各提案手法を紹介する.逆に,それらの応用である,のちの各改善手法(FPNや)は,この記事では対象外とした.

2.2 顔検出器と,歩行者検出器の登場

2.2.1 顔検出器:Viola -Jonesによる高速な顔検出

2001年に,Viola-Jones [Viloa and Jones, 2001]による高速な顔検出器が登場した(Wikipedia: Viola-Jones object deteciton framework).この手法はAdaboostを用いたHaar-like特徴の選択により,当時のデジタルカメラの性能でも,実時間での物体検出を初めて可能としたことで,リアルタイム性を達成できていなかった物体検出に,パラダイムシフトをおこした.これをきっかけとして,顔検出の産業応用のブームがはじまった.また,これに次ぐ形で,顔以外のクラスを対象とした「単一物体クラス検出」の研究も盛んとなった.

[Viloa and Jones, 2001] に代表される,Adaboostなどを応用した『Boostingベースの物体検出器』は,特徴選択により速度向上と精度向上を両立させやすい.よって,顔検出以外に,歩行者検出でもこの路線が有効活用され発展していった.この路線は,ディープラーニングのブーム手前までに,最終的に,Integral Channel Features (ICF) [Dollar et al., 2009] という,高速で高精度な手法まで発展していった(Wikipedia: Integral channel feature).

2.2.2 歩行者検出:HOG・SVM

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

こうして「顔検出」 と「歩行者検出」の,2系統の単一物体クラス検出手法が,活発に研究されていたが,いずれも「固定の縦横アスペクト比の物体検出器しか学習できない」という欠点・課題を持っていた.顔と歩行者以外の物体(例:飛行機,車,家など)でも物体検出を試みる時代になってきたのだが,それらの物体クラスでは,各1クラス内でも,BBoxの縦横アクペスト比が,撮影視点ごとにバラバラになりやすく,以前の単一物体クラス検出の戦略では,あまりうまく検出できないでいた.

2.3 Deformable Part Models の登場

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を用いた物体検出ネットワークでは,以下2つの構成(もとい戦略)が主流となった:

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

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

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

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

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

Faster R-CNN の前半ステージであるRPN(領域提案ネットワーク)では,密なスライディングウィンドウ処理は行わない.その代わりに疎な特徴マップ上のスライディングウィンドウの最中に,各位置で,少数のK個のサイズ比のBBoxのみをアンカーボックスとして処理対象にし,各位置でkアンカーボックスの領域に対してだけ,回帰・位置特定するという,効率的な仕組みが提案された.

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

  • 前半ステージ
    • 領域提案ネットワーク(RPN: Region Proposal Network)のCNNを用いて,入力画像に物体が写っている物体の「領域提案」を,各グリッド上のK個のアンカーだけから検出(物体クラスは未確定).
    • 同じ物体インタンス周辺に,30~100個程度が近い位置に多数検出されるので,非極値最大化 (NMS) により物体インスタンスごとに1つの出力へとまとめる.
  • 後半ステージ(Fast R-CNN):
    • 前半ステージのRPNで計算済みの「画像全体のCNN特徴マップ」を再利用.
    • 領域提案ROI内において,以下の処理を実施:
      • ROI poolingにより,CNN特徴マップから,各アンカー領域内の画像特徴のみを「縦横サイズが正規化された」,ROI内特徴ベクトルへ集約(256次元ベクトル).
      • ROI内特徴ベクトルを,「物体クラス識別ヘッド」と「アンカーに対する修正量回帰ヘッド」の2つに順伝搬して,それぞれ独立に予測する.
  • 後処理:
    • NMSを行い,最終的な「クラス識別済みの検出結果(バウンディングボックス群)」を得る.

(※ RPNも(Fast)R-CNNは,出力層以外は Fully Convolutional Network なので,可変の入力画像を受け付けることができる).

単体クラス識別器(2節)における「2クラス識別」学習と異なり,後半ステージのネットワーク(R-CNN, Fast R-CNN)には,全クラスの確率が一緒に学習されていることが重要な点である.複数検出候補のアンカー領域内の画像特徴に対して,複数クラスの同時発生具合を後半ステージにおいて学習する.したがって,複数クラス間や複数インスタンス間で遮蔽している場合でも,画像内全体の同時推定なので,物体検出できやすくなる特性がある.

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

3.2. アンカーベースで1ステージ型の検出器

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

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

3.2.1 YOLO (You Only Look at Once)

子記事:YOLO v1, v2 : アンカーベースの1ステージ物体検出CNNの元祖

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の処理フロー
図 SSDの処理フロー

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

  • 前半:「特徴量抽出ネットワーク」では,VGGInceptionNetなどの画像全体を畳み込む特徴抽出部分を用いて特徴量を入力画像全体から抽出してき,VGG終盤の全結合層を,畳み込み層に差し替えた.
  • 後半:各解像度の「検出ネットワーク」では,前半のネットワークの各中間層から,対応するスケールごとにそのスケールサイズに沿ったアンカーボックスを用いて,スケールごとに個別に物体検出する.

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

従って,SSDが各スケールの特徴マップで出力するデフォルトボックス数は,以下のように設定されている:

  • Conv4_3: (38×38) × 4 = 5776 ボックス (4アンカーボックス/セル)
  • 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個のデフォルトボックスが,6スケールにまたいで配置されている.

SSDは,YOLO (v1)より高速に動く一方で,初期の畳み込み特徴を後半の層まで伝える「スキップ接続」のような仕組みは設けられていない.つまり,VGGそのままの単純な畳み込みを連続して続けるFCN構造である.よって,出力ヘッドに送られるConv4_3は,VGG序盤層で消えてしまう「細部のローレベル特徴」が足りないため,小さな物体の検出には弱い.この弱点に対抗する改善手法として,その後 RetinaNet や RefineDet が登場する (これらの発展手法については,この記事では取り上げない).

3.3.3 省モデル化・高速化

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

4. 物体検出のまとめ

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

4.1 その後の発展

この記事の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ステージ型」の物体検出ネットワークである.シンプルであり,マルチタスク学習化もしやすく,そのおかげで処理速度も確保しやすいことから,あらたな主流アプローチの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.

外部参照リンク

関連記事

SNSでシェアやブックマークを行う