網絡結構圖
繪制網絡結構圖受到Yolov3另一位作者文章的啟發,包括下面Yolov4的結構圖,確實,從總體框架上先了解了Yolov3的流程。再針對去學習每一小塊的知識點,會事半功倍。
上圖三個藍色方框內表示Yolov3的三個基本組件:
- CBL:Yolov3網絡結構中的最小組件,由Conv+Bn+Leaky_relu激活函數三者組成。
- Res unit:借鑒Resnet網絡中的殘差結構,讓網絡可以構建的更深。
- ResX:由一個CBL和X個殘差組件構成,是Yolov3中的大組件。每個Res模塊前面的CBL都起到下采樣的作用,因此經過5次Res模塊后,得到的特征圖是608->304->152->76->38->19大小。
其他基礎操作:
- Concat:張量拼接,會擴充兩個張量的維度,例如26*26*256和26*26*512兩個張量拼接,結果是26*26*768。Concat和cfg文件中的route功能一樣。
- add:張量相加,張量直接相加,不會擴充維度,例如104*104*128和104*104*128相加,結果還是104*104*128。add和cfg文件中的shortcut功能一樣。
Backbone中卷積層的數量:
每個ResX中包含1+2*X個卷積層,因此整個主干網絡Backbone中一共包含1+(1+2*1)+(1+2*2)+(1+2*8)+(1+2*8)+(1+2*4)=52,再加上一個FC全連接層,即可以組成一個Darknet53分類網絡。不過在目標檢測Yolov3中,去掉FC層,不過為了方便稱呼,仍然把Yolov3的主干網絡叫做Darknet53結構。