讀論文系列:Object Detection CVPR2016 YOLO

CVPR2016: You Only Look Once:Unified, Real-Time Object Detection

轉載請註明作者:夢裡茶

YOLO,You Only Look Once,摒棄了RCNN系列方法中的region proposal步驟,將detection問題轉為一個回歸問題

網路結構

  • 輸入圖片:resize到448x448
  • 整張圖片輸入卷積神經網路(24層卷積+2層全連接,下面這張示意圖是Fast YOLO的)

  • 將圖片劃分為SxS個格子,S=7
  • 輸出一個SxS大小的class probability map,為圖片上每個格子所屬的分類

  • 輸出為每個格子輸出B個bounding box,每個bounding box由x,y,w,h表示,為每個bounding box輸出一個confidence,即屬於前景的置信度

於是輸出可以表示為一個 S	imes S	imes (B	imes (4+1)+C) 的tensor,訓練只需要根據數據集準備好這樣的tensor進行regression就行

  • 對所有bounding box按照confidence做非極大抑制,得到檢測結果

訓練

Loss

  • 前兩行為定位loss, λ_{coord} 為定位loss的權重,論文中取5
  • 第三行為一個bounding box屬於前景時的置信度回歸loss,
    • 當格子中有對象出現時,真實 C_i 為1,
    • 1_{ij}^{obj} 是一個條件表達式,當bounding box「負責(is responsible for)」圖中一個真實對象時為1,否則為0,
    • 所謂「負責」,指的是在當前這個格子的所有bounding box中,這個bounding box與真實的bounding box重疊率最大
  • 第四行為一個bounding box屬於背景時的置信度回歸loss,
    • 為了避免負樣本過多導致模型跑偏, λ_{noobj}=0.5
    • 1_{ij}^{nobj} 是一個條件表達式,為 1_{ij}^{obj} 取反
    • 於是我們可以發現一個格子的兩個bounding box的分工:一個貢獻前景loss,一個貢獻背景loss ,不論是前景背景box,我們都希望它們的confidence接近真實confidence,實際上,如果  λ_{noobj} =1, 第四五行可以合併為一項求和,但由於背景box太多,所以才單獨拆開加了權重約束
  • 第五行為分類loss, 1_i^{obj} 是一個條件表達式,當有對象出現在這個格子中,取1,否則取0

YOLO里最核心的東西就講完了,其實可以把YOLO看作固定region proposal的Faster RCNN,於是可以省掉Faster RCNN里region proposal部分,分類和bounding box regression跟Faster RCNN是差不多的

細節

Leaky Relu

網路中只有最後的全連接層用了線性的激活函數,其他層用了leaky Relu:f(x)=max(x, 0.1x)

對比Relu和leaky Relu

在x小於0的時候,用了0.1x,避免使用relu的時候有些單元永遠得不到激活(Dead ReLU Problem)

Fast YOLO

卷積層更少,只有9層卷積+2層全連接,每層filters也更少,於是速度更快

實驗效果

  • 對比當前最好方法:

Fast YOLO速度最快,準確率不太高,但還是比傳統方法好,YOLO則比較中庸,速度不慢,準確率也不太高,但也還行。

  • 再看看具體是在哪些類型的圖片上出錯的:

主要是定位不準(畢竟沒有精細的region proposal),但是在背景上出錯較少(不容易把背景當成對象)

缺點

  • 固定的格子是一種很強的空間限制,7x7的格子決定了整張圖片最多預測98個對象,對於對象數量很多的圖片(比如鳥群)無能為力
  • 難以泛化到其他形狀或角度的物體上
  • 損失函數沒有考慮不同尺寸物體的error權重,大box權重和小box權重一樣

Summary

Anyway,YOLO結構還是挺優雅的,比Faster RCNN黑科技少多了,更重要的是,它是當時最快的深度學習檢測模型,也是很值得肯定的。


推薦閱讀:

DarkNet-YOLOv3 訓練自己的數據集 Ubuntu16.04+cuda8.0
CVPR2018 | 直接建模視覺智能體?讓「小狗」動起來~
菜鳥學tensorflow
Focal Loss for Dense Object Detection解讀
用於三維重建和3d deep learning的公開數據集

TAG:目標檢測 | 計算機視覺 | 深度學習DeepLearning |