YOLOv4: 雖遲但到,大型調優現場,43mAP/83FPS | 論文速遞

YOLOv4 在速度和準確率上都十分優異,作者使用了大量的 trick,論文也寫得很紮實,在工程還是學術上都有十分重要的意義,既可以學習如何調參,也可以了解目標檢測的 trick。

來源:曉飛的算法工程筆記 公眾號

論文: YOLOv4: Optimal Speed and Accuracy of Object Detection

Introduction


  論文提出 YOLOv4,從圖 1 的結果來看,相對於 YOLOv3 在準確率上提升了近 10 個點,然而速度並幾乎沒有下降,論文主要貢獻如下:

  • 提出速度更快、精度更好的檢測模型,僅需要單張 1080Ti 或 2080Ti 即可完成訓練。
  • 驗證了目前 SOTA 的 Bag-ofFreebies(不增加推理成本的 trick)和 Bag-of-Specials(增加推理成本的 trick)的有效性。
  • 修改了 SOTA 方法,讓其更高效且更合適地在單卡進行訓練,包括 CBN、PAN、SAM 等。

Methodology


Selection of architecture

  對檢測模型來說,分類最優的主幹網絡不一定是最合適的,適用於目標檢測的主幹網絡需滿足以下要求:

  • 高輸入分辨率,提高小物體的檢測準確率。
  • 更多的層,提高感受域來適應輸入的增加。
  • 更多的參數,提高檢測單圖多尺寸目標的能力。

  理論來講,應該選擇感受域更大且參數了更大的模型作為主幹網絡,表 1 對比了三種 SOTA 主幹網絡的,可以看到 CSPDarknet53 的感受域、參數量以及速度都是最好的,故選其為主幹網絡。

  另外,使用不同大小的感受域有以下好處:

  • 匹配物體大小,可以觀察完整的物體。
  • 匹配網絡大小,可以觀察物體的上下文信息。
  • 超過網絡的大小,增加點與最終激活之間的連接數。

  為此,YOLOv4 加入了 SPP block,能夠顯着地改善感受域大小,而且速度幾乎沒有什麼下降。

  另外,使用 PANet 替換 FPN 來進行多通道特徵的融合。
  最終,YOLOv4 選擇 CSPDarknet53 作為主幹網絡,配合 SPP 模塊,PANet 通道融合以及 YOLOv3 的 anchor based head。

Selection of BoF and BoS

  目前比較有效的目標檢測提升的 trick:

  • 激活函數: ReLU, leaky-ReLU, parametric-ReLU, ReLU6, SELU, Swish, or Mish。
  • bbox 回歸損失: MSE, IoU, GIoU, CIoU, DIoU
  • 數據增強: CutOut, MixUp, CutMix
  • 正則化方法: DropOut, DropPath, Spatial DropOut, or DropBlock
  • 歸一化方法: Batch Normalization(BN), Cross-GPU Batch Normalization(CGBN or SyncBN), Filter Response Normalization (FRN), or Cross-Iteration Batch Normalization(CBN)

  由於 PReLU 和 SELU 難以訓練,並且 ReLU6 是專門為量化網絡設計的,從激活函數中去除這幾種。而在正則化方法中,DropBlock 的效果是最優的。對於歸一化方法的選擇,由於需要單卡訓練,因此不考慮 SyncBN。

