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