YOLO v5網(wǎng)絡(luò)結(jié)構(gòu)
由上圖可知,YOLO v5主要由輸入端、Backone、Neck以及Prediction四部分組成。其中:
(1) **Backbone:**在不同圖像細粒度上聚合并形成圖像特征的卷積神經(jīng)網(wǎng)絡(luò)。
(2) **Neck:**一系列混合和組合圖像特征的網(wǎng)絡(luò)層,并將圖像特征傳遞到預(yù)測層。
(3) Head: 對圖像特征進行預(yù)測,生成邊界框和并預(yù)測類別。
下面介紹YOLO v5各部分網(wǎng)絡(luò)包括的基礎(chǔ)組件:
**CBL:**由Conv+BN+Leaky_relu激活函數(shù)組成
**Res unit:**借鑒ResNet網(wǎng)絡(luò)中的殘差結(jié)構(gòu),用來構(gòu)建深層網(wǎng)絡(luò)
**CSP1_X:**借鑒CSPNet網(wǎng)絡(luò)結(jié)構(gòu),該模塊由CBL模塊、Res unint模塊以及卷積層、Concate組成
**CSP2_X:**借鑒CSPNet網(wǎng)絡(luò)結(jié)構(gòu),該模塊由卷積層和X個Res unint模塊Concate組成而成
**Focus:**首先將多個slice結(jié)果Concat起來,然后將其送入CBL模塊中
**SPP:**采用1×1、5×5、9×9和13×13的最大池化方式,進行多尺度特征融合
輸入端詳解YOLO v5使用Mosaic數(shù)據(jù)增強操作提升模型的訓練速度和網(wǎng)絡(luò)的精度;并提出了一種自適應(yīng)錨框計算與自適應(yīng)圖片縮放方法
2.1Mosaic數(shù)據(jù)增強
Mosaic數(shù)據(jù)增強利用四張圖片,并且按照隨機縮放、隨機裁剪和隨機排布的方式對四張圖片進行拼接,每一張圖片都有其對應(yīng)的框,將四張圖片拼接之后就獲得一張新的圖片,同時也獲得這張圖片對應(yīng)的框,然后我們將這樣一張新的圖片傳入到神經(jīng)網(wǎng)絡(luò)當中去學習,相當于一下子傳入四張圖片進行學習了。該方法極大地豐富了檢測物體的背景,且在標準化BN計算的時候一下子計算四張圖片的數(shù)據(jù),所以本身對batch size不是很依賴
2.2 自適應(yīng)錨框計算
在yolo系列算法中,針對不同的數(shù)據(jù)集,都需要設(shè)定特定長寬的錨點框。在網(wǎng)絡(luò)訓練階段,模型在初始階段,模型在初始錨點框的基礎(chǔ)上輸出對應(yīng)的預(yù)測框,計算其與GT框之間的差距,并執(zhí)行反向更新操作,從而更新整個網(wǎng)絡(luò)的參數(shù),因此設(shè)定初始錨點框是比較關(guān)鍵的一環(huán)。
在yolo V3和yolo V4中,訓練不同的數(shù)據(jù)集,都是通過單獨的程序運行來獲得初始錨點框。
而在yoloV5中將此功能嵌入到代碼中,每次訓練,根據(jù)數(shù)據(jù)集的名稱自適應(yīng)的計算出最佳的錨點框,用戶可以根據(jù)自己的需求將功能關(guān)閉或者打開,指令為:
2.3 自適應(yīng)圖片縮放
在目標檢測算法中,不同的圖片長寬都不相同,因此常用的方式是將原始圖片統(tǒng)一縮放到一個標準尺寸,再送入檢測網(wǎng)絡(luò)中。而原始的縮放方法存在著一些問題,由于在實際的使用中的很多圖片的長寬比不同,因此縮放填充之后,兩端的黑邊大小都不相同,然而如果填充的過多,則會存在大量的信息冗余,從而影響整個算法的推理速度。為了進一步提升YOLO v5的推理速度,該算法提出一種方法能夠自適應(yīng)的添加最少的黑邊到縮放之后的圖片中。具體的實現(xiàn)步驟如下所述:
(1) 根據(jù)原始圖片大小以及輸入到網(wǎng)絡(luò)的圖片大小計算縮放比例
(2) 根據(jù)原始圖片大小與縮放比例計算縮放后的圖片大小
(3) 計算黑邊填充數(shù)值