MachineLearning
DeepLearning
論文
YOLO
YOLOv3

YOLOv3論文訳

SSDの3倍早いことで今流行りのYOLOv3の実装にあたって論文を読むことがあると思いますので,簡単な日本語訳でまとめました.詳しくは無心で元論文を読むことをお勧めします.
Qiita

・元論文(yolov3):https://arxiv.org/abs/1804.02767
・少し概要書いてるサイト:https://sosogu.net/2018/04/05/新しくなったyolov3を使ってみよう/
・コード元:https://pjreddie.com/darknet/yolo/

Abstract

 ネットワークは前より少し膨張したが,精度は良くなったので心配はするな.
320x320だとSSDの3倍早い.(YOLOv3:22ms,28.2mAP)(SSD:61ms,28.0mAP)
[webサイトの方にはGPUはPascal Titan x,データセットはCOCO Test-devと書いている.https://pjreddie.com/darknet/yolo/]
※あとmAP は Mean Average Precision(https://petitviolet.hatenablog.com/entry/20110901/1314853107)
 のことらしい.

古いけどThe threshold of the Intersection-over-Union (IoU どうやら報酬関数の一種らしい) ratioが0.5では(https://arxiv.org/pdf/1512.04412.pdf),YOLOv3はかなりいい.
データセットTitan Xにおいて51msで57.9AP50を達成した.比較したのはRetinaNetで198msで57.5AP50YOLO3はこれに比べて3.8倍はやい.

1.Introduction

 誰だって気が乗らなくて1年くらい手を引くってことあるよね?本当に今年全然研究してなかった.そんでたくさんの時間をTwitterに使った.後少しGANsってやつで遊んだかな.
昨年からの残りの勢い[12][1];YOLOを少し変えたよ.しかし正直なところ,超面白くはなくて,YOLOをよりよくする少しの変更を行ったんだ.そして,他の人の研究の手伝いもしてたかな.
実際,それが今日私たちにもたらすものだ.我々はcamera-ready deadline(最終版投稿締め切り)[4]を持っている.

2. The Deal

 YOLOv3の取り扱い:我々は他よりもいい新しい識別ネットワークを学習した.システム全体を最初から見直すだけで、すべてを理解できるようになります。

図1のキャプション
我々は損失関数の論文[9]からこの図を採用した.YOLOv3はかなりはやいことがわかる.M40またはTitanXからの時間は基本的に同じGPU.

2.1. Bounding Box Prediction

 YOLO9000に続いて、我々のシステムは、次元クラスタをアンカーボックスとして使用するバウンディングボックスを予測する[15].
そのネットワークはバウンディングボックスの4つの座標を予測する( tx, ty, tw, th).
セルが画像の左上隅から(cx、cy)だけオフセットされていて、先行する境界ボックスが幅と高さpw、phを持つ場合、予測は次のように対応します。
$$b_x =σ(t_x)+cx$$
$$b_y =σ(t_y)+cy$$
$$b_w =p_we^{t_w}$$
$$b_h = p_he^{t_h}$$

 学習している間,自乗誤差損失(squared error loss )の合計を使う.もしいくつかの座標予測のためのground truthがtˆならば,我々のgradientはground truth value(ground truth boxから計算された)マイナス我々の予測:(つまり) tˆ− tになる.
このground truth valueは上式を逆転させることによって簡単に計算することができる.
 YOLOv3は,ロジスティック回帰を使って,それぞれのバウンディングボックスのためのobjectness scoreを予測する.バウンディングボックスが事前に他のバウンディングボックスよりもグラウンドトゥルースオブジェクトをオーバーラップさせる場合、これは1になります。

図2 dimension priorsを用いたバウンディングボックスと位置予測
我々はボックスの幅と高さをクラスタ重心からのオフセットとして予測する.我々はシグモイド関数を用いたフィルタアプリケーションのロケーションに関連してボックスの中心座標を予測する.この図は紛れもなく[15]から剽窃したものである.

もし先行するバウンディングボックスが最良ではないが、グラウンドトゥルースオブジェクトとある閾値以上重なっている場合、我々は[17]に従って予測を無視する。我々は0.5の閾値を用いる.[17]とは異なり,我々のシステムは1つのバウンディングボックスがそれぞれのground truthに対して事前に割り当てられるだけである.もしバウンディングボックスがground truth objectに事前に割り当てられないならば,それは物体らしさ(objectiveness)だけでなく座標損失がないかもしくはクラス予測がないことを被ります.

2.2. Class Prediction

 それぞれのボックスはバウンディングボックスが含むかもしれないクラスをmultilabel classificationを用いて予測します.それがgood performanceの役に立たないとわかったので我々はsoftmaxをつかわない,代わりに,我々はindependent logistic classifierを単に使う.学習の間,我々は クラス予測のためのbinary cross-entropy lossをつかう.
 
 このformulation(公式化)はいつ我々がOpen Images Dataset[7]のようなより複雑なdomainsへ動かすかを助ける.
このデータセットではたくさんの重なったlabels(例えばWoman and Person)がある.Soft maxを使うことはそれぞれのボックスが実際に頻繁にそのケースに当てはまらない一つのクラスがあるという仮定を課します.Multilabel approachはデータをよりよくモデリングします.

2.3. Predictions Across Scales

 YOLOv3は3つのことなるスケールでボックスを予測する.我々のシステムはピラミッドネットワーク特徴に類似のコンセプト[8]を用いて,それらのスケールから特徴を抽出する.我々の基本の特徴抽出器から我々はいくつかのconvolutional layersを加える.それらの最後はバウンディングボックスやpbjectnessやclass predictionsをencodingしている3-d tensor を予測する.COCO[10]を用いた我々の実験では,我々は3つのboxをそれそれのスケールで予測するので,4つのバウンディングボックスオフセットと1つのobjectness予測と,80class予測のためのtensorはNxNx[3*(4+1+80)]である.
 次に我々は2レイヤー前から特徴マップをとってそれを2xによってupsampleする.我々はまた,より早くネットワークの中から特徴マップを取得し,それをconcatenationを用いて,我々がupsampleした特徴と合わせる.この手法は我々がより有意義なセマンティック情報をupsampleした特徴から得ることを許し, finer-grained(きめ細かい)情報をより早く特徴マップから得ることを許す.それから我々はさらにいくつかconvolutuonal layerをこれの組み合わさった特徴マッププロセスに加えて,今はtwice the sizeだけれども.最終的に類似のtensorを予測する.
 我々は同じデザインをもう一度最終スケールのためのボックスを予測するために行う.したがって、第3スケールの予測は、ネットワークの初期段階からのすべての事前計算および細かいフィーチャから利益を得ます。
 我々は我々のバウンディングボックスproprsを決めるためにまたk-means clusteringを使う.私たちは、9つのクラスターと3つのスケールを任意に選んでクラスターをスケール全体に均等に分割します。COCOdatasetでは9クラスタは(10×13),(16×30),(33×23),(30×61),(62×45),(59× 119), (116 × 90), (156 × 198), (373 × 326).

2.4. Feature Extractor

我々は特徴抽出をするための新しいネーットワークを使う.我々の新しいネットワークはYOLOv2,Darknet-19,と気を衒った残りのネットワークスタッフのなかで使われたネットワークの間のハイブリットアプローチである.我々のネットワークは連続的な3x3と1x1のconvolutional layersを使う,しかし今はいくつかのショートカットコネクションを使い,それは著しく大きい.それは 53convolutional layersを持つ.なので我々はそれをDarknet-53と呼ぶ.

表1 Darknet-53

 この新しいネットワークはDarknet-19よりもっとパワフルなだけでなく,ResNet-101やResNet-152より効率的である.ここでいくつかのImageNetの結果を示す.

表2 バックボーンの比較
かなり多くのoperations, floating point operations per second, FPS for various networksなど様々なネットワークの精度.

それぞれのネットワークは全く同じセッティングで学習され,256x256のsingle crop accuracyでテストされた.Run timesは256x256でのTItan Xにおいて測定された.このためDarknet-53はpar(parってなんだろう??)においてstate-of-the artな識別器を用いるだけでなく,より少ない浮動小数点operationsとより速い速度を持ってパフォームした.Darknet-53はResNet-101よりも良く,1.5倍速い.Darknet-53はResNet-152と似たパフォーマンスを持ち,2倍速い.
 DarkNet-53は1秒あたり最も高い浮動小数点operationsを記録した.これはネットワーク構造がよりGPUを使うことを意味しており,それをより効率的に評価するため速い.それはほとんどResNetsが多すぎるlayersを持ち,全く効率的ではないためである.

2.5. Training

我々はhard negative miningやそのstaffを全く使うことなくfull imagesにおいても学習する.我々はmulti-scake学習,大量のデータ増大,batch normalization, すべてのstandard stuffを使う.我々は学習とテストのためにDarknet neural network framework[14]を使う.