introduction to yolo detection model

36
ディープラーニングの最新動向 物体検出編① YOLOモデル 2017/1/13 株式会社ウェブファーマー 大政 孝充

Upload: -

Post on 15-Apr-2017

660 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Introduction to YOLO detection model

ディープラーニングの最新動向 物体検出編① YOLOモデル

2017/1/13 株式会社ウェブファーマー

大政 孝充

Page 2: Introduction to YOLO detection model

今回取り上げるのはこれ

[1] J Redmon, et al.”You Only Look Once: Unified, Real-Time Object Detection”arXiv:1506.02640v5 9 May 2016. 物体検出において、1つのモデルで矩形の候補領域と分類を同時に行うことで早い速度を達成した!

Page 3: Introduction to YOLO detection model

解説のポイント

①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?

Page 4: Introduction to YOLO detection model

解説のポイント

①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?

Page 5: Introduction to YOLO detection model

Detectionの従来手法は

例えばR-CNNだと・・・

画像から矩形領域の候補を多数選び出し(sliding window)、このそれぞれをCNNにかける →時間がかかるしスマートじゃない

Page 6: Introduction to YOLO detection model

Detectionの従来手法は

人間はひと目見ただけで物体の分類と位置の推定を行っている。

このような仕組みができないだろうか・・・

手前に犬、その後ろに自転車、右奥に車がある!

Page 7: Introduction to YOLO detection model

解説のポイント

①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?

Page 8: Introduction to YOLO detection model

手法全体の流れ

Page 9: Introduction to YOLO detection model

出力 ①

l  画像全体を    個のセルに分ける l  それぞれのセルは  個の矩形領域を保持する

S × S

S

S

B

B = 3 の場合0.44

0.71 0.08

信頼度:Pr Object( )∗ IOUpredtruth

= Pr Object( )∗ pred∩ truthpred ∪ truth

B1 B2

B3

Page 10: Introduction to YOLO detection model

出力 ②

l  それぞれの矩形領域は中心座標    、矩形の大きさ    、信頼度  を保持する

x, y( )

S

S

h,w( ) F

B1 = x1, y1,h1,w1,F1( )x1, y1( ) h1w1

Page 11: Introduction to YOLO detection model

出力 ③

l  それぞれのセルはクラスごとにそのクラスである確率   も推測する C

S

S

C = Pr Class |Object( )

C1 = Pr Class |OO( ) = 0.14ex)分類が3つの場合

C2 = Pr Class |OO( ) = 0.74車

C3 = Pr Class |OO( ) = 0.12犬

Page 12: Introduction to YOLO detection model

推論の流れ

l  7×7 個のセルがそれぞれ 2 個の矩形候補領域を出力する

l  信頼度 F を太さで表現

B x, y,h,w,F( )

Page 13: Introduction to YOLO detection model

推論の流れ

閾値で信頼度 F の高いものだけ採用

B x, y,h,w,F( )

Page 14: Introduction to YOLO detection model

推論の流れ

対応セルにおける確率の高いクラスと照らし合わせて、矩形領域のクラスを決定

B x, y,h,w,F( )

C = Pr Class |Object( )

Page 15: Introduction to YOLO detection model

モデルのアーキテクチャ

l  24層の畳み込みのあと、2層の全結合

Page 16: Introduction to YOLO detection model

解説のポイント

①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?

Page 17: Introduction to YOLO detection model

事前学習

まず最初に入力側conv20層までをImageNetデータで事前学習した。

これでGoogLeNetに比肩する性能を獲得した

Page 18: Introduction to YOLO detection model

本学習

l  この事前学習した部分にconv4層と全結合を追加した l  活性化関数は出力層がReLu、他がLeakly Relu

Page 19: Introduction to YOLO detection model

出力マップ

出力マップはグリッド   の大きさで、   、    として チャンネル数は

・・・ C1 C20・・・

・・・ x1 y1 w1h1 F1

B1 B2

7× 7 C = 20B = 25×B+C = 5×2+ 20 = 30

Page 20: Introduction to YOLO detection model

損失関数 全体

l  損失関数は以下のsum squared loss

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

λnoobj = 0.5λcoord = 5

Ιijobj = 1

0

⎧⎨⎩

Ιiobj = 1

0

⎧⎨⎩

・・・object がグリッド  のときi・・・それ以外

・・・ j 番目の矩形領域が  番目のグリッドに中心があるときi・・・それ以外

Page 21: Introduction to YOLO detection model

損失関数 全体

l  各項にあえて名前をつけるなら・・・

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

矩形の大きさ項 矩形の中心座標項

矩形の信頼度項 矩形の不信頼度項 セルのクラス分類項

Page 22: Introduction to YOLO detection model

損失関数 全体

l      ならば・・・

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

矩形の大きさ項 矩形の中心座標項

矩形の信頼度項 矩形の不信頼度項 セルのクラス分類項

L→ 0

それぞれが 0 に収束することが期待できるだろう

0 0

0 0

0

Page 23: Introduction to YOLO detection model

