深度學習圖像目標檢測:讀懂目前工業界最青睞的YOLO V3

You Only Look Once,YOLO.

深度學習圖像目標檢測:讀懂目前工業界最青睞的YOLO V3

YOLO 的核心思想:利用整張圖作為網絡的輸入,直接在輸出層迴歸 bounding box(邊界框) 的位置及其所屬的類別。

yolo雖然有三個版本,由於yolo v3在性能和準確性基本上秒殺前兩個版本,甚至官網都沒有給出下載老版本的鏈接。因此,我們僅需讀懂yolo v3模型結構即可。

細節:

  • 卷積的本質是提取圖片的特徵,分類是其他層做的事情。
  • 通過劃分單元格做檢測。
  • 多尺度訓練。
  • 端到端訓練,只使用一個loss funtion。即只關注輸入和輸出
  • 使用激活函數:“leaky ReLU”。
  • 使用batch normalization作為正則化、加速收斂和避免過擬合的方法。後文簡寫為BN。
  • 新的基本單元DarknetConv2D_BN_Leaky,即卷積+BN+leaky ReLU(激活函數)。
  • 殘差單元resblock=DarknetConv2D_BN_Leaky+...+DarknetConv2D_BN_Leaky +add
  • 殘差單元體resblock_body。zeropadding+DarknetConv2D_BN_Leaky+resblock。
  • anchors的9個參數是用聚類方式獲得,格式為w_1,h_1,w_2,h_2,...w_9,h_9。
  • 結構中沒有池化和全連接層,使用步長為2的卷積達到圖片縮小的目的。
  • 輸入圖片尺寸固定416*416。
  • 主幹網絡是darknet-53,共252層。

結構:

  1. 如下圖所示,輸入416*416圖片。經過尺寸為3*3的32個卷積DarknetConv2D_BN_Leaky層。
  2. 依次經過重複單元依次為1、2、8、8、4的5個殘差體(resblock_body)。
  3. 殘差體中DarknetConv2D_BN_Leaky單元的步長為2。
  4. 經過殘差體的2次步長為2的卷積,圖片尺寸縮小為以前的1/32。
  5. 生成y1、y2、y3三個結果。
  6. 輸出尺寸分別為13*13*255、26*26*255、52*52*255。
  7. 輸出深度為255=3*(5+80),每個單元3個box,box有(x, y, w, h, confidence)五個基本參數,coco數據集的種類是80.
  8. 中間層和後面的某一層的上採樣進行拼接。拼接的操作和殘差層add的操作是不一樣的,拼接會擴充張量的維度,而add只是直接相加不會導致張量維度的改變。
深度學習圖像目標檢測:讀懂目前工業界最青睞的YOLO V3

yolo v3 基本結構

實現:

darknet官網

pjreddie.com/darknet/

keras實現yolo3

github.com/qqwweee/keras-yolo3

tensorflow實現yolo3

github.com/wizyoung/YOLOv3_TensorFlow

You Only Live Once.


分享到:


相關文章: