1. 程式人生 > >《You Only Look Once: Unified, Real-Time Object Detection》論文筆記

《You Only Look Once: Unified, Real-Time Object Detection》論文筆記

1. 論文思想

YOLO(YOLO-v1)是最近幾年提出的目標檢測模型,它不同於傳統的目標檢測模型,將檢測問題轉換到一個迴歸問題,以空間分隔的邊界框和相關的類概率進行目標檢測。在一次前向運算中,一個單一的神經網路直接從完整的影象中預測邊界框和類概率。由於整個檢測管道是一個單一的網路,可以直接從檢測效能上進行端到端優化。其結構如下圖:
這裡寫圖片描述
由於YOLO模型的獨特,致使其速度相比之前的網路快了很多。與Fast R-CNN相比,YOLO產生更多的定位錯誤,但不太可能在後臺預測誤報。由於將物件檢測作為一個單一的迴歸問題重新框架,直接從影象畫素到邊界框座標和類概率。因而YOLO-V1具有如下的優點:
(1)YOLO的速度極快,並且其平均精確度是論文當時其它實時目標檢測演算法的兩倍。
(2)YOLO由全圖的資訊進行推理和預測。
(3)YOLO學習物件的可推廣表示。YOLO在檢測精度上落後於最先進的目標檢測系統,但是它可以快速檢測出影象中的物體,提升特別是小目標定位的精度。

2. 統一檢測網路

在YOLO中將目標檢測與識別結合起來形成一個網路。網路中使用全圖的特徵進行檢測邊界框的預測以及對應目標的分類。因而YOLO就可以使用全圖資訊進行全圖目標檢測與識別。這就使得YOLO具有端到端的檢測能力與實時的檢測速度,同時保持較高的平均精度。
這裡寫圖片描述
YOLO將影象劃分為S*S的網格,如上圖。如果目標物體的中心落到了某個網格的中心,那麼該網格負責檢測該目標。
每個單元格預測B個邊界框和其置信度。這些置信度的值反映了邊界框是否包含目標概率與當前邊界框與Ground Truth重合的情況(IOU)。其定為

predtruth" role="presentation"> P r ( O b j e c t ) I
O U p r e d t r u t h

對於那些沒有包含目標的單元格,他們的置信度應該等於0。否則應該由IOU以及是否包含目標的結果確定。
每個邊界框包含了5個預測值: x , y , w , h 以及置信度, ( x , y ) 的座標代表邊界框的中心相對於所在單元格的位置。 w , h 是相對於整幅影象而言的。置信度的含義上面講過了。
對於每個單元格預測全部分類的條件概率。代表的是當前單元格包含某類目標的條件概率。論文中只預測每個單元格分類的概率,並不是邊界框B。即是
P r ( C l a s s i | O b j e c t )
在測試時,我們將條件類的概率和單個盒子的置信度預測相乘,得到
P r ( C l a s s i | O b j e c t ) P r ( O b j e c t ) I O U p r e d t r u t h = P r ( C l a s s i ) I O U p r e d t r u t h

2.1 網路設計

論文使用的網路結構為卷積網路(24層)加上兩層全連線層,卷積層負責影象特徵的提取,全連線層負責概率預測與座標預測。在YOLO的tiny版本中為了速度的提升,自然也減少了卷積層(9層)的數量以及濾波器的數量。
這裡寫圖片描述

2.2 網路訓練

在ImageNet的1000類資料集上完成卷積層的預訓練任務,並取得了top-5 88%的準確率。之後論文將分類模型轉換為檢測模型。對預訓練增加網路的卷積與全連線層會使得網路的效能提升,為此論文中增加了4個卷積與2個全連線層,同時為了更好的檢測視覺資訊,將輸入影象的尺寸從224*224提升到448*448。最後網路輸出的是目標類別的概率以及邊界框的座標。

使用該啟用函式作為網路的啟用函式:
這裡寫圖片描述

