Help us understand the problem. What is going on with this article?

【物体検出手法の歴史 : YOLOの紹介】

 本稿は,YOLO【You Only Look Once: Unified, Real-Time Object Detection】,を簡潔に紹介したものです.

 本項では,YOLOの理解をする上で物体検出の歴史を辿りながら,わかりやすく記述することを心がけました.
また,YOLOの論文の内容を忠実にお読みになりたい方は「YOLOv3 論文訳」の方をご参照ください.

※専門性があると判断した用語については日本語訳せずそのまま記述するか,()の中に元の単語を記述しています.

YOLOの名前の由来

まず,YOLOという名前の由来から見ていきましょう.
YOLOは,

“Humans glance at an image and instantly know what objects are in the image, where they are, and how they interact. "
 「人類は画像を一目見て,瞬時にそれが画像の中にある物体が何であるのか,どこにあるのか,どのように相互作用しているのかを理解する.」(YOLO原論文より引用)

というコンセプトの元提案された論文です.このコンセプトが実は名前の由来になっています.
YOLOというのはもともと"You only live once”「人生一度きり」の頭文字をとったスラングで,これをYOLOの著者であるJoseph Redmon氏は"You Only Look Once"「見るのは一度きり」という風に文字ってモデルを名付けました.つまり,このYOLOというモデルは人間のように一目見ただけで物体検出ができることが強みであるということです.

物体検出手法の歴史

 YOLOの凄さを語るには物体検出手法の歴史を知る必要があります.私は物体検出の歴史には以下の3つの時代があると考えています.
・【sliding window approach時代】:Deformable Parts Models(DPM)
・【region proposal method + deep learning時代】:R-CNN,Fast R-CNN
・【end-to-end時代】:Faster R-CNN, YOLO, SSD
以下でそれぞれを解説していきます.
※前提として補足しておくと,物体検出では物体らしい領域を見つける「検出」の部分と,見つけた領域に対して何の物体かの判断を行う「識別」の部分があり,これら2つから物体検出が成り立っています.この前提を踏まえて以下の説明を読んでいただくとよりわかりやすいと思います.

【sliding window approach時代】

 Sliding window approachとは以下の図のように画像の左上から右下にかけてウィンドウをスライドしていき,画像のすべての領域をウィンドウで探索し検出していきます.そして逐一,ウィンドウ内の物体に対して識別処理を行い,対象物体であるかの判定を行う手法です.
Qiita

https://www.pyimagesearch.com/2015/03/23/sliding-windows-for-object-detection-with-python-and-opencv/

【region proposal method+deep learning時代】

 Region proposal methodとはR-CNNなどで使われている手法で,物体らしさ(Objectness)の高い領域を見つける手法であるSelective Searchなどがそれに当たります.画像中からRegion proposal methodで物体と思われる領域を検出して,それをdeep neural networkの入力として識別処理を行うという,2段構えで物体検出を行っていました.しかしRegion proposal methodで抽出した領域全てをdeep neural networkの入力とするため,かなりの時間がかかる手法でした.
Qiita

【end-to-end時代 】

 End-to-end時代では,前述したregion proposalがdeep neural networkの一つのレイヤーとして組み込まれた物体検出手法が登場しました.つまり,色々な物体を含んだ1枚の画像をdeep neural networkに入力するだけで検出識別を一貫して行う夢のような物体検出手法として注目を集めました.最初から最後までdeep neural networkが処理を行ってくれるという意味でend-to-endな物体検出手法と呼ばれています.有名な文献の中ではFaster R-CNNが初めてこのend-to-endの物体検出手法を実装しました.end-to-endにすることにより物体らしさ(Objectness)の高い領域を抽出する際にもdeep neural networkによる最適化の恩恵が受けられるため,より高速で高精度な検出手法が可能となりました.そして,本稿のメイントピックであるYOLOもこのend-to-end時代の手法です.

Qiita

YOLOとはどんな手法か

 上記の前提を読んでいただいてようやくYOLOとは何かの説明ができます.End-to-end時代の先駆けとなったFaster R-CNNでは,図のようにRegion proposal Networkを通った後に識別(Classification)を行っています.つまり,「検出」の処理の後に「識別」の処理を行うような直列な処理構成になっており,このことが処理速度の遅延を招いているのです.
 そこでYOLOでは「検出」と「識別」を同時に行うことで,この処理時間の遅延を解消しようとしました.

YOLOの処理手順

 ここではYOLOがどのように同時に「検出」と「識別」を行っているのかをアルゴリズムに基づいて解説します.
Qiita

