113 Views
August 03, 17
スライド概要
2017/8/4
Deep Learning JP:
http://deeplearning.jp/seminar-2/
DL輪読会資料
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
アジェンダ(歴史)世界は3人(1人)に振り回されている • 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年~現在) Ross Girshick 伝授? • 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) Kaiming He Joseph Redmon 5
アジェンダ(系譜?) 2013年 R-CNN NOT End-to-End learning時代 SPPnet Fast R-CNN 2015年6月 End-to-End learning時代 YOLO Faster R-CNN SSD YOLO9000 インスタンス検出時代突入? Masked R-CNN 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 2 coord S X B X i=0 j=0 + S2 X B X i=0 j=0 1lobj ij obj ⇥ 1lij ⇣ Ci 2 + S X 1lobj ij (pi (c) (xi − x̂i )2 + (yi − ŷi ) Ĉi ⌘2 ⇤ 2 2 + 座標の誤差 2 + noobj S X B X 1lobj ij i=0 j=0 1lnoobj ij i=0 j=0 信頼度の誤差 p̂i (c)) coord S X B X ⇣ Ci Ĉi " ⇣p q ◆2 p ⌘2 ✓p wi − ŵi + hi − ĥi # ⌘2 2 i=0 分類 誤 差 17
YOLO: You Only Look Once • Pros. • Faster R-CNNに比べると精度は劣るが,検出速度は速い • 45FPS-155FPS • CNNに画像全体を入れるため,背景との見分けはFast R-CNNより良い • Cons. • 各グリッドにつき1クラスのため, 複数物体が1グリッド内にあるとだめ 18
YOLOv2 • YOLOをStraightForwardに改良したバージョン • ①②③:ネットワークのアーキテクチャを改良 • ④:出力をLinearではなく,FCNにした(Faster R-CNN参考) • ⑤⑥:データを複数解像度で与える • ⑦⑧:データの事前情報 ① ⑤ ④ ⑦ ⑧ ② ③ ⑥
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