Additional improvements

  為了讓模型能更好地在單卡進行訓練,做了以下的改進:

  • 提出新的數據增強方法 Mosaic 和 Self-Adversarial Training (SAT)。
  • 使用遺傳算法選擇最優的超參數。
  • 修改目前的方法來讓訓練和檢測更有效,包括改進的 SAM,改進的 PAN 以及 Cross mini-Batch Normalization (CmBN)

  Mosaic 是新的數據增強方法,同時融合 4 張訓練圖片,CutMix 僅融合 2 張圖片,使得目標的檢測範圍超出其正常的上下文,另外 BN 每次統計 4 張圖片,這能顯着地減少對大 mini-batch 的需要。
  Self-Adversarial Training(SAT)也提供新的數據增強手段,分為兩個前向反向階段。在第一階段,先對圖片進行前向計算,然後通過反向傳播修改圖片的像素,注意這裡不修改網絡的權重,通過這種方式,網絡進行了一次對抗式訓練,製造出沒有目標的假象。在第二階段,對修改後的圖片進行正常的訓練。

  CmBN 是改進版的 CBN,僅統計 single-batch 中的 mini-batch,如圖 4 所示,假設 t-3~t 為 single-batch 中的 mini-batch,若干 single-batch 中包含單個 mini-batch,則 CmBN 與 BN 一樣。

  將 SAM 從 spitial-wise attention 修改為 point-wise attention,即輸入和輸出的大小一致。

  將 PAN 的 shortcut 連接方法,從相加改為 concate。

YOLOv4

  YOLOv4 包含:

  • Backbone:CSPDarknet53
  • Neck:SPP,PAN
  • Head:YOLOv3

  YOLO v4 使用:

  • 主幹網絡的 BoF(Bag of Freebies):CutMix 和 Mosaic 數據增強, DropBlock 正則化, 標籤平滑(Class label smoothing)
  • 主幹網絡的 BoS(Bag of Specials):Mish 激活, Cross-stage partial connections (CSPNet), Multiinput weighted residual connections(MiWRC)
  • 檢測端的 BoF(Bag of Freebies):CIoU-loss, CmBN, DropBlock 正則化, Mosaic 數據增強, Self-Adversarial Training, 去除邊框敏感性(Eliminate grid sensitivity,見實驗部分的解釋), 多 anchor 回歸(之前只選最大的), 餘弦退火學習率調整(Cosine annealing scheduler), 使用遺傳算法最優化超參數, 隨機輸入大小
  • 檢測端的 BoS(Bag of Specials):Mish 激活, SPP-block, SAM-block, PAN 通道融合, DIoU-NMS

Experiments


Influence of different features on Classifier training

  CutMix、Mosaic 數據增強和標籤平衡(Class label smoothing)比較有效。

Influence of different features on Detector training

  表 4 對比的 BoF 如下:

  • S:去除邊框敏感性,b_x=\sigma(t_x) +c_x,之前的中心點回歸與 anchor 的邊相關,當需要趨近c_xc_x+1時,需要很大的|t_x|,為此對 sigmoid 添加一個大於 1 的因子來減少這個影響
  • M:Mosaic 數據增強
  • IT:IoU 閾值,使用大於 IoU 閾值的 anchor 進行訓練,之前好像只選最大的
  • GA:使用遺傳算法進行最優超參選擇
  • LS:標籤平滑
  • CNB:論文提出的 CmBN
  • CA:使用餘弦退火(Cosine annealing scheduler)進行學習率下降
  • DM:動態 mini-batch 大小,小分辨率時增加 mini-batch
  • OA:使用最優的 anchors
  • GIoU, CIoU, DIoU, MSE:bbox 損失函數

  論文也對比了檢測端的 BoS,從結果來看,SPP、PAN 和 SAM 同時使用時效果最好。

Influence of different backbones and pretrained weightings on Detector training

  論文研究了不同主幹網絡對檢測準確率的影響,可以看到 CSPDarknet53 能更好地適應各種改進。

Influence of different mini-batch size on Detector training

  論文對比了不同的 mini-batch 大小下的檢測準確率,在加入 BoF 和 BoS 訓練策略後,mini-batch 的改變幾乎對準確率沒有影響。

Results

  表 8、9 和 10 分別為 Maxwell GPU、Pascal GPU 和 Volta GPU 上的實驗結果,從大量的實驗對比來看,YOLOv4 在速度和準確率上都十分耐看。

CONCLUSION


  YOLOv4 在速度和準確率上都十分優異,作者使用了大量的 trick,論文也寫得很紮實,在工程還是學術上都有十分重要的意義,既可以學習如何調參,也可以了解目標檢測的 trick。



如果本文對你有幫助,麻煩點個贊或在看唄 ~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

work-life balance.