損失関数 矩形の中心座標項

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

教師データ出力マップ

0.2, 0.6( )

0.1, 0.8( )

0.7, 0.2( )

l  出力マップで矩形候補領域の中心座標があるセルだけ計算する(indicator 関数)

l  座標はセル内で正規化 l  学習の進行にしたがっ

て、出力マップの座標が教師データの座標に収束してくれるだろう

0.4, 0.1( )0.9, 0.2( )

0.3, 0.9( )

Page 24: Introduction to YOLO detection model

損失関数 矩形の大きさ項

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

教師データ出力マップ

l  出力マップで矩形候補領域の中心座標があるセルだけ計算する(indicator 関数)

l  大きさは画像の範囲で正規化

l  学習の進行にしたがっ

て、出力マップの矩形大きさが教師データのそれに収束してくれるだろう

0.3, 0.4( )0.6, 0.4( )

0.3, 0.1( ) 0.3, 0.2( )

0.7, 0.6( )0.3, 0.4( )

Page 25: Introduction to YOLO detection model

損失関数 矩形の信頼度項

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

教師データ出力マップl  出力マップで矩形候補

領域の中心座標があるセルだけ計算する(indicator 関数)

l  学習の進行にしたがっ

て、出力マップにおける矩形の信頼度が教師データのそれに収束してくれるだろう

11

1

0.2

0.4

0.7

Page 26: Introduction to YOLO detection model

損失関数 矩形の不信頼度項

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

教師データ出力マップl  出力マップで矩形候補

領域の中心座標がないセルだけ計算する(indicator 関数)

l  学習の進行にしたがっ

て、出力マップにおける矩形の信頼度が教師データのそれに収束してくれるだろう

0.2

0.2

0.4

0.4

0.4 0.4

0.4 0.4

0.4

0.2

0.2

0.2

0.1

0.1

0.1

0.1

0.3

0.3

0.3

0.5

0.5

0.50.5

0.6

0.6

0.6

0.7

0.7

0.7

0.7

0.7

0.8

0.8

0.8

0.8

0.9

0.9

0.9

0.9

0.6

0.20.6

0.6

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Page 27: Introduction to YOLO detection model

損失関数 セルのクラス分類項

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

教師データ出力マップl  出力マップでクラス分類されているセルだけ計算する(indicator 関数)

l  セルごと、クラスごとにそのクラスである確率の差を計算

l  学習の進行にしたがっ

て、出力マップの矩形大きさが教師データのそれに収束してくれるだろう

Page 28: Introduction to YOLO detection model

個人的にはここが面白い

L = λcoord Ιijobj xi − xi( )2 + yi − yi( )2⎡⎣

⎤⎦

j=0

B

∑i=0

S2

∑ +λcoord Ιijobj wi − wi( )

2+ hi − hi( )

2⎡

⎣⎢

⎦⎥

j=0

B

∑i=0

S2

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

出力には常に s × s × B 個の矩形が存在するが、indicator 関数により、教師データにある矩形の位置、大きさしか学習しない。よって、それ以外の大部分の矩形は学習が進行しても、てんでバラバラ。

出力には常に s × s × B 個の矩形が存在するが、indicator 関数により、教師データにある矩形の位置、大きさしか学習しない。よって、それ以外の大部分の矩形は学習が進行しても、てんでバラバラの位置と大きさを出力する。

学習するのはこの3つの矩形の位置と大きさ

それ以外は学習しない

Page 29: Introduction to YOLO detection model

個人的にはここが面白い

+ Ιijobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ +λnoobj Ιijnoobj Ci − Ci( )

2

j=0

B

∑i=0

S2

∑ + Ιiobj pi c( )− pi c( )( )

2

c∈classes∑

i=0

S2

しかし、学習しない矩形は信頼度が下がるので、 推論の段階では閾値ではじかれる。よって大丈夫。 しかし、学習しない矩形は信頼度が下がるので、 推論の段階では閾値ではじかれる。よって大丈夫。

学習対象の3つの矩形は信頼度が上がる

それ以外は信頼度が下がる

Page 30: Introduction to YOLO detection model

学習の設定項目

学習の設定項目 値

epoch 135 data sets PASCAL VOC 2007, 2012

batch size 64

optimizer momentum

その他 dropout data augmentation

Page 31: Introduction to YOLO detection model

解説のポイント

①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?

Page 32: Introduction to YOLO detection model

検出例

l  写真や絵画でちゃんと検出できている

Page 33: Introduction to YOLO detection model

精度の比較結果

l  RCNNやDPMモデルよりは性能がいい

Page 34: Introduction to YOLO detection model

速度の比較結果

l  検出速度はYOLOの早いバージョンが一番

Page 35: Introduction to YOLO detection model

まとめ

l  YOLOモデルは矩形の候補領域とそのクラスを同時に同じCNNで学習する手法である

l  この手法により、まぁまぁいい精度でめちゃめちゃ

早い検出速度を達成した

Page 36: Introduction to YOLO detection model

おわり