輸入圖像的focus 結構
這個是從右到左的方向,將高分辨率的圖片,分成r*r個小的channel
這樣輸入就變小了
增加正樣本,加快訓練速度
本文也采用了增加正樣本anchor數目的做法來加速收斂,這其實也是yolov5在實踐中表明收斂速度非常快的原因。其核心匹配規則為:
(1) 對於任何一個輸出層,拋棄了基於max iou匹配的規則,而是直接采用shape規則匹配,也就是該bbox和當前層的anchor計算寬高比,如果寬高比例大於設定閾值,則說明該bbox和anchor匹配度不夠,將該bbox過濾暫時丟掉,在該層預測中認為是背景
(2) 對於剩下的bbox,計算其落在哪個網格內,同時利用四舍五入規則,找出最近的兩個網格,將這三個網格都認為是負責預測該bbox的,可以發現粗略估計正樣本數相比前yolo系列,至少增加了三倍
如上圖所示,綠點表示該Bbox中心,現在需要額外考慮其2個最近的鄰域網格也作為該bbox的正樣本anchor。從這里就可以發現bbox的xy回歸分支的取值范圍不再是0~1,而是-0.5~1.5(0.5是網格中心偏移,請仔細思考為啥是這個范圍),因為跨網格預測了。
Neck PANet 和SPP,並且在Neck 中也添加了CSP
CIoU loss +DIoU NMS
輸入圖片的自適應縮放, 減少黑邊
第一步:計算縮放比例
原始縮放尺寸是416*416,都除以原始圖像的尺寸后,
可以得到0.52,和0.69兩個縮放系數,選擇小的縮放系數。
第二步:計算縮放后的尺寸
原始圖片的長寬都乘以最小的縮放系數0.52,寬變成了416,而高變成了312。
第三步:計算黑邊填充數值
將416-312=104,得到原本需要填充的高度。
再采用numpy中np.mod取余數的方式,得到40個像素,再除以2,即得到圖片高度兩端需要填充的數值。
這里最終的結果並不是一個正方形了,
此外,需要注意的是:
a.這里大白填充的是黑色,即(0,0,0),而Yolov5中填充的是灰色,即(114,114,114),都是一樣的效果。
b.訓練時沒有采用縮減黑邊的方式,還是采用傳統填充的方式,即縮放到416*416大小。只是在測試,使用模型推理時,才采用縮減黑邊的方式,提高目標檢測,推理的速度。
來自 <https://jishuin.proginn.com/p/763bfbd2a0ad>