《YOLOV4&5原理與源代碼解析之一:數據增強》


      項目中使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM