YOLO家族之新篇YOLOV4


一、什么是YOLOV4

       YOLOV4是基於原有YOLO目標檢測架構,采用了近年來CNN領域最優秀的優化策略。

從數據處理,主干網絡,模型訓練,激活函數,損失函數等各個方面都有着不同程度的優化。

二、YOLOV4的改進總結

       1、開發了一個簡單高效的目標檢測算法,降低了訓練門檻:僅使用一塊GPU:1080TI,就可以訓練一個又快又准的檢測器;

       2、驗證了最新的Bag-of-Freebies和Bag-of-Specials在訓練過程中對YOLOV4的影響;

       3、優化了一些最新提出的算法:CBN,PAN,SAM,使YOVOV4可在一塊GPU上訓練。

三、常用改進方法介紹

      1、模型結構        

 

 

一個完整的網絡模型一般包含四部分:

1)輸入部分:算法的輸入,整個圖像,一個PATCH或圖像金字塔

2)主干網絡:提取圖像的特征,淺層特征如:邊緣,顏色,紋理等。可以使用設計好並訓練好的網絡:VGG16,19,RESNET50,RexNeXt101,Darknet53,當然,還有一些輕量級的網絡:MobileNet1,2,3 ,ShuffleNet1,2

3)瓶頸部分:特征增強,對主干網提取到的特征進行加工,增強。典型的有:SPP,ASPP,RFB,SAM,還有FPN,PAN,NAS-FPN,BiFPN,ASFF,SFAM。

4)檢測頭:算法項的輸出。

   如想得到HeatMap(CenterNet),就增加一些反卷積;

   如想得到BBOX,就接CONV來輸出結果,如:YOLO,SSD;

  如想輸出多任務(MaskRCNN)那就輸出三個Head:分類Classification ,回歸Regression ,分割Segmentation

2、訓練策略

  2.1  Bag-of-freebies

  在不增加模型復雜度的情況下,使用一些比較有用的訓練策略來提升准確率,如:Data augmentation

  2.1.1 數據增強

  增加訓練樣本的多樣性,使模型有更高的魯棒性。

    [1]逐像素pixel-wise

   (1)幾何增強:隨機翻轉,隨機裁剪,拉伸,旋轉

     (2)色彩增強:對比度增強,亮度增強,HSV空間增強(較關鍵)

    [2]逐塊block-wise

      (1) 在圖像中隨機裁剪矩形區域,用0填充(cutout)

      (2) 隨機裁剪多個矩形區域(grid mask)

      (3)在Heatmap上裁剪並填充(dropout,dropconnect,dropblock)

    [3] Mixup

      將兩個圖像按不同比例相加,a*0.1+b*0.9=c。

 2.1.2 解決數據不平衡

     數據不平衡分兩種:

      一、背景和要識別物體之間的不均衡

          如:在兩階段方法中,RPN階段會生成很多ROI,里面有太多背景,有用的框很少;

     二、類別不平衡

         識別物體間不同類別間的不平衡,涉及到一個長尾分布。需要使用OHEM(困難樣本挖掘)或Focal loss,或Label smooth

  2.1.3 修改Loss函數

     最早是MSE,現在是NMS(IOU),然后是GIOU Loss。

  2.2 Bag-of=Specials

    通過增加少量的計算,能有效增加物體檢測的准確率。

  2.2.1  增大感受野

   SPP:解決輸入尺寸不一致,按比例1,2,4或1,2,3三個尺度划分Pooling,輸出相同大小FeatureMap

   ASPP:在SPP前加了Atrous或Dilated

  RFB:在同一個FeatureMap下,引入不同dilated ratio的空洞卷積,提取到不同的感受野,最后進行融合

  2.2.2 注意力機制

   channel attention:SENet,在FeatureMap層中同時引入一個1x1xC的weights,可以對每個channel上的特征加入不同權重,提高特征學習能力。

  Spatial attention:在HW維度上加入attention。

  Channel+Spatial:channel attention和spatial attention融合。

  2.2.3 特征融合或特征集成

  skip connection:在Encoder-decoder中比較多,如:UNet,融合底層和高層的特征信息;

  hyper-column:就像InceptionV4結構,使用不同的kernel-size的卷積來集成特征;

  FPN,ASFF,BiFPN:將不同階段的不同尺度的特征進行融合。EfficientDet中BiFPN連接最密集;

  2.2.4 激活函數

  一個好的激活函數既能使得梯度傳播更高效,同時不會占用額外的計算資源。

  ReLU

  LReLU、PreLU、 SELU、ReLU6、Swish、Hard-Swish、Mish

  2.2.5后處理

  NMS,SoftNMS,DIoU NMS

四、本文改進方法

   1、 數據增強:Mosaic

  

   將4張訓練圖片混合成一張的新的數據增強方法,可以豐富圖像的上下文信息,增強模型的魯棒性,另外也減少了對Mini-batch處理size的需求。

    2、自對抗訓練 Adversarial training

  一種新的數據擴充技術,分兩階段:第一階段,神經網絡先改變原始圖像而不是網絡權值,對自身執行對抗性攻擊,改變原始圖像,從而造成圖像上沒有目標的假象;第二階段,訓練神經網絡對修改后的圖像進行正常的目標檢測。

   3、CmBN

    是CBN的修改版本,定義為跨微批量標准化,僅收集單個批次中的小批之間的統計信息

  4、SAM(Spatial Attention Module)改進

   將SAM從空間上的attention修改為點上的attention,並將PAN的short-cut連接改為拼接,如下圖:

 

五、YOLOV4的架構

    Backbone:CSPDarknet53

    Neck:SPP,PAN

    Head:YOLOV3

  YOLOV4的調試Trick:

   BoF:

      Bakbone:CutMix和Mosaic數據增強,DropBlock正則化,類標簽平滑;

      Detector:CIoU Loss,DropBlock正則化,自對抗訓練,最優超參數;

   BoS:

      Bakbone:Mish,CSP(跨級部分連接),MiWRC(多輸入加權殘差連接)

      Detector:SPPBlock,SAMBlock,PAN(路徑聚合網絡),DIOU-NMS 

六、實驗與超參數

1、分類

   ImageNet圖像分類,超參數如下:

  訓練步驟:8,000,000

  批量尺寸:128,小批量尺寸:32

  采用多項式衰減學習速率調整策略,初始學習率為:0.1

  warmup:1000

  momentum:0.9,weight decay:0.005

2、檢測

  訓練步驟:500500

  初始學習率:0.01,4,000,000步后和4,500,000步后分別乘以0.1

  momentum:0.9,weight:0.0005

  批量大小:64,小批量大小:8或4

七、原作信息

   論文鏈接:

   https://arxiv.org/pdf/2004.10934.pdf

   代碼鏈接:

    https://github.com/AlexeyAB/darknet

   已訓練好的模型文件:

  https://pan.baidu.com/s/189L8HHBIUpQ5tzleKw1BvA    提取碼: kd6b

 

上一篇:

  yolo模型的特點與各版本性能對比

下一篇:

  YOLOV5,待更新。。。

 


免責聲明!

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



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