物体検出

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

**概要**
顔検出の事例。画像中の人物の顔が矩形で検出されている。
物体検出は、動画像内に特定の属性を持つ物体が存在するかどうかを検出し、もし存在する場合には各物体の位置と範囲まで推論する技術である。物体の位置を示す方法として、Minimum bounding boxと呼ばれる物体を取り囲む最小の矩形を用いる方法が使われる。なお、画像認識一般において、認識対象がもつ属性を記号で表したものをクラスと呼ぶ。
物体検出は画像理解、コンピュータビジョンの分野において基礎的な技術であり、Image segmentationやシーン理解、Video tracking、画像キャプション付与といった他のより複雑な画像認識タスクを解決するための基礎である。また実世界への応用についても、セキュリティ、自動運転、画像検索、ロボットビジョン等幅広い。類似の画像認識技術に、画像内の物体のクラスを識別するクラス分類タスクがあるが、物体検出ではクラスだけでなく物体の位置まで認識する必要があるため、検出器を作成するのはより難しいp=20。また、タスクの特性上、認識対象外である背景の範囲に比べて認識対象の物体が少ないことも、物体検出が難しい一因であるp=20。
動画像から異なる物体を認識するためには、動画像から意味的でロバストなlabel=特徴表現を抽出する必要がある。例えば自動車を撮影した画像間で比較しても、セダンやワゴン、トラックといった外見的な違いがあるものを自動車として検出しなければならないp=9。実世界には同じクラスの物体でも多様な形状が考えられるし、形状が変化する場合も考えられるp=4が、そうしたものを同じクラスで検出できるような頑健な特徴抽出手法が必要とされるのであるp=9-10。2004年にスケール不変な特徴抽出手法であるScale-invariant feature transformが発表されて以降、研究者がよりロバストな特徴量を設計し物体検出に応用するのが盛んとなったが、2012年に深層ニューラルネットワーク(DNN)を用いた手法が画像分類において従来の記録を大きく上回る精度を記録したことで、物体検出でもDNNが活用されるようになり、2019年頃になってもDNNを用いた物体検出手法がなお盛んに研究されている。

**歴史**

**初期**
1970年代には既に物体検出を取り上げた研究が存在していた。初期の研究では、テンプレートマッチングや画像を分割し個別に検出アルゴリズムを使用するシンプルな手法が用いられており、顔検出などが対象になっていた。1990年頃までは幾何的なアプローチが主であったが、その後はサポートベクターマシン（SVM）やニューラルネットワーク等の統計的な手法の研究が盛んとなっていく。

**SIFT以降**
上述したように動画像から異なる物体を認識するためには、意味的でロバストな特徴表現を動画像から得ることが重要である。回転、照明条件の違い、障害物の有無といった見た目の変化にも不変な局所的な特徴表現を学習する手法の研究が進んでいく。そうした中で2004年にスケール不変な特徴抽出手法であるSIFTが成功を収める等、研究者たちが様々な条件に不変な特徴抽出手法を提案するようになる。2001年に提案されたHaar-like featureに基づくViola–Jones object detection frameworkは、主に顔検出への応用を目的とした手法で、予め作成した弱識別機を複数組み合わせ、識別器同士で互いの弱点を補い合い全体で一つの識別機を成す。但しこれらの手法のように研究者が手で特徴抽出手法を設計することについては、非常に多様な外観を持つタスクに対して完全に対処できる特徴量を得ることは難しいし、最適である保証もないp=293とされる。

