1. 程式人生 > >《YOLOv3: An Incremental Improvement》論文筆記

《YOLOv3: An Incremental Improvement》論文筆記

1. 論文工作

在這篇文章中又對之前的YOLO-v2進行了優化,優化之後的網路變大了,準確率也提升了。但是,升級之後得到的YOLO-v3也是一樣的快。在解析度 320 320 320*320 的情況下執行只需要22ms且擁有28.2mAP,比同精度SSD快三倍。使用老的0.5AP檢測度量,YOLO-v3執行只要51ms並且取得57.9 A

P 50 AP_{50} 。這都是好於RetinaNet的,速度比它快3.8倍。
在這裡插入圖片描述

2. 優化細節

2.1 邊界框預測

在YOLO9000中使用錨點框與維度聚類實現邊界預測。下面這張圖就是YOLO-v2裡面的圖
在這裡插入圖片描述
在YOLO9000中使用的損失函式,而在YOLO-v3中使用邏輯迴歸預測每個邊界框的物件評分。如果邊界框先驗與ground truth重疊是多餘於其他邊界框先驗的,那麼該值應該是1。如果邊界框先驗與ground truth重疊沒有超過設定好的閾值,則就會將其拋棄掉,一般來講閾值為0.5。論文中為每個ground truth物件預先分配一個邊界框。如果一個邊界框先驗沒有被分配給一個ground truth物件,那麼它不會導致座標或類預測的損失。

2.2 分類預測

對於每個框使用多標籤分類預測可能包含的類。這裡將softmax替換為了邏輯分類,以獲得更好的效能。在訓練過程中,使用二元交叉熵損失進行分類預測。
當轉移到更復雜的領域,比如開放影象資料集時,這個辦法會有所幫助。在這個資料集中有許多重疊的標籤(即女人和人)。使用softmax強加了這樣的假設,即每個框只有一個類,而實際情況往往不是這樣。多標籤方法可以更好地建模資料。

2.3跨尺度進行預測

YOLO-v3在三個不同的尺度上預測邊界框。使用的是類似於金字塔網路的概念從這些尺度中提取特徵。在基本特徵提取器中添加了幾個卷積層。最後一個預測了一個3-d張量編碼邊界框,物件,和分類類預測。在COCO資料集上對每個尺度上預測三個邊界框,因而輸出的三維張量就可以描述為 N

N [ 3 ( 4 + 1 + 80 ) ) ] N*N[3*(4+1+80))] ,包含4個邊界框偏移,是否是目標以及80類預測。
接下來,從之前的兩個層提取特徵對映,並以2倍向上取樣。除此之外還從網路的前端獲取一個特徵對映,並使用連線將其與我們的上取樣特徵合併。這種方法是的可以從上取樣的特徵中獲得更有意義的語義資訊,從早期的特徵對映中獲得更細粒度的資訊。然後新增更多的卷積層來處理這個組合特徵圖,並最終預測出一個類似的張量,儘管現在是它的兩倍大。

2.4 特徵抽取網路

YOLO-v3使用了新的特徵抽取網路結構,部分借鑑了YOLO-v2中的DarkNet-19,並且加入了shortcut connections,最後使得網路有53個卷積層,因而網路的名字是DarkNet-53。
在這裡插入圖片描述
新的網路自然也更加牛皮了,論文裡面給出了該網路與DarkNet-19與ResNet-100+的比較:
在這裡插入圖片描述

3. YOLO-v3與其它網路的對比

論文中將YOLO-v3與其它檢測網路進行對比,得到如下表格
在這裡插入圖片描述
值的一提的是,在YOLO-v3中使用多尺度預測的方式提升了小目標檢測的效能。但是相對的對於中等以及大目標結果變得稍差一些。

4. 之前踩過的坑

作者在研究YOLO-v3的時候試過很多種方法,但是很多被證實是沒用的,論文裡面羅列了一些出來。
(1)邊界框x,y偏移預測。作者嘗試使用常規的錨點框預測機制,用線性啟用來預測x, y偏移量作為邊界框寬度或高度的倍數。但是發現這種方法降低了模型的穩定性,並沒有很好地工作。
(2)線性x, y的預測,而不是邏輯。嘗試使用線性啟用去預測 ( x , y ) (x, y) 的偏移而不是邏輯啟用,這導致了mAP的下降幾個點。
(3)焦點損失函式。試過在網路中加入焦點損失函式,但是發現mAP下降了2個點,這或許是YOLO-v3對於焦點損失要解決的問題已經足夠好了。
(4)雙重IOU閾值。借鑑了Faster R-CNN訓練中的雙重閾值機制,但是沒有取得好的結果。