物体検出

物体検出(ぶったいけんしゅつ、object detection)は、デジタル画像処理やコンピュータビジョンに関連する技術の一つで、デジタル画像・動画内に映っている特定のクラス(人間、建物、車といったカテゴリー)の物体を検出するものである[1]。物体検出はコンピュータビジョンの基礎的な学問領域であり、画像分類や顔認識、自動運転など多くの分野でその知見が応用されている[2]。深層学習(ディープラーニング)技術の進展に伴い、物体検出の分野でもR-CNNやYOLO、SSDなどの深層学習を用いた手法が広く使われるようになって精度も大きく向上したが、一方で物体検出分野に特有の技術的な課題や学習・評価に必要なデータセット作成における課題など、解決されるべき課題も残っている。
概要

物体検出は、動画像内に特定の属性を持つ物体が存在するかどうかを検出し、もし存在する場合には各物体の位置と範囲まで推論する技術である[3]。物体の位置を示す方法として、バウンディングボックスと呼ばれる物体を取り囲む最小の矩形を用いる方法が使われる[4]。なお、画像認識一般において、認識対象がもつ属性を記号で表したものをクラスと呼ぶ[5]。
物体検出は画像理解、コンピュータビジョンの分野において基礎的な技術であり、セグメンテーションやシーン理解、物体追跡、画像キャプション付与といった他のより複雑な画像認識タスクを解決するための基礎である[3]。また実世界への応用についても、セキュリティ、自動運転、画像検索、ロボットビジョン等幅広い[2][3]。類似の画像認識技術に、画像内の物体のクラスを識別するクラス分類タスクがある[6]が、物体検出ではクラスだけでなく物体の位置まで認識する必要があるため、検出器を作成するのはより難しい[7]。また、タスクの特性上、認識対象外である背景の範囲に比べて認識対象の物体が少ないことも、物体検出が難しい一因である[7]。
動画像から異なる物体を認識するためには、動画像から意味的でロバストな特徴表現を抽出する必要がある[2]。例えば自動車を撮影した画像間で比較しても、セダンやワゴン、トラックといった外見的な違いがあるものを自動車として検出しなければならない[8]。実世界には同じクラスの物体でも多様な形状が考えられるし、形状が変化する場合も考えられる[9]が、そうしたものを同じクラスで検出できるような頑健な特徴抽出手法が必要とされるのである[10][注釈 1]。2004年にスケール不変な特徴抽出手法であるSIFT[12]が発表されて以降、研究者がよりロバストな特徴量を設計し物体検出に応用するのが盛んとなった[3]が、2012年に深層ニューラルネットワーク(DNN)を用いた手法が画像分類において従来の記録を大きく上回る精度を記録した[13]ことで、物体検出でもDNNが活用されるようになり[14]、2019年頃になってもDNNを用いた物体検出手法がなお盛んに研究されている[3]。
歴史
初期
1970年代には既に物体検出を取り上げた研究が存在していた[15]。初期の研究では、テンプレートマッチングや画像を分割し個別に検出アルゴリズムを使用するシンプルな手法が用いられており、顔検出などが対象になっていた[3]。1990年頃までは幾何的なアプローチが主であったが、その後はサポートベクターマシン(SVM)やニューラルネットワーク等の統計的な手法の研究が盛んとなっていく[3]。
SIFT以降
上述したように動画像から異なる物体を認識するためには、意味的でロバストな特徴表現を動画像から得ることが重要である。回転、照明条件の違い、障害物の有無といった見た目の変化にも不変な局所的な特徴表現を学習する手法の研究が進んでいく[3]。そうした中で2004年にスケール不変な特徴抽出手法であるSIFT[12]が成功を収める等、研究者たちが様々な条件に不変な特徴抽出手法を提案するようになる[3]。2001年に提案されたHaar-Like特徴に基づくViola–Jones物体検出フレームワーク[16]は、主に顔検出への応用を目的とした手法で、予め作成した弱識別機を複数組み合わせ、識別器同士で互いの弱点を補い合い全体で一つの識別機を成す。但しこれらの手法のように研究者が手で特徴抽出手法を設計することについては、非常に多様な外観を持つタスクに対して完全に対処できる特徴量を得ることは難しい[2]し、最適である保証もない[17]とされる。
深層学習による革新
画像認識の分野では物体検出に限らず、上述のSIFTのような研究者がタスクの性質を分析し手作業で設計された手法が支持されていた[13]。畳み込みニューラルネットワーク(CNN)を用いた手法は研究されていたものの、局所最適解を得られる保証がなかったり学習が収束する保証がなかったこともCNNが活用されなかった背景である[18]。そうした状況の中、2012年にAlex Krizhevskyらが画像認識(画像分類)のコンテストであるILSVRC2012で提出したCNNを用いたシステムが、従来の画像認識システムを大幅に超える精度を記録した[13]。このシステムでは膨大な計算量を前提とし、大量のデータをニューラルネットワークの学習に用いるという特徴がある[13]。GPU等の技術的な計算資源の向上も相まって[18]、深層学習の活用が現実味を帯びてきた。
画像分類タスクにおけるこうしたCNNの成功を物体検出の分野にも応用しようという動きがあり、2014年にはR-CNNと呼ばれる検出システムが発表された。これは従来から存在した物体候補領域提案(region proposal、動画像内の物体が存在しそうな領域を複数提案するもの)手法を動画像に施した後、それらの候補領域それぞれにCNNを用いてその領域に対象クラスの物体が存在するか、存在する場合にはその正確なBounding boxの座標を学習するものであった[14]。欠点として、前段の物体候補領域の提案にはCNNを用いていないことや、後段のクラス分類でも従来の機械学習手法であるSVMを用いていること、また候補領域の提案とクラス・Bounding boxの推論という二段構造になっていることによる推論速度の遅さ等があるが、こうした欠点の存在がその後の改善手法の提案に繋がっていった[3]。
深層学習以降の進展
R-CNNの発表後、その欠点を改良した検出システムが発表されていく。2014年に発表されたSPPNet[19]は、入力として固定サイズの画像しか受け取れないというR-CNNの欠点を解消した[3]。2015年に発表されたFast R-CNN[20]は、事前に画像全体に対してCNNを用いて特徴抽出を行い、そこに候補領域の情報を組み合わせることで、候補領域ごとにCNNを毎回適用しなければならないというR-CNNの欠点を解消した[2]。さらに2015年に提案されたFaster R-CNN[21]では、前段の物体候補領域提案の部分がボトルネックとなっていたことに注目し、新たに物体候補領域提案の部分をニューラルネットワークを用いて置き換えた(Region Proposal Network(RPN)と呼ばれる)。これによりシステム全体がニューラルネットワークを用いて学習できるようになり、大幅な高速化を達成した[2]。これ以降も、クラス分類・Bouding boxの座標推定に加え、Bounding box内の対象物体の領域を推定するブランチを追加しインスタンスセグメンテーションを行えるようにしたMask R-CNN[22]等、R-CNNから続く2ステージの検出システムは幅広く研究が進んでいる[2]。
一方で、候補領域を予め抽出し、それについて検出・分類を行うという2ステージの検出システムは計算資源を要するため、特に携帯端末やウェアラブルデバイスといった容量や計算資源の限られた端末での応用が難しいという課題がある[3]。そこで領域提案などを分離せず、入力からクラス分類・Bouding boxの座標推定までをエンドツーエンドで行う1ステージの検出システムの研究も進められている[3][2]。2013年に発表されたOverFeat[23]は、ILSVRC2013の検出部門にて最高記録を達成する。OverFeatは圧倒的な処理速度を達成するが、一方でその精度は2ステージの検出システムであるR-CNNには及ばなかった。その要因としてはOverFeatに用いられる全畳込みニューラルネットワーク(fully convolutional network)[注釈 2]の学習が当時難しかったことが挙げられる[3]。ただ、OverFeatの特徴は後発のYOLOやSSDに引き継がれた[3]。2016年に発表されたYOLO[26]は、画像を任意のピクセルごとのグリッドに区切り、グリッド毎に物体が存在する確率と物体が存在する場合の分類クラスを予測するというものである[2]。YOLOは処理速度で45fpsを記録した[注釈 3]。ただしグリッド毎に予測するという性質上、2ステージのFaster R-CNNと比べると位置の正確性は低くなった。特に1つのグリッド内に複数の物体がある場合の検出力が低いという欠点がある[3]。2016年に発表されたSingle Shot MultiBox Detector(SSD)[27]は、Faster R-CNNに用いられたRPNの考え方を持ち込んだもので、YOLOと比較して処理速度がさらに向上するとともに、精度面でもFaster R-CNNと同等の精度を達成した[3]。2019年に発表されたEfficientDet[28]等、1ステージ系でありながら条件によっては2ステージ系のMask R-CNNの精度を上回る[28]システムも出てきている。
手法