**深層学習による革新**
画像認識の分野では物体検出に限らず、上述のSIFTのような研究者がタスクの性質を分析し手作業で設計された手法が支持されていた。畳み込みニューラルネットワーク（CNN）を用いた手法は研究されていたものの、局所最適解を得られる保証がなかったり学習が収束する保証がなかったこともCNNが活用されなかった背景である。そうした状況の中、2012年にAlex Krizhevskyらが画像認識（画像分類）のコンテストであるILSVRC2012で提出したCNNを用いたシステムが、従来の画像認識システムを大幅に超える精度を記録した。このシステムでは膨大な計算量を前提とし、大量のデータをニューラルネットワークの学習に用いるという特徴がある。GPU等の技術的な計算資源の向上も相まって、深層学習の活用が現実味を帯びてきた。
画像分類タスクにおけるこうしたCNNの成功を物体検出の分野にも応用しようという動きがあり、2014年にはR-CNNと呼ばれる検出システムが発表された。これは従来から存在した物体候補領域提案（region proposal、動画像内の物体が存在しそうな領域を複数提案するもの）手法を動画像に施した後、それらの候補領域それぞれにCNNを用いてその領域に対象クラスの物体が存在するか、存在する場合にはその正確なBounding boxの座標を学習するものであった。欠点として、前段の物体候補領域の提案にはCNNを用いていないことや、後段のクラス分類でも従来の機械学習手法であるSVMを用いていること、また候補領域の提案とクラス・Bounding boxの推論という二段構造になっていることによる推論速度の遅さ等があるが、こうした欠点の存在がその後の改善手法の提案に繋がっていった。

**深層学習以降の進展**
R-CNNの発表後、その欠点を改良した検出システムが発表されていく。2014年に発表されたSPPNetは、入力として固定サイズの画像しか受け取れないというR-CNNの欠点を解消した。2015年に発表されたFast R-CNNは、事前に画像全体に対してCNNを用いて特徴抽出を行い、そこに候補領域の情報を組み合わせることで、候補領域ごとにCNNを毎回適用しなければならないというR-CNNの欠点を解消した。さらに2015年に提案されたFaster R-CNNでは、前段の物体候補領域提案の部分がボトルネックとなっていたことに注目し、新たに物体候補領域提案の部分をニューラルネットワークを用いて置き換えた（Region Proposal Network（RPN）と呼ばれる）。これによりシステム全体がニューラルネットワークを用いて学習できるようになり、大幅な高速化を達成した。これ以降も、クラス分類・Bouding boxの座標推定に加え、Bounding box内の対象物体の領域を推定するブランチを追加しimage segmentationを行えるようにしたMask R-CNN等、R-CNNから続く2ステージの検出システムは幅広く研究が進んでいる。
一方で、候補領域を予め抽出し、それについて検出・分類を行うという2ステージの検出システムは計算資源を要するため、特に携帯端末やウェアラブルデバイスといった容量や計算資源の限られた端末での応用が難しいという課題がある。そこで領域提案などを分離せず、入力からクラス分類・Bouding boxの座標推定までをエンドツーエンドで行う1ステージの検出システムの研究も進められている。2013年に発表されたOverFeatは、ILSVRC2013の検出部門にて最高記録を達成する。OverFeatは圧倒的な処理速度を達成するが、一方でその精度は2ステージの検出システムであるR-CNNには及ばなかった。その要因としてはOverFeatに用いられる全畳込みニューラルネットワーク（fully convolutional network）の学習が当時難しかったことが挙げられる。ただ、OverFeatの特徴は後発のYOLOやSSDに引き継がれた。2016年に発表されたYOLOは、画像を任意のピクセルごとのグリッドに区切り、グリッド毎に物体が存在する確率と物体が存在する場合の分類クラスを予測するというものである。YOLOは処理速度で45fpsを記録した2ステージ系のFaster R-CNNの処理速度は5fpsである。。ただしグリッド毎に予測するという性質上、2ステージのFaster R-CNNと比べると位置の正確性は低くなった。特に1つのグリッド内に複数の物体がある場合の検出力が低いという欠点がある。2016年に発表されたSingle Shot MultiBox Detector（SSD）は、Faster R-CNNに用いられたRPNの考え方を持ち込んだもので、YOLOと比較して処理速度がさらに向上するとともに、精度面でもFaster R-CNNと同等の精度を達成した。2019年に発表されたEfficientDet等、1ステージ系でありながら条件によっては2ステージ系のMask R-CNNの精度を上回るシステムも出てきている。

