yolo系列文章之yolov3詳解
論文地址:YOLOv3: An Incremental Improvement
yolo官網://pjreddie.com/yolo/
主要介紹
YOLOv3在YOLO上做了一些更新,做了一些小的改動,網路性能變得更好,網路整體比YOLOV2大了一些,但是演算法的精度更高,速度也沒有很大的下降。在320×320 YOLOv3運行22.2ms,28.2 mAP,像SSD一樣準確,但速度快三倍,在使用AP0.5評估時,它的速度是RetainNet的3.8倍,但是精度相當。
演算法介紹
Bounding box prediction
沿用YOLO9000使用維度聚類的方式生成特定的anchor boxes來預測bbox,網路為每個bbox輸出四個坐標,tx,ty,tw,th。如果對應的cell對於影像的左上角偏移cx,cy。cell的寬高分別為pw,ph,那麼對應的預測邊界框就是:
在訓練的時候採用平方誤差和損失,如果ground truth對應的值為t*,預測的值為t1,那麼梯度就是 t*-t1,t*利用上邊的公式可以很容易的計算得到。
YOLOv3使用邏輯回歸為每個bbox預測一個物體得分,如果一個先驗框與ground truth的IOU超過某個閾值,那麼這個bbox的得分就為1,如果這個先驗框不是最好的,但是IOU超過某個閾值,那麼就忽視這個預測值,閾值為0.5,我們的系統只為每個ground truth對象分配一個邊界框,如果先驗框沒有匹配到ground truth。
Class Prediction
每個bbox使用多標籤分類來預測其可能包含的標籤類別,使用獨立的邏輯分類器,不使用softmax,因為採用softmax給數據集強加了一個默認的約束,即所有的標籤是完全互斥的。而在open image dataset中很多標籤並不是完全互斥的,有很多重疊的標籤,例如女性和人物。在訓練的過程中採用二元交叉熵損失來進行類別的預測。
YOLOv3在三個不同尺度上預測框(boxes)。使用類似於特徵金字塔網路的思想來提取這些尺度的特徵。在基本特徵提取器中,添加了幾個卷積層。其中最後一個預測了3-d張量編碼邊界框,對象和類別預測。在COCO實驗中,我們預測每個尺度的3個框,所以對於4個邊界框偏移量,1個目標性預測和80個類別預測,張量為N×N×[3 *(4 + 1 + 80)]。
然後,從之前的兩層中取得特徵圖(feature map),並將其上取樣2倍。我們還從網路中的先前的層中獲取特徵圖,並使用element-wise addition將其與我們的上取樣特徵進行合併。這種方法使我們能夠從早期特徵映射中的上取樣特徵和更細粒度的資訊中獲得更有意義的語義資訊。然後,我們再添加幾個卷積層來處理這個組合的特徵圖,並最終預測出一個相似的張量,雖然現在是兩倍的大小。
我們再次執行相同的設計來預測最終尺度的方框。因此,我們對第三種尺度的預測將從所有先前的計算中獲益,並從早期的網路中獲得細粒度的特徵。
仍然使用k-means聚類來確定我們的邊界框的先驗。只是選擇了9個聚類(clusters)和3個尺度(scales),然後在整個尺度上均勻分割聚類。在COCO數據集上,9個聚類是:(10×13);(16×30);(33×23);(30×61);(62×45); (59×119); (116×90); (156×198); (373×326)。
Feature Extractor
特徵提取器採用新的DarkNet53,是YOLOv2中的DarkNet19與殘差鏈接混合的方法,使用連續的3×3和1×1的卷積層實現,加入了殘差鏈接,一共有53層。
新網路比DarkNet19槍彈你很多,並且比ResNet152更加有效。Darknet-53比ResNet-101更好,速度更快1:5倍。 Darknet-53與ResNet-152具有相似的性能,速度提高2倍。
train
YOLOv3訓練完整的影像,沒有困難樣本挖掘或者類似的其他方法。我們使用多尺度訓練,大量的data augmentation,batch normalization,以及所有標準的東西。我們使用Darknet神經網路框架進行訓練和測試。
一些不成功的嘗試
- 預測錨框的偏移(Anchor box x, y offset predictions)**,擦汗給你是使用正常的anchor box預測機制,使用線性激活函數來預測x,y的offset為bbox寬高的倍數,降低模型的穩定性,降低性能
- 使用線性xy預測而不是邏輯預測(Linear x, y predictions instead of logistic),嘗試使用線性激活來直接預測x,y offeset 而不是邏輯激活。這導致mAP下降了幾個點。
- Focal loss,使用focal loss。它使得mAp降低了2個點。YOLOv3對focal loss解決的問題可能已經很強大,因為它具有單獨的對象預測和條件類別預測。
- Dual IOU thresholds and truth assignment ,Faster R-CNN在訓練期間使用兩個IOU閾值。如果一個預測與ground truth重疊達到0.7,將它看作是一個正樣本,如果達到0.3-0.7,忽略它,如果小於0.3,這是一個負樣本。嘗試了類似的策略,但無法取得好成績。
總結
- 使用金字塔網路(類似於多尺度的資訊)
- 用邏輯回歸替代softmax作為分類器
- Darknet-53作為backbone