論文使用平方損失函式,該損失函式方便進行優化。但是,它並不是與論文的目標相匹配。平方損失函式中定位錯誤與分類錯誤的權重是相同的。但是考慮到在影象中的許多單元格中是沒有目標的,因而這些單元格對應的邊界框置信度就是0,這將會將覆蓋包含了變目標單元格的梯度。進而會導致網路穩定以及訓練發散。

為了解決該問題,論文增加邊界框定位精度的損失,減少邊界框沒有包含物體置信度的損失。使用兩個引數 λ c o o r d = 5 λ n o o b j = 0.5

平方損失函式對於大邊界框與小邊界框錯誤的權重也是相同的。論文的誤差度量應該反映出大盒子裡的小偏差比小盒子裡的小偏差更重要。為了部分解決這個問題,論文中預測邊界框寬度和高度的平方根,而不是直接預測寬度和高度。

YOLO預測每個網格單元有多個邊界框。在訓練時,我們只需要一個邊界框預測器來負責每個物件。我們指定一個預測器來“負責”預測一個物件,該物件基於哪個預測具有最高的當前IOU與Ground Truth。這導致了邊界框之間的特化。每個預測器都能更好地預測特定的大小、縱橫比或物件的類別,從而提高整體的回憶能力。

根據上面的內容因而將網路的損失函式定義為:
這裡寫圖片描述
前面兩行是對空間位置的懲罰,接下來的兩行是對是否是包含目標的懲罰,最後一項便是對分類概率的懲罰。

損失函式只懲罰在網格單元中存在物件的分類錯誤(因此前面討論的條件類概率)。如果預測器對ground truth負責(即在網格單元中有最高的IOU),它也只能懲罰邊界框座標誤差。

在訓練的第一次迭代中緩慢將學習率從 10 3 提升到 10 2 ,之後迭代75個週期,之後 10 3 迭代30個週期,最後 10 4 迭代30個週期。
為了避免過度擬合,論文使用drop和廣泛的資料增強。第一個全連線層之後加入rate=0.5的drop_out層。為了增強資料,論文引入了高達20%原始影象大小的隨機縮放和平移。論文還在HSV顏色空間中隨機調整影象的曝光和飽和度,調整到1.5倍。

2.3 推論

網格設計在邊界框預測中強制空間多樣性。通常,一個物件落在哪個網格單元格上是很清楚的,而且網路僅為每個物件預測一個框。但是,一些大的物件或多單元邊界附近的物件可以被多個單元很好地定位。非最大抑制可用於修復這些多檢測。非最大抑制在mAP中增加了2- 3%。

2.4 YOLO的不足

YOLO對邊界框預測施加了強烈的空間約束,因為每個網格單元格只能預測兩個框,並且只能有一個類。這種空間約束限制了我們的模型能夠預測的附近物件的數量。我們的模型在處理以群體形式出現的小物體時遇到了困難,比如成群的鳥。

由於我們的模型學會了從資料中預測邊界框,所以它很難推廣到新的或不常見的縱橫比或配置物件。我們的模型還使用了相對粗糙的特性來預測邊框,因為我們的架構有多個從輸入影象向下取樣的層。

最後,當我們訓練一個近似檢測效能的損失函式時,我們的損失函式處理小邊界框和大邊界框中的錯誤是一樣的。大邊界框裡的小錯誤通常是良性的,但小邊界框裡的小錯誤對借據的影響要大得多。錯誤的主要來源是不正確的定位。

3. 實驗

這裡將YOLO與Fast R-CNN進行比較,主要從
(1)正確:正確的分類且 I O U > 0.5
(2)定位:正確分類, 0.1 < I O U < 0.5
(3)相似:分類相似且 I O U > 0.1
(4)其它:分類錯誤, 0.1 < I O U
(5)背景:對於任意其它目標, I O U < 0.1

這裡寫圖片描述
YOLO很難正確定位物件。定位錯誤佔YOLO錯誤的比例超過了所有其他源的總和。快速R-CNN的定位誤差要小得多,但背景誤差要大得多。13.6%的檢測結果是假陽性,不包含任何物件。與YOLO相比,快速R-CNN預測背景的可能性幾乎是前者的3倍。