takuroooのブログ

勉強したこととか

You Only Look Once: Unified, Real-Time Object Detection(CVPR2016)

ObjectDetection関連の論文メモ
図は論文からの引用

目次

概要

従来の2stageの物体検出手法とは異なり、バウンディングボックス予測とクラス認識を同時に行い、リアルタイムに動作するsingle networkの提案。

論文リンク

https://arxiv.org/pdf/1506.02640.pdf

著者

  • University of Washington
    • Joseph Redmon
    • Santosh Divvala
    • Ali Farhadi
  • Facebook AI Research
    • Ross Girshick

従来の課題

  • 従来手法で性能が高いR-CNN系は構成が2stageになっているため速度が遅い。
    • まずオブジェクトが存在しそうな領域を抽出し、抽出した各領域をに対してクラス分類を行う。
    • 抽出した領域の数だけCNNを動作させるので処理時間が長くなる。

提案手法

ネットワーク構成

f:id:takuroooooo:20190629183925p:plain

  • 24層のConv layers + 2層のfully connected layers
  • 活性化関数は、最終層以外はleaky ReLUを採用
  • 解像度が高い方が物体検出に有利になるので入力は448x448

検出方法

f:id:takuroooooo:20190629185707p:plain f:id:takuroooooo:20190629184603p:plain

  • 入力画像をSxSのグリッドに分割(論文では7x7)
  • 各グリッドに対してB個のバウンディングボックス情報を予測。バウンディングボックス情報は座標(x,y,w,h)とオブジェクトの中心座標を含んでいるかのスコアで構成される。
    • xとyはグリッドの左上からバウンディングボックスの中心座標までのオフセットを表現(レンジは0-1)
    • wとhは入力画像のWidthとHeightで正規化されたバウンディングボックスの大きさを表現(レンジは0-1)
    • スコア=Pr(Object) * IOUtruth-pred 物体が存在しない場合はスコア=0
  • 各グリッドのクラスの確率を予測。
    • 1つのグリッドにつき1つのクラスしか割り当てられない。
  • Non-maximal suppressionによって重複したバウンディングボックスを削除

ロス関数

f:id:takuroooooo:20190629185958p:plain

  • ロス関数は計算が簡易な二乗誤差を採用
  • 大きなバウンディングボックスのずれよりも小さなバウンディングボックスのずれのほうが重要。なので、wとhは平方根で誤差を計算する。平方根を使うことで大きい値のときの誤差が小さくなる。
  • 論文ではλcord=5 λnoobj=0.5を設定。これはほとんどのグリッドにオブジェクトの中心が含まれないため、オブジェクトの中心が含まれないロスの影響を小さくするための対策。

結果

f:id:takuroooooo:20190630121727p:plain f:id:takuroooooo:20190630121745p:plain f:id:takuroooooo:20190630121753p:plain

  • Fast R-CNNと比べてlocalization errorが高いが、background errorが低い。
  • Fast R-CNNは画像の一部分だけで推論するのに対して、YOLOは画像全体を見て推論するためackground errorが低くなる。

f:id:takuroooooo:20190630121936p:plain

参考リンク

Introduction to YOLO detection model