1.入力画像を$S×S$のグリッドセルと呼ばれる領域に分割します.
2.
 ①それぞれのグリッドセルについて$B$個のバウンディングボックス(boundhing box)と信頼度スコア(confidence score)を推測します.信頼度スコアとは,どれくらいボックスが物体を含んでいて,どのくらいの精度でボックスがそれを予測したかというモデルのことです.ここで信頼度スコアを${Pr(Object)*IOU^\truth_\pred}$と定義します.(※IOUの解説
上記の式では物体がグリッドセルに存在しなければ信頼度スコアは0になります.

 ②それと同時にそれぞれのグリッドセルは$C$個の物体クラスそれぞれの条件付きクラス確率(conditional class probabilities)である$Pr(Class_i|Object)$を表します.

3.その後,「条件付きクラス確率」と「個々のボックスの信頼度スコア」をそれぞれ掛け合わせて,それぞれのバウンディングボックスの「クラス固有の信頼度スコア(class-specific confidence scores)」を得ることができます.このスコアはボックスに表示されるそのクラスの確率予測されたボックスがある物体にどのくらいフィットしているかをエンコードします.つまりこの信頼度スコアに基づいてどのバウンディングボックスがお目当の物体を検出しているかを判断するわけです.

クラス固有の信頼度スコアの計算
$Pr(Class_i|Object)*Pr(Object)*IOU^\truth_\pred$

このように「検出」と「識別」を同時進行で行なっているわけですね.

YOLOのアドバンテージとディスアドバンテージ

ここでYOLOのアドバンテージとディスアドバンテージを述べておきたいと思います.

アドバンテージ

1.シンプルなネットワーク構成で高速:Titan X GPUを用いて45fps,高速なバージョンであるFast YOLOだと150fps以上.他のリアルタイムシステムの2倍のmAP(mean average precision)を示す.

2.背景と物体の区別がしやすい:Fast R-CNNではRegion proposalで抽出した領域のみのコンテキストしか見れないため背景と判断すべき領域を間違うことがあったが,YOLOは画像全体を見るので、クラス(物体の種類)とその外観に関するコンテキスト情報を暗黙的にエンコード(暗号化)するので背景の間違いが少ない.当時トップの検出手法であったFast R-CNNと比較して,YOLOは半分以下の背景エラーであった.

3.一般化が可能:花などの自然の画像を学習させて,アート作品のような絵の画像でテストした場合,YOLOはDPMやR-CNNよりもはるかに優れている.

ディスアドバンテージ

1.最先端の手法と比較して精度が低い.
2.小さな物体の検出が困難.

【Abstract日本語訳】

最後にAbstractの日本語訳を示して終わりにしたいと思います.

 我々は物体検出のための新しいアプローチであるYOLOを提案する.物体検出における先行研究は検出を行うためにclassifierを再利用(repurpose)する.代わりに,我々は空間的に分離されたbounding boxesと関連するclass probabilitiesへの回帰問題(regression problem)として物体検出を構成する.Single neural networkはある評価においてfull imageからbounding boxesとclass probabilitiesを直接予測します.全体のdetection pipelineがsingle networkなので,検出においてend-to-endで直接最適化することができる.
 我々の統合されたアーキテクチャはかなり速い.我々のbase YOLO modelは45fpsのリアルタイムで画像を処理する.類似のnetworkバージョンであるFast YOLOは他のリアルタイム検出器(detector)の2倍のmAPを誇る一方で,155fpsという驚異的な速さで処理する.最先端の(state-of-the-art)検出システムと比較すると,YOLOはlocalization errorsをより多く発生させるが,背景においてfalse positivesを予測しうる.最終的にYOLOはとても一般的な物体の表現(representations)を学習する.自然画像(natural images)からアート作品などの他の領域(domain)まで一般化した時,YOLOはDPMやR-CNNを含む他の検出手法より優れている.

以上,YOLOを物体検出の時代背景と絡めて紹介しました.本稿ではNetworkなどの解説は行っていないので,そちらの方は別のサイトを参照お願いします.

本稿に度々出てくるIoU,mAPの説明は「【物体検出】mAP ( mean Average Precision ) の算出方法」へどうぞ.

P.S.

画像処理,機械学習,自動運転などをメインに(たまにそれ以外も)発信しているのでぜひこのQiitaと twitterのフォローおねがいします.

mdo4nt6n
東大M2/ 制作展2018: -The world line-/ 未踏IT2018クリエイター/ 興味:センシング×機械学習【物体検出🎥・自動運転🚙・スマホドラレコ物体検出etc.】/ 姓にちなんで魚介が大好物🐟
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした