【苦しみながら理解する深層学習】You Only Look Once: Unified, Real-Time Object Detection

泣く子も黙るYOLOを、泣く子をあやす私が読みました。


どんなもの?

シンプルでどんな画像からでも学習できる。
分類結果の損失関数を使い学習する。
Fast YOLO(ネットワークが小さい版)は最速の物体検出が可能なため、リアルタイムでの物体検出が可能。

先行研究と比べてどこがすごい?

YOLOの物体検出はbounding boxとclassの確率の回帰問題と設定している。
1つのニューラルネットワークを使ってbounding boxとclassの確率を予測する。

処理早い

具体的には1秒間に45フレームを処理できる。
Fast YOLOは1秒間に155フレーム処理できる。

俯瞰した予測ができる

window slidingやregion proposal-based techniquesではなく、画像全体をみて分類する。

抽象的な学習ができる

画像で学習して、絵で検出する能力が他の手法より精度が高い。

技術や手法のキモはどこ?

全体像

fig2

inputする画像をS x Sのグリッドで区切る。

  1. それぞれのグリッドからbouding boxと物体である可能性を検出する。
    fig2でいうところのBounding boxes + confidenceのことで、confidenceはPr(Object) ∗ IOUtruthpredで表される。
    IOUはintersection over unionの略で(ここ)[http://kenbo.hatenablog.com/entry/2018/04/27/124749]の説明が参考になる。
    全てのbouding boxは、中心を表すx, y、縦横を表すw, h、そしてconfidenceで構成される。

  2. それぞれのグリッドの物体であり、分類の種類の確率(何に分類されるか。犬など。)
    fig2でいうところのClass probability mapで、bouding boxがgridの上にいくつかあったとしても、1つの分類の可能性しか推測しない。

1と2はまとめると式1のようになる。

formula1

グリッドをS x S、グリッドで予測されるBounding boxの数をB、分類の種類の可能性をCとすると、予測されるtensorはS x S x (B * 5 + C)になる。
この5はx, y, w, h, confidence

ネットワーク

fig3

畳み込み層が24層の後に、全結合層が2層。
Fast YOLOでは畳み込み層を9層とした。
最終的な出力は7 x 7 x 30。

学習方法

Imagenetの1000classのdatasetで事前学習をしている。
事前学習にはfig3の20層までと、Average Pooling Layer、そして全結合の層を使います。
Average Pooling Layerに関してはこちらを。不要ですか。

精度を上げるために、bouding boxのサイズを間違えたときの損失を増やして、bouding boxに何も含まないのに含むと推測した損失を減らした。
λ{coord}とλ{noobj}としてパワメータを加えた。このペーパーではそれぞれ5と0.5を使っている。

formula3

どうやって有効だと検証した?

Deformable parts models(DPM)、R-CNN、Other Fast Detectors、Deep MultiBox、OverFeat、MultiGraspと比較した。

議論はある?

bounding boxを1つのセルに対して2つしか適用していない。
大きなオブジェクトに対する小さな検出漏れと、小さなオブジェクトに対する同じサイズの検出漏れを同等の損失と捉えてしまう。

次に読むべき論文は?

YOLOv2

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です