物体検出の手法は一般に、従来の機械学習ベースのアプローチまたは深層学習ベースのアプローチのいずれかに分類される。従来の機械学習をベースにしたアプローチの場合、まず以下のリストにあるような手法を用いて動画像内の「特徴」を定義し、その上でサポートベクターマシン(SVM)などの手法を使用してそれらの特徴が対象物体かそうでないかを分類する必要がある[3]。一方、深層学習を用いた手法では、「特徴」を具体的に定義せずともエンドツーエンドで物体検出を行うことができる[3]。通常、畳み込みニューラルネットワーク(CNN)を用いることが多い。2012年に深層学習がクラス分類タスクで大きな成功を収めて以降は、物体検出においても深層学習によるアプローチが主流となっている[2][3]。
古典的な機械学習によるアプローチ
先述したように、古典的な機械学習をベースにしたアプローチでは、まず画像から特徴量を抽出し、その特徴量を用いてマッチングを行うなどして物体を検出する[3][30]。以下では特に検出手法について断りがない限り、前者の「画像から特徴量を抽出する」手法について述べている。
- Haar-Like特徴に基づくViola–Jones物体検出フレームワーク[31]
- Haar-Like特徴量は2001年に提案された、主に顔検出に用いられる特徴量である[32]。矩形領域内の平均輝度の差に基づく特徴量で[33]、人間の顔の場合は一般的に鼻筋や頬が明るく、逆に目や口は暗いという共通の特徴があることに着目し、これを捉えるために画像内の明暗の差を特徴としたものである[32]。この特徴を用いた単純な識別器を大量に生成、選別し、それらをカスケード状に接続(直列に接続すること[34])して顔の位置を検出する手法がHaar-Like特徴と同時に提案されている[35]。
- スケール不変特徴量変換 (SIFT)[36]
- 画像のスケール変換や回転に不変な特徴量を抽出する手法。特徴点を検出するキーポイント検出と、検出された特徴点に対し回転不変な特徴量を記述する特徴量記述の二段構成になっている[37][38]。SIFTの発表後、SIFTが抱える課題を解決するための派生手法が複数提案され、処理の高速化・省メモリ化が図られている[39]。
- HOG特徴量[40]
- 2005年に提案された、人に共通する特徴を捉えるための特徴量[32]。SIFT同様一定領域まわりの輝度勾配に基づく特徴量であるが、SIFTが特徴点に着目するのに対しHOG特徴量は領域矩形内の輝度勾配を用いるため物体形状を表現することが可能であり[41]、人検出に限らず用いられている[32][41]。
深層学習によるアプローチ

