DEEP LEARNING JP [DL Papers]
“YOLO9000: Better, Faster, Stronger” (CVPR’17 Best Paper)
And the History of Object Detection
Makoto Kawano, Keio University
http://deeplearning.jp/
1
書誌情報
• CVPR2017 Best Paper Award
• Joseph Redmon, Ali Farhadi(ワシントン大学)
• 選定理由:
• YOLOという前バージョン(同じ著者たち+α)の存在を知っていた
• バージョンアップして,ベストペーパーに選ばれたことを耳にしたから
• この論文を中心に物体検出の歴史みたいなものを話します
• R-CNN(2014)~Mask R-CNN(2017)
• R-CNN, SPPNet, Fast R-CNN, Faster R-CNN, YOLO, SSD, YOLO9000, (Mask R-CNNのさわりだけ)
• ほとんど触れたことがない分野で,宣言したことをものすごく後悔
• 結構独断と偏見に満ち溢れているので,間違ってたら指摘お願いします
2
3
アジェンダ(歴史)
• NOT End-to-End Learning時代(2013~2015年)
• R-CNN(CVPR’14, 2013/11)
• SPPNet(ECCV’14, 2014/6)
• Fast R-CNN(ICCV’15, 2015/4)
• End-to-End Learning時代(2015年~現在)
• Faster R-CNN(NIPS’15, 2015/6)
• YOLO(2015/6)
• SSD(2015/12)
• YOLO9000(CVPR’17, 2016/12)
• Mask R-CNN(2017/3)
4
アジェンダ(歴史)
• NOT End-to-End Learning時代(2013~2015年)
• R-CNN(CVPR’14, 2013/11) Girshickら(UCバークレー)
• SPPNet(ECCV’14, 2014/6) Heら(Microsoft)
• Fast R-CNN(ICCV’15, 2015/4) Girshick(Microsoft)
• End-to-End Learning時代(2015年~現在)
• Faster R-CNN(NIPS’15, 2015/6) He+Girshickら(Microsoft)
• YOLO(2015/6) Redmon+Girshickら(ワシントン大学+Facebook)
• SSD(2015/12) Google勢
• YOLO9000(CVPR’17, 2016/12) Redmonら(ワシントン大学)
• Mask R-CNN(2017/3) He+Girshickら(Facebook)
世界は3人(1人)に振り回されている
5Kaiming He
Ross Girshick
Joseph Redmon
伝授?
アジェンダ(系譜?)
6
Fast R-CNN
R-CNN
SPPnet
YOLO Faster R-CNN
SSD
YOLO9000
Masked R-CNN
NOT End-to-End learning時代
End-to-End learning時代
2013年
2015年6月
インスタンス検出時代突入?
そもそも物体検出とは
• CVタスクの一つ
• 与えられた画像の中から,
物体の位置とカテゴリ(クラス)を当てる
• 基本的な流れ:
1. 画像から物体領域の候補選出(Region Proposal)
枠, Bounding Boxとも呼ばれる
2. 各枠で画像認識
多クラス分類問題
7
物体検出の二つの時代
• Not End-to-End Learning時代
• 1.領域候補(Region Proposal)と2.物体認識(分類)を別々に行う
• 物体認識で強かったCNNを取り入れてすごいとされた時代
• End-to-End Learning時代
• 1.と2.の処理を一つのニューラルネットワークで済ませる
• 精度向上・速度向上を目指す時代
8
Region Proposal Methods
• Selective Search[]やEdgeBoxes[]など いずれも計算量が膨大
• SSの場合,ピクセルレベルで類似する領域をグルーピングしていく
• 似たような特徴を持つ領域を結合していき、1つのオブジェクトとして抽出する
9
Regional-CNN
• 物体の領域を見つける
• 領域をリサイズして,CNNで特徴抽出
• SVMで画像分類
Selective Search Object Classification 10
R-CNNの欠点
• 各工程をそれぞれで学習する必要がある
• 領域候補の回帰
• CNNのFine-tuning
• SVMの多クラス分類学習
• テスト(実行)時間が遅い
• Selective Search:1枚あたり2秒くらい
11
SPPnet
• この時代のCNNは入力画像サイズが固定
• R-CNNもリサイズしていた
• 領域候補全て(2000個)に対してCNNは遅い
• Spatial Pyramid Poolingの提案
• 様々なH×Wのグリッドに分割してそれぞれでMaxpooling
• Pros.
• 高速化に成功
• Cons.
• SPPのどれを逆伝搬すればいいかわからない
• 全層を通しての学習はできない
12
Fast R-CNN
• 物体検出のための学習を可能にした
• SVMの代わりにSoftmaxと座標の回帰層
• Region on Interest Pooling Layerの導入
• Selective Searchなどで出てきた領域をFeature Mapに射影する
• H×Wのグリッドに分割して,各セルでMaxpoolingする
• Spatial Pyramid Pollingレイヤーの一種類だけと同じ
• 個人的に5.4. Do SVMs outperform softmax? という節の貢献大の印象
• Pros.
• 学習とテスト両方で高精度・高速化を達成
• Cons.
• 依然としてSelective Searchなど領域候補選出は別のアルゴリズム
13
End-to-End Learning時代の幕開け
• どんなにCNN側が速くなったり,性能が良くなったりしても,
Selective Searchを使っている限り未来はない
• Region ProposalもCNN使えばいいんじゃない??
• Faster R-CNNとYOLOの登場
• Faster R-CNN: 2015/6/4
• YOLO: 2015/6/8
• どちらもお互いを参照してない
• でも共著に同じ人いる,,,
14
Faster R-CNN
• Region Proposal Network(RPN)+Fast R-CNN
• 各Feature Mapのピクセル?に対して9種類の領域候補を出す
• FeatureMapをFCNに入力するイメージ
• FCN:W×H×クラス数
• RPN:w×h×( ((物体orNOT)と座標)×k(=9) )
15
YOLO: You Only Look Once
• R-CNN系は領域候補を出した後に分類していた
• 両方同時にやったらいいのでは YOLOの提案
• 入力画像をグリッドに分割
• 各グリッドのクラス分類
• 各グリッドで2つ領域候補
16
YOLO: You Only Look Once
• アーキテクチャはものすごく単純
• GoogLeNetを参考にしたCNN 各グリッドのクラス分類と座標を算出する
17
λcoord
S2
X
i=0
BX
j=0
1lobj
ij
⇥
(xi − ˆxi)2
+ (yi − ˆyi)2
⇤
+ λcoord
S2
X
i=0
BX
j=0
1lobj
ij
"
⇣p
wi −
p
ˆwi
⌘2
+
✓p
hi −
q
ˆhi
◆2
#
+
S2
X
i=0
1lobj
ij (pi(c) − ˆpi(c))
2
+
S2
X
i=0
BX
j=0
1lobj
ij
⇣
Ci − ˆCi
⌘2
+ λnoobj
S2
X
i=0
BX
j=0
1lnoobj
ij
⇣
Ci − ˆCi
⌘2
座座標標のの誤誤差差
信信頼頼度度のの誤誤差差
分分類類誤誤差差
YOLO: You Only Look Once
• Pros.
• Faster R-CNNに比べると精度は劣るが,検出速度は速い
• 45FPS-155FPS
• CNNに画像全体を入れるため,背景との見分けはFast R-CNNより良い
• Cons.
• 各グリッドにつき1クラスのため,
複数物体が1グリッド内にあるとだめ
18
• YOLOをStraightForwardに改良したバージョン
• ①②③:ネットワークのアーキテクチャを改良
• ④:出力をLinearではなく,FCNにした(Faster R-CNN参考)
• ⑤⑥:データを複数解像度で与える
• ⑦⑧:データの事前情報
①①
②②
③③
④④
⑤⑤
⑥⑥
⑦⑦
⑧⑧
YOLOv2
YOLOv2
• アーキテクチャの工夫
• ①全Conv層にBatch Normalizationを入れる
• 収束を速くし,正則化の効果を得る
• ②新しい構造Darknet-19にする
• VGG16のように3×3のフィルタサイズ
• Network In NetworkのGlobal Average Poolingを使う
• ③Passthroughを入れる(わからない)
• add a passthrough layer from the final 3 × 3 × 512
layer to the second to last convolutional layer
20
YOLOv2
• データの事前情報
• 良さげなBounding boxの大きさや数を学習データから得る
21
YOLOv2
• 出力はFeature Mapの各ピクセルにつき(whxyとクラス)×5
• 学習は以下の手順:
• 1.画像分類の学習
• 最初に224×224で学習させた後,448×448で学習させる
• 2.物体検出の学習
• {320, 352, … 608}ピクセルの画像を10エポックごとにランダムに変えて学習させる
• CNNで入力画像は32分の1になるため,その倍数ピクセルを扱う
22
SSD
• FCNで,クラスと座標の出力を毎回行う
• 各Conv層はk×(c+4つの座標)のフィルタサイズになる
23
YOLOv2
• 基本的には概ね既存手法よりも高精度・高速
24
YOLO9000
• 物体検出用のデータセットのカテゴリは少ない
• アノテーションコストが高すぎる
• ImageNetのカテゴリとかを使えたらいいのでは?
• Distant Supervision的な?
• WordNetを使えば拡張できる!
• 有向グラフで構築されている≠木構造
25
YOLO9000
• ImageNetのvisual nounでWordTreeを構築
• 条件付き確率で表現可能に
26
YOLO9000
• ImageNet検出タスク
• COCOにある44カテゴリを共有している
• ほとんど分類用で,検出用データはほとんど学習できていない
• 残りの156カテゴリでは16.0mAP,全体で19.7mAP
• 結果の考察:
• COCOに含まれている動物はうまく推定できている
• 含まれていない服装はできない
27
Mask R-CNN
• 物体検出だけではなく,インスタンス検出だった
• 体力があればやります
28

[DL輪読会]YOLO9000: Better, Faster, Stronger