項目中使用YOLO系列已經大半年,是時候總結下原理了。
事實上YOLO3已經是成熟可靠的目標檢測框架,具有很好的商業價值;而YOLO4&5是將近年來DL領域一些創新、可靠、有效的tricks加進去,進一步提升了YOLO的效果,江湖傳言曰:嫁衣神功。
YOLOV4的數據增強只會增加訓練成本,得到魯棒性更強的網絡模型;而不會影響推理階段性能。
一、MixUp混合
如上圖MixUp[48]的效果圖,是將Dog圖和Cat作了線性疊加,權重各取0.5。
二、Cutout隨機裁剪
如上圖Cutout[3]的效果圖,隨機遮擋目標狗的頭部、尾巴,腳等部位。
(注:dropblock是一種剪枝方式,這種方式其實是借鑒2017年的cutout數據增強的方式,cutout是將輸入圖像的部分區域清零,而Dropblock則是將Cutout應用到每一個特征圖。而且並不是用固定的歸零比率,而是在訓練時以一個小的比率開始,隨着訓練過程線性的增加這個比率。)
三、CutMix隨機遮擋
CutMix = CutUp + CutOut,單詞組合。
如上圖CutMix的效果圖,將其他類別的圖像塊剪切到當前圖像,進行遮擋干擾,達到數據增強效果。注意標簽的定義,表示當前目標:是Dog置信度為0.6,是Cat置信度為0.4。這個置信度是SoftMax函數輸出的值,取值范圍[0,1],可輸出當前目標屬於每個類別的概率;扯遠了。
還有其他的旋轉、反轉、亮度、色調、對比度增強就不提了,比較簡單。YOLOV4&5有一個重要的數據增強,叫做:馬賽克增強。
四、Mosaic馬賽克增強
這種數據增強算法是YOLOV5的作者提出,據說V5作者曾公開發表言論:YOLOV4之所以有很好的效果,很大程度上歸功於馬賽克增強。
訓練的時候,我們知道,batchsize大小設置是和顯存大小有關,例如:batchsize=1,表示一張圖,這里Mosaic增強有四張圖,如下圖,將四張圖象合成一張圖像訓練,在GPU資源有限的情況下,一次batchsize處理的圖片越多越好。當然,下面這四張圖,還是常規增強、標注。四張圖混在一起,增加了圖像背景復雜度,亦是增強。馬賽克增強是使得YOLOV4對平明用戶很友好(我自己的RTX2060就能訓練)。
五、Random Erase
用隨機值或者訓練集的平均像素值替換圖像的區域。如圖,左邊一列都是原圖,右邊三列是增強后效果圖。
六、Hide and Seek
根據概率隨機隱藏一些補丁塊。如圖在圖像上設置隨機補丁。
七、隨機噪聲
在此之前,先說明下YOLOV4的SAT技術,即:添加隨機噪聲,如下圖,中間是自動生成的隨機噪聲矩陣,乘一個系數0.07,將其線性疊加到原圖上,這也是一種數據增強。Self-adversarial-training(SAT)。對抗訓練(adversarial training)是增強神經網絡魯棒性的重要方式。在對抗訓練的過程中,樣本會被混合一些微小的擾動(改變很小,但是很可能造成誤分類),然后使神經網絡適應這種改變,從而對對抗樣本具有魯棒性。
以上所提及的數據增強,馬賽克增強是YOLOV4&5的亮點,其他方法也是集“百家之長於一身”。
reference:對抗訓練:
https://zhuanlan.zhihu.com/p/104040055