- 領域提案(R-CNN[14]、Fast R-CNN[20]、Faster R-CNN[21] 、cascade R-CNN[42])
- R-CNNは2014年に提案された手法であり、CNNを用いた検出器としては初めて、それまで用いられていたHOG特徴量をベースとする検出器よりも高い性能を出すことを示した。以降の深層学習を用いた様々な手法の先駆けであり、一般物体検出の進展に大きな影響を与えた[43]。R-CNNはまず画像内から物体領域の候補となる領域を生成し、その各候補領域に対してCNNを用いて物体かどうかを判定するというものである[44]。派生手法であるFast R-CNNやFaster R-CNNも同様の構造を引き継ぎ、ボトルネックになっていた部分にCNNを新たに適用できるようにしたり、複数回適用していた処理を一度にできるように改良したものである[44]。
- You Only Look Once(YOLO)[26][45][46][29]
- 2016年に発表された手法。画像全体を小さなグリッドに分割し、各グリッドに対して物体が存在するかどうかを判定する。物体が存在する場合にはその物体を囲む矩形のサイズとそのクラスを推論する[47]。処理の過程で、R-CNN系であったような物体候補領域を生成する必要がないため、入力から出力まで1ステージで行えることが特徴である[47][48]。推論処理で45FPSを達成する等速度が向上した[49]半面、小さな物体の認識が苦手であったり、異なるスケールやアスペクト比を持つ物体の認識が苦手という欠点もある[47]。
- Single Shot MultiBox Detector(SSD)[27]
- 2016年に発表された手法。YOLOが抱える課題に対応して改良された1ステージ系の手法。YOLOでは物体位置の推定にネットワークの最終層で得られる特徴量しか用いなかったのに対し、SSDでは入力に近い層の特徴量も用いたことが特徴で、より小さいサイズの物体の検出にも対応できるようになった[50][51]。また、複数のアスペクト比を持つ矩形内で畳み込みを行うことで、異なるスケール・アスペクト比を持つ物体の検出にも頑健になった[52]。
- Single-Shot Refinement Neural Network for Object Detection (RefineDet) [53]
- 2017年に発表された手法。1ステージの手法で、前半のブロックで物体の有無及びおおまかな位置を検出し、後半のブロックで具体的な物体位置やクラスまで検出する[53]。この2ブロックは接続されており、全体としてはend-to-endで学習ができる[54]。設計者は2ステージ型の検出器の機構を参考にしたと述べており[53]、このように2つのステップを設けることで、より正確な位置を検出することができる[54]。
- Retina-Net[55][56]
- 2018年に発表された検出モデル。検出タスクについては、検出対象となる前景よりもそれ以外の背景の出現頻度が非常に高いという特徴があり[55]、それを解決するために、検出が難しい事例をより重視してモデルの最適化に反映するFocal lossと呼ばれる損失関数を導入したことが特徴[57][58]。モデルの構造は1ステージの検出器とFeature Pyramid Network(FPN)と呼ばれる物体検出で標準的に用いられる特徴抽出器を組み合わせたもの[58]で、開発者は従来の2ステージ系の検出器と同等の精度を達成したとしている[55]。
- Deformable convolutional networks(DCN)[59][60]
- 2017年に発表された手法。通常の畳み込みニューラルネットワークを用いる場合、正方形あるいは長方形であるフィルタの形状に検出能力が制約されてしまう。そこで本手法では、フィルタを変形可能なネットワークを設計し、物体検出と同時にフィルタの変形具合も学習する[7]ことで、物体の形状をより的確に認識できるようにしている[61]。
データセット
機械学習においては主にモデルの学習とその評価について、データセットを用いる[62]。 一般に提案手法を公平に評価するため、一定の難易度があるデータセットをベンチマークとして用いることは重要である[63]。また深層学習は大量の学習データを必要とするが、一般に物体検出のためのラベル付けは画像分類のラベル付けと比べると、画像に含まれる物体の種別を選択するだけでなく、その位置まで特定して描画する必要があり難易度がより高い[64]。また、バウンディングボックスの付与はより物体領域を正確に囲うほど良いため、品質とコストの釣り合いを取ることが難しい[64]。機械学習全体の課題として大規模なデータセットを単独で構築することが難しいということもあり[65]、ラベル付けが行われた大量のデータにオンラインでアクセスできる環境が整うことで研究・開発が進むという側面もある[3]。例えば2017年に発表された顔検出のためのデータセットであるUMD Faces[66]というデータセットは、従来の大規模なデータセットの中には公表されていないものもあり、特に研究機関が自由にアクセスできる動画を含むデータセットを作成することを一つの目的として発表したとしている[66]。また特に研究が盛んな特定の分野では、その分野に特有の物体を詳細にラベル付けしたデータセットが作成されることもある[2]。 以下では一般物体検出のためのデータセットに加え、分野別のデータセットについても述べる。
一般物体検出
動画像に多く出現する一般的な物体を広範なカテゴリに分類して取り揃えたデータセットを紹介する。
名称 | 発表年 | 枚数 | クラス数[注釈 4] | 特徴・備考 |
---|---|---|---|---|
Pascal VOC[67] | 2005 | 11,540 | 20 | 2005年に4クラスでスタートした後、現在の20クラスに増加。後発のデータセットに比べて小規模[3]。 |
ImageNet[68] | 2009 | 1,400万枚以上 | 21,841 | サブセットであるImageNet1000は、コンペティションのベンチマークのデータセットとして使用されている[3]。 |
MS COCO[69] | 2014 | 約328,000 | 91 | ImageNetが実世界に適応できないとの批判に対応し、小さな物体を多く含んだり遮蔽物(オクルージョン)が多いという改善を施したデータセット[69]。2019年現在、物体検出におけるベンチマークの標準とされる[3]。 |
OpenImage[70] | 2017 | 約900万枚 | 600 | 2019年現在、最大規模のデータセット[3]。ラベル付与を半自動化し、人間の目でそれらをチェックしている[70]のが特徴。 |
顔検出
顔認識は本人認証のための生体認証技術であり、同時に軍事、セキュリティなど多くの分野に応用されている技術[71]である。一般物体検出タスクと比較して、より広い範囲のスケールの対象物を認識する必要があること、一口に顔といってもパーツの配置や肌の色の違い等によって同じものが一つとして存在しないことといった違いがある[2]。
名称 | 発表年 | 枚数 | 特徴・備考 |
---|---|---|---|
UMD Faces - Video[72] | 2017 | 22,075 | 動画を含む |
MegaFace[73] | 2017 | 約470万 | |
MS-Celeb-1M[74] | 2016 | 約100万 | Microsoftが開催したコンペティションで使用されたデータセット |
道路シーン
物体検出の実世界への応用分野の一つとして自動運転が挙げられる。これは自動運転において、道路上の信号機や標識を認識することが必要だからである[75]。以下では標識や信号機を含むデータセットを挙げている。
名称 | 発表年 | 枚数 | クラス数 | 特徴・備考 |
---|---|---|---|---|
CityScapes[76] | 2016 | 約5,000 | 30 | ドイツの各都市の道路シーン画像を収集 セグメンテーションラベルが付与されている |
KITTI[77] | 2012 | 約15,000 | 16 | 他にOptical Flowの情報や、3次元のアノテーションが付与されたデータも存在する |
LISA[78] | 2012 | 約6,610 | 47 | アメリカで撮影された道路シーン 動画を含むバージョンも存在する |
評価指標
物体検出システムの性能を測る指標としては、大きく2つの視点から挙げることができる。1つが処理速度であり、もう1つが精度である。特に処理速度を測る指標としてフレームパー毎秒(FPS)、精度を測る指標として適合率と再現率がある[3]。以上の指標は物体検出に限らず用いられる指標であるが、物体検出に特有の数値としてIoU(Intersection over Union)がある。これはある推定結果と対応する正解がどの程度重なっているかを表す数値であり、完全に一致しているときには1、全く重なる部分がないときには0となる。実際の検出システムでは完全に正解と一致する結果を得ることは困難であるため、実運用評価の際にはこのIoUが一定値以上の結果を正解とみなし精度を測ることになる[63][3]。また、適合率と再現率の他に、これらを組み合わせた平均適合率(Average Precision, AP)も用いられることが多い[3]。推論時には推論した結果とともにどの程度の確からしさでその検出結果を得たかという指標も返されるが、この確からしさも用いて計算される指標である。適合率と再現率は一般にトレードオフの関係にある(後述)[79]ため、双方の要素を取り込んだ平均適合率が使われる[3]。
- 適合率(Presicion)
一般に以下の式で計算される。ここで、TPは推論結果の中で実際に正解しているもの、FPは推論結果の中で実際には正解でないものの個数である。
- 物体検出のページへのリンク