**手法**
Microsoft COCO testdevデータセットhttp://mscoco.orgを用いた場合の、様々な検出器の処理速度と精度の比較（全ての値は、これらのアルゴリズムの作成者による https://arxiv.orgの記事に記載されている）
物体検出の手法は一般に、従来の機械学習ベースのアプローチまたは深層学習ベースのアプローチのいずれかに分類される。従来の機械学習をベースにしたアプローチの場合、まず以下のリストにあるような手法を用いて動画像内の「特徴」を定義し、その上でサポートベクターマシン（SVM）などの手法を使用してそれらの特徴が対象物体かそうでないかを分類する必要がある。一方、深層学習を用いた手法では、「特徴」を具体的に定義せずともエンドツーエンドで物体検出を行うことができる。通常、畳み込みニューラルネットワーク（CNN）を用いることが多い。2012年に深層学習がクラス分類タスクで大きな成功を収めて以降は、物体検出においても深層学習によるアプローチが主流となっている。

**古典的な機械学習によるアプローチ**
先述したように、古典的な機械学習をベースにしたアプローチでは、まず画像から特徴量を抽出し、その特徴量を用いてマッチングを行うなどして物体を検出するp=13。以下では特に検出手法について断りがない限り、前者の「画像から特徴量を抽出する」手法について述べている。
 Haar-like featureに基づくViola–Jones object detection framework
 Haar-Like特徴量は2001年に提案された、主にface detectionに用いられる特徴量であるp=292。矩形領域内の平均輝度の差に基づく特徴量で、人間の顔の場合は一般的に鼻筋や頬が明るく、逆に目や口は暗いという共通の特徴があることに着目し、これを捉えるために画像内の明暗の差を特徴としたものであるp=292。この特徴を用いた単純な識別器を大量に生成、選別し、それらをカスケード状に接続(直列に接続すること)して顔の位置を検出する手法がHaar-Like特徴と同時に提案されている。
 Scale-invariant feature transform
画像のスケール変換や回転に不変な特徴量を抽出する手法。特徴点を検出するキーポイント検出と、検出された特徴点に対し回転不変な特徴量を記述する特徴量記述の二段構成になっているp=1109。SIFTの発表後、SIFTが抱える課題を解決するための派生手法が複数提案され、処理の高速化・省メモリ化が図られているp=1115。
 Histogram of oriented gradients
 2005年に提案された、人に共通する特徴を捉えるための特徴量p=292。SIFT同様一定領域まわりの輝度勾配に基づく特徴量であるが、SIFTが特徴点に着目するのに対しHOG特徴量は領域矩形内の輝度勾配を用いるため物体形状を表現することが可能でありp=14、label=人検出に限らず用いられているp=292。

**深層学習によるアプローチ**
深層学習を用いた物体検出器の概念図。(a)が2ステージ系の一般的な構造を、(b)が1ステージ系の一般的な構造を表している。
 領域提案（R-CNN、Fast R-CNN、Faster R-CNN 、cascade R-CNN）
 R-CNNは2014年に提案された手法であり、CNNを用いた検出器としては初めて、それまで用いられていたHOG特徴量をベースとする検出器よりも高い性能を出すことを示した。以降の深層学習を用いた様々な手法の先駆けであり、一般物体検出の進展に大きな影響を与えたp=128839。R-CNNはまず画像内から物体領域の候補となる領域を生成し、その各候補領域に対してCNNを用いて物体かどうかを判定するというものである。派生手法であるFast R-CNNやFaster R-CNNも同様の構造を引き継ぎ、ボトルネックになっていた部分にCNNを新たに適用できるようにしたり、複数回適用していた処理を一度にできるように改良したものである。
 You Only Look Once（YOLO）
2016年に発表された手法。画像全体を小さなグリッドに分割し、各グリッドに対して物体が存在するかどうかを判定する。物体が存在する場合にはその物体を囲む矩形のサイズとそのクラスを推論するp=9。処理の過程で、R-CNN系であったような物体候補領域を生成する必要がないため、入力から出力まで1ステージで行えることが特徴であるp=9。推論処理で45FPSを達成する等速度が向上したp=170473半面、小さな物体の認識が苦手であったり、異なるスケールやアスペクト比を持つ物体の認識が苦手という欠点もあるp=9。
 Single Shot MultiBox Detector（SSD）
