1、yolov3簡介
yolov3已經出來好久了,最近花了些時間分析了下yolov3的源碼。yolov3並沒有很大的創新,更多的是借鑑了最近兩年一些網絡構造技巧。不過不得不承認效果還是很讚的,在保持速度的前提下,提升了預測精度,尤其是小目標物體的檢測相比v1、v2來說得到了較大的改善。
yolov3的主要改進:調整了網絡結構;利用多尺度特徵進行目標檢測;對象分類用logistic取代了softmax。
2、網絡結構
以darknet-53爲例,具體結構如下:
其中Residual示意圖如下:
3、利用多尺度進行目標檢測
yolo2中也採用了passthrough結構來檢測細粒度特徵,在yolo3中則採用了3個不同尺度的特徵圖進行目標 檢測。三個尺度的特徵圖尺度相對輸入圖片的stride分別爲32、16、8;stride越大則特徵圖的局部野越大,能夠用於檢測較大的目標物體,stride越小則反之。同時,anchors的引入能夠使得網絡更好的進行學習。網絡中採用了9中尺度的先驗框,具體分配如下:
具體如下(黃色框爲gt,藍色框爲anchors):
4、輸入到輸出的映射
輸出的數據分佈維度信息如下:
對於416*416的輸入圖像,沒個尺度特徵圖的每個網絡設置3個先驗框,總共有13*13*3 + 26 * 26 *3 + 52 * 52 * 3 = 10647個預測結果,沒個榆次是(4 + 1 + 80) = 85維向量。而yolo2中只有845個預測。
5、總結
yolo3借鑑了殘差 網絡,形成了更深的網絡層次,以及多尺度檢測,提升了map以及小物體檢測效果。
個人水平有限,很多東西也是參考了其他人的成果,在此表示感謝,如果文中有誤之處請指教,謝謝!