Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction to YOLO detection model

9,524 views

Published on

This document introduces YOLO detection model made by J. Redmon, et al. You can easily understand YOLO model if you read this. Only Japanese.

Published in: Technology
  • Be the first to comment

Introduction to YOLO detection model

  1. 1. ディープラーニングの最新動向 物体検出編① YOLOモデル 2017/1/13 株式会社ウェブファーマー 大政 孝充
  2. 2. 今回取り上げるのはこれ [1] J Redmon, et al.”You Only Look Once: Unified, Real- Time Object Detection”arXiv:1506.02640v5 9 May 2016. 物体検出において、1つのモデルで矩形の候補領域と分類 を同時に行うことで早い速度を達成した!
  3. 3. 解説のポイント ①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?
  4. 4. 解説のポイント ①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?
  5. 5. Detectionの従来手法は 例えばR-CNNだと・・・ 画像から矩形領域の候補を多数選び出し(sliding window)、このそれぞれをCNNにかける →時間がか かるしスマートじゃない
  6. 6. Detectionの従来手法は 人間はひと目見ただけで物体の分類と位置の推定を 行っている。 このような仕組みができないだろうか・・・ 手前に犬、その後 ろに自転車、右奥 に車がある!
  7. 7. 解説のポイント ①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?
  8. 8. 手法全体の流れ
  9. 9. 出力 ① l  画像全体を    個のセルに分ける l  それぞれのセルは  個の矩形領域を保持する S × S S S B B = 3 の場合 0.44 0.71 0.08 信頼度: Pr Object( )∗ IOUpred truth = Pr Object( )∗ pred ∩truth pred ∪ truth B1 B2 B3
  10. 10. 出力 ② l  それぞれの矩形領域は中心座標    、矩形の大 きさ    、信頼度  を保持する x, y( ) S S h,w( ) F B1 = x1, y1,h1,w1, F1( )x1, y1( ) h1 w1
  11. 11. 出力 ③ l  それぞれのセルはクラスごとにそのクラスである確 率   も推測するC S S C = Pr Class |Object( ) C1 = Pr Class |OO( )= 0.14 ex)分類が3つの場合 人 C2 = Pr Class |OO( )= 0.74車 C3 = Pr Class |OO( )= 0.12犬
  12. 12. 推論の流れ l  7×7 個のセルがそれぞ れ 2 個の矩形候補領域 を出力する l  信頼度 F を太さで表現 B x, y,h,w, F( )
  13. 13. 推論の流れ 閾値で信頼度 F の高 いものだけ採用 B x, y,h,w, F( )
  14. 14. 推論の流れ 対応セルにおける確 率の高いクラスと照ら し合わせて、矩形領 域のクラスを決定 B x, y,h,w, F( ) C = Pr Class |Object( )
  15. 15. モデルのアーキテクチャ l  24層の畳み込みのあと、2層の全結合
  16. 16. 解説のポイント ①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?
  17. 17. 事前学習 まず最初に入力側conv20層までをImageNetデータで 事前学習した。 これでGoogLeNetに比肩する性能を獲得した
  18. 18. 本学習 l  この事前学習した部分にconv4層と全結合を追加した l  活性化関数は出力層がReLu、他がLeakly Relu
  19. 19. 出力マップ 出力マップはグリッド   の大きさで、   、    として チャンネル数は ・・・ C1 C20・・・ ・・・ x1 y1 w1h1 F1 B1 B2 7× 7 C = 20B = 2 5× B+C = 5×2 + 20 = 30
  20. 20. 損失関数 全体 l  損失関数は以下のsum squared loss L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj pi c( )− ˆpi c( )( ) 2 c∈classes ∑ i=0 S2 ∑ λnoobj = 0.5λcoord = 5 Ιij obj = 1 0 ⎧ ⎨ ⎩ Ιi obj = 1 0 ⎧ ⎨ ⎩ ・・・object がグリッド  のとき i ・・・それ以外 ・・・ j 番目の矩形領域が  番目のグリッドに中心があるとき i ・・・それ以外
  21. 21. 損失関数 全体 l  各項にあえて名前をつけるなら・・・ L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj pi c( )− ˆpi c( )( ) 2 c∈classes ∑ i=0 S2 ∑ 矩形の大きさ項矩形の中心座標項 矩形の信頼度項 矩形の不信頼度項 セルのクラス分類項
  22. 22. 損失関数 全体 l      ならば・・・ L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj pi c( )− ˆpi c( )( ) 2 c∈classes ∑ i=0 S2 ∑ 矩形の大きさ項矩形の中心座標項 矩形の信頼度項 矩形の不信頼度項 セルのクラス分類項 L → 0 それぞれが 0 に収束することが期待できるだろう 00 0 0 0
  23. 23. 損失関数 矩形の中心座標項 L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj 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( )
  24. 24. 損失関数 矩形の大きさ項 L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj 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( )
  25. 25. 損失関数 矩形の信頼度項 L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj pi c( )− ˆpi c( )( ) 2 c∈classes ∑ i=0 S2 ∑ 教師データ 出力マップ l  出力マップで矩形候補 領域の中心座標がある セルだけ計算する (indicator 関数) l  学習の進行にしたがっ て、出力マップにおける 矩形の信頼度が教師 データのそれに収束し てくれるだろう 1 1 1 0.2 0.4 0.7
  26. 26. 損失関数 矩形の不信頼度項 L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj 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.5 0.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.2 0.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
  27. 27. 損失関数 セルのクラス分類項 L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj pi c( )− ˆpi c( )( ) 2 c∈classes ∑ i=0 S2 ∑ 教師データ 出力マップ l  出力マップでクラス分 類されているセルだけ 計算する(indicator 関 数) l  セルごと、クラスごとに そのクラスである確率 の差を計算 l  学習の進行にしたがっ て、出力マップの矩形 大きさが教師データの それに収束してくれる だろう
  28. 28. 個人的にはここが面白い L = λcoord Ιij obj xi − ˆxi( ) 2 + yi − ˆyi( ) 2⎡ ⎣ ⎤ ⎦ j=0 B ∑ i=0 S2 ∑ + λcoord Ιij obj wi − ˆwi( ) 2 + hi − ˆhi( ) 2⎡ ⎣ ⎢ ⎤ ⎦ ⎥ j=0 B ∑ i=0 S2 ∑ + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj pi c( )− ˆpi c( )( ) 2 c∈classes ∑ i=0 S2 ∑ 出力には常に s × s × B 個の矩形が存在するが、indicator 関数により、教師 データにある矩形の位置、大きさしか学習しない。よって、それ以外の大部分 の矩形は学習が進行しても、てんでバラバラ。 出力には常に s × s × B 個の矩形が存在するが、indicator 関数により、教師 データにある矩形の位置、大きさしか学習しない。よって、それ以外の大部分 の矩形は学習が進行しても、てんでバラバラの位置と大きさを出力する。 学習するのはこの3つの矩 形の位置と大きさ それ以外は学習しない
  29. 29. 個人的にはここが面白い + Ιij obj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + λnoobj Ιij noobj Ci − ˆCi( ) 2 j=0 B ∑ i=0 S2 ∑ + Ιi obj pi c( )− ˆpi c( )( ) 2 c∈classes ∑ i=0 S2 ∑ しかし、学習しない矩形は信頼度が下がるので、 推論の段階では閾値ではじかれる。よって大丈夫。 しかし、学習しない矩形は信頼度が下がるので、 推論の段階では閾値ではじかれる。よって大丈夫。 学習対象の3つの矩形は 信頼度が上がる それ以外は信頼度が 下がる
  30. 30. 学習の設定項目 学習の設定項目 値 epoch 135 data sets PASCAL VOC 2007, 2012 batch size 64 optimizer momentum その他 dropout data augmentation
  31. 31. 解説のポイント ①取り組んだ課題とは ②全体のアーキテクチャ ③学習方法 ④結果どうなった?
  32. 32. 検出例 l  写真や絵画でちゃんと検出できている
  33. 33. 精度の比較結果 l  RCNNやDPMモデルよりは性能がいい
  34. 34. 速度の比較結果 l  検出速度はYOLOの早いバージョンが一番
  35. 35. まとめ l  YOLOモデルは矩形の候補領域とそのクラスを同 時に同じCNNで学習する手法である l  この手法により、まぁまぁいい精度でめちゃめちゃ 早い検出速度を達成した
  36. 36. おわり

×