2016年に発表された手法。YOLOが抱える課題に対応して改良された1ステージ系の手法。YOLOでは物体位置の推定にネットワークの最終層で得られる特徴量しか用いなかったのに対し、SSDでは入力に近い層の特徴量も用いたことが特徴で、より小さいサイズの物体の検出にも対応できるようになったp=10。また、複数のアスペクト比を持つ矩形内で畳み込みを行うことで、異なるスケール・アスペクト比を持つ物体の検出にも頑健になったp=9-10。
 Single-Shot Refinement Neural Network for Object Detection (RefineDet) 
2017年に発表された手法。1ステージの手法で、前半のブロックで物体の有無及びおおまかな位置を検出し、後半のブロックで具体的な物体位置やクラスまで検出する。この2ブロックは接続されており、全体としてはend-to-endで学習ができるp=170475。設計者は2ステージ型の検出器の機構を参考にしたと述べており、このように2つのステップを設けることで、より正確な位置を検出することができるp=170475。
 Retina-Net
 2018年に発表された検出モデル。検出タスクについては、検出対象となる前景よりもそれ以外の背景の出現頻度が非常に高いという特徴があり、それを解決するために、検出が難しい事例をより重視してモデルの最適化に反映するFocal lossと呼ばれる損失関数を導入したことが特徴。モデルの構造は1ステージの検出器とFeature Pyramid Network(FPN)と呼ばれる物体検出で標準的に用いられる特徴抽出器を組み合わせたもので、開発者は従来の2ステージ系の検出器と同等の精度を達成したとしている。
 Deformable convolutional networks（DCN）
 2017年に発表された手法。通常の畳み込みニューラルネットワークを用いる場合、正方形あるいは長方形であるフィルタの形状に検出能力が制約されてしまう。そこで本手法では、フィルタを変形可能なネットワークを設計し、物体検出と同時にフィルタの変形具合も学習するp=20ことで、物体の形状をより的確に認識できるようにしているp=170476。

**データセット**
機械学習においては主にモデルの学習とその評価について、label=データセットを用いるp=8。
一般に提案手法を公平に評価するため、一定の難易度があるデータセットをベンチマークとして用いることは重要である2019。また深層学習は大量の学習データを必要とするが、一般に物体検出のためのラベル付けは画像分類のラベル付けと比べると、画像に含まれる物体の種別を選択するだけでなく、その位置まで特定して描画する必要があり難易度がより高い。また、バウンディングボックスの付与はより物体領域を正確に囲うほど良いため、品質とコストの釣り合いを取ることが難しい。機械学習全体の課題として大規模なデータセットを単独で構築することが難しいということもありp=16、ラベル付けが行われた大量のデータにオンラインでアクセスできる環境が整うことで研究・開発が進むという側面もある。例えば2017年に発表された顔検出のためのデータセットであるUMD Facesというデータセットは、従来の大規模なデータセットの中には公表されていないものもあり、特に研究機関が自由にアクセスできる動画を含むデータセットを作成することを一つの目的として発表したとしている。また特に研究が盛んな特定の分野では、その分野に特有の物体を詳細にラベル付けしたデータセットが作成されることもある。
以下では一般物体検出のためのデータセットに加え、分野別のデータセットについても述べる。

**一般物体検出**
動画像に多く出現する一般的な物体を広範なカテゴリに分類して取り揃えたデータセットを紹介する。

**顔検出**
顔認識は本人認証のための生体認証技術であり、同時に軍事、セキュリティなど多くの分野に応用されている技術である。一般物体検出タスクと比較して、より広い範囲のスケールの対象物を認識する必要があること、一口に顔といってもパーツの配置や肌の色の違い等によって同じものが一つとして存在しないことといった違いがある。

**道路シーン**
物体検出の実世界への応用分野の一つとして自動運転が挙げられる。これは自動運転において、道路上の信号機や標識を認識することが必要だからである。以下では標識や信号機を含むデータセットを挙げている。

**評価指標**
物体検出システムの性能を測る指標としては、大きく2つの視点から挙げることができる。1つが処理速度であり、もう1つが精度である。特に処理速度を測る指標としてフレームパー毎秒(FPS)、精度を測る指標としてPrecision and Recallがある。以上の指標は物体検出に限らず用いられる指標であるが、物体検出に特有の数値としてJaccard index(Intersection over Union)がある。これはある推定結果と対応する正解がどの程度重なっているかを表す数値であり、完全に一致しているときには1、全く重なる部分がないときには0となる。実際の検出システムでは完全に正解と一致する結果を得ることは困難であるため、実運用評価の際にはこのIoUが一定値以上の結果を正解とみなし精度を測ることになる2019。また、適合率と再現率の他に、これらを組み合わせた平均適合率（Average Precision, AP）も用いられることが多い。推論時には推論した結果とともにどの程度の確からしさでその検出結果を得たかという指標も返されるが、この確からしさも用いて計算される指標である。適合率と再現率は一般にトレードオフの関係にある（後述）ため、双方の要素を取り込んだ平均適合率が使われる。- 適合率（Presicion）
一般に以下の式で計算される。ここで、TPは推論結果の中で実際に正解しているもの、FPは推論結果の中で実際には正解でないものの個数である。
適合率は推論結果のうち正解がどれだけ含まれているか、すなわち「どれだけ正解でないものを誤って正解と検出しないか」を表す指標である。- 再現率（Recall）
一般に以下の式で計算される。ここで、FNは検出しなかったものの実際には正解であるような見逃した個数を表す。
再現率は全ての正解として扱われるべきものの中で実際にどれだけ推論できたか、すなわち「どれだけ正解を見逃さなかったか」を表す指標である。式からも明らかであるが、見逃しを減らすためにより多くのものを検出しようとすればするほど再現率は高まるが、その分本来正解でないものを正解としてしまうパターンが増えるため適合率は下がりがちである。他方で、過検出を減らすために検出結果を絞り込むと適合率は高まるが、その分本来正解であるべきものを見逃すパターンが増えるため再現率は下がりがちである。すなわち、適合率と再現率はトレードオフの関係にある。

**課題**
本節では物体検出における課題を挙げる。なお、2020年現在物体検出の研究は深層学習を用いたものが主であり、本節で挙げる課題も深層学習を用いることを前提としているものが多い。

**回転**
DNNは入力画像に幾何的な変換を加えた場合、得られる特徴マップは不変ではない。平行移動的な幾何学変化にはある程度強いものの、回転やスケールの変化などが大きいと結果が変化してしまう。そのため、幾何的なロバスト性を獲得するために様々な手法が提案されている。回転変換へのロバスト性については、テキスト認識や航空画像からの検出といった分野では研究例があり、データセットが作成された例もある。一方で、一般物体に関する大規模データセットは回転画像を含んでいないため、一般物体についての研究は限られている。

**障害物（オクルージョン）**
実世界の画像にはしばしば、対象物体を遮蔽するような障害物が存在することがあり、対象物体からの情報を損なってしまう。対策手法として、予めオフセットを見込んだ畳み込み、プーリングを行うものが挙げられる。また、GAN等の生成ネットワークを用いて障害物を意図的に作る手法も提案されているが、オクルージョンを巡る課題はまだ解決されていない。

**画像の劣化**
画像に生じるノイズも課題の一つである。原因として、照明条件、画像圧縮によるもの、安価な端末を用いることによるもの等が挙げられる。しかしこれまで作られた大規模データセットは高画質であることが前提であり、従来手法もこれらの画像の劣化を考慮していないことが多い。
この他にも、物体検出に固有の課題として、検出対象でない「背景」に分類されるクラスが圧倒的に多くなってしまうという、クラス間での正解数のアンバランス等が挙げられるp=20。

**脚注**

**注釈**

**出典**

**参考文献**
 issn=0912-0289- issn=1883-8170- issn=1882-7810- pages=9-16- DOI=10.1109/ACCESS.2019.2939201- issn=2169-3536- doi=10.1016/j.neucom.2020.01.085

**関連項目**
 feature detection- Moving object detection- 物体認識

**外部リンク**
  Tensorflow チュートリアル 物体検出-  TORCHVISION OBJECT DETECTION FINETUNING TUTORIAL