YOLOv4 解讀:CV 同學必讀的目標檢測技巧大合集

Title: YOLOv4: Optimal Speed and Accuracy of Object Detection(2020)
Link: Paper Code
Tips:

  1. 瞭解提升 CNN 性能有哪些 trick(1.Introduction)
  2. 瞭解目標檢測模型的通用框架和提升性能的方法(2. Rekated work)
  3. YOLOv4 的框架及方法(3.4 YOLOv4)
  4. 學習 ablation study 的實驗設置(4. Experiments)

Summary:

本文提出的 YOLOv4 是對 YOLOv3 的一個改進。它的改進方法就是總結了幾乎所有的檢測技巧,又提出一點兒技巧,然後經過篩選,排列組合,挨個實驗(ablation study)哪些方法有效。經過大量的實驗,總能找出有效果的方法。

這實際是一種技巧的堆疊,沒有提出實質性的新內容,但確實提高了性能。

值得注意的是文章第二部分相關工作,簡直就是目標檢測的一個簡單綜述,閱讀該部分,你就能瞭解模型及方法,如果它提到的每個方法你都瞭解,說明你在這個方向的研究較全面深入(我沒達到)。

值得學習的就是嚴謹的實驗方法。

相關文章

YOLOv1 解讀:使用 unified system/ one-stage 實現目標檢測
YOLOv2 解讀:使 YOLO 檢測更精準更快,嘗試把分類檢測數據集結合使用
YOLOv3 解讀:小改動帶來的性能大提升


Abstract

有很多提升 CNN 性能的功能,有些是通用的,有些是專用的。

作者總結了一些功能——

  • universal features:Weighted-Residual-Connections (WRC), Cross-Stage-Partial-connections (CSP), Cross mini-Batch Normalization (CmBN), Self-adversarial-training (SAT) and Mish-activation
  • new features:WRC, CSP, CmBN, SAT, Mish activation, Mosaic data augmentation, CmBN, DropBlock regularization, and CIoU loss

通過實驗驗證它們的效果,最後組合了幾個有效的方法來提升模型性能,得到的 YOLOv4 在精度和速度上都有提升。

1. Introduction

Goal
設計生產中可用的目標檢測器,它檢測速度快,可並行優化計算,並且訓練和使用簡單。

Contributions

  1. 設計了一個高效的目標檢測模型。你只要有 1080 Ti 或 2080 Ti GPU 就能訓練一個又快又準的 object detector。
  2. 驗證了兩個 state-of-the-art 方法 Bag-of- FreebiesBag-of-Specials 在目標檢測的效果。
  3. 修改了幾個state-of-the-art 方法,使它們在單 GPU 上訓練更有效。

Results
YOLOv4的檢測結果如下,可以看出它比 YOLOv3 在精度(AP)和速度(FPS)上都有很大提升。

2. Related work

這部分就是目標檢測領域的一個綜述,一定要理解!

2.1 介紹了通用模塊,2.2 和 2.3 介紹了常用的改進方法

2.1. Object detection models

目標檢測的通用模型通常包含兩部分:CNN + 預測類別位置的部分。CNN 可稱爲模型的骨幹網絡(backbone),預測部分就是網絡的輸出部分稱爲 head。

再加上輸入的要檢測的圖片,就形成了 輸入→網絡→輸出 的流程,作者形象地比喻爲input→backbone→heads

近幾年,有些學者在 backbone 和 head 之間插入一些 layer,主要用於收集不同階段的特徵圖。這個選項可以看作流程中的 neck,所以模型的整個流程概括爲 input→backbone→neck→heads,通用的模型是由這三 / 四部分組成的。

下面介紹 backbone 和 head 的分類。

GPU
CPU
backbone
VGG, ResNet, ResNeXt, or DenseNet
SqueezeNet, MobileNet, or ShuffleNet
anchor based
anchor free
anchor based
anchor free
head
one-stage
two-stage
YOLO,SSD,RetinaNet
CenterNet,CornerNet,FCOS
fast R-CNN, faster R-CNN, R-FCN, Libra R-CNN,Mask R- CNN
RepPoints

最後附上作者總結的模型組成:

2.2. Bag of freebies

We call these methods that only change the training strategy or only increase the training cost as “bag of freebies.”

Bag of freebies 是指改變訓練策略或僅增加訓練成本的那些方法,沒有 inference cost。因爲傳統的目標檢測器都是離線訓練的,因此最好能在訓練時採取一些方法提高檢測準確率。

本小節介紹了四種場景的 Bag of freebies。

data augmentation
圖片數量有限時,通過數據增廣就可以提高數據的數量和多樣性。圖片類型多了,模型就能對不同環境下的圖片更魯棒(robust)。

  • Photometric distortions 改變圖片的亮度、對比度、飽和度,geometric distortions 改變圖像尺寸裁剪,翻轉等。
  • Random erase 和 CutOut 能隨意選取圖像的一個矩形區域,或隨機把圖片的一部分填零(就像圖片缺失一部分)。
  • Hide-and-seek 和 grid mask 隨機選幾個矩形區域填零。
  • MixUp 利用兩幅圖片通過重疊等方式生成新圖,CutMix 裁剪圖片然後把它補在另一幅圖的矩形區域生成新圖。
  • Style transfer GAN 也可用於數據增廣。

data imbalance
不同類別數量不均衡,一般可以通過樣例挖掘解決,但這種分方法不適用於 one-stage 方法。

  • 這裏提到的解決方法是使用 focal loss。

execute labeling
用 one-hot hard representation 很難表達不同類別之間的關係,這裏提到兩種方法:

  • label smoothing 把 hard label 轉換成 soft-lable 用於訓練,可以使模型更 robust。
  • the concept of knowledge distillation 用於設計 the label refinement network。

the objective function of Bounding Box (BBox) regression
如何定義邊界框迴歸任務的目標函數?傳統的目標檢測器使用 Mean Square Error (MSE) 定義預測結果與ground truth之間的差距(例如座標,高寬,或者偏移量等確定框位置尺寸的量),這些方法實際把這些定點當作獨立的變量,沒有考慮目標的完整性。

爲更好處理這個問題,這裏提到的方法有:

  • IoU loss,考慮預測框和 GT 框的重疊效果,IOU 是一個尺寸不變的表示。
  • GIoU loss,還考慮了目標的形狀和方向。
  • DIoU loss 考慮了目標中心的距離,CIoU loss 同時考慮了重疊區域,中心點距離和縱橫比,收斂更快,效果更精確。

2.3. Bag of specials

For those plugin modules and post-processing methods that only increase the inference cost by a small amount but can significantly improve the accuracy of object detection, we call them “bag of specials”.

Bag of specials 指網絡中的插件模塊或後處理方法,增加了 inference cost(注意 bag of feerbies 沒有沒有),這些模塊和方法也能增加目標檢查的精度。

本小節介紹了五種場景的 bag of specials。

enlarge receptive field
增強感受野的通用模塊是 SPP,ASPP 和 RFB。

SPP 模塊從 Spatial Pyramid Matching (SPM) 衍生,它把 SPM 集成到 CNN 並用 最大池化代替了詞包操作。

attention mechanism
目標檢測中常用的注意力模塊有兩類:channel-wise attention 和 point- wise attention,他們的代表分別爲 Squeeze-and-Excitation (SE) 和 Spatial Attention Module (SAM) 。

feature integration
早期的方法有 skip connection 和 hyper-column,自從多尺度檢測方法如 FPN 提出來,一些輕量級的集成特徵金字塔的方法提出來,比如 SFAM, ASFF,和 BiFPN。

good activation function
好的激活函數能使梯度快速傳播,同時不耗費過多的計算資源。比如 ReLU 以及它衍生出的 LReLU, PReLU,ReLU6,Scaled Exponential Linear Unit (SELU) ,Swish,hard-Swish 和 Mish。

post-processing
目標檢測後處理的方法是 NMS,它用來過濾不好的預測。相關的方法有 greedy NMS,soft NMS 以及 DIoU NMS。

3. Methodology

3.1. Selection of architecture

網絡結構的設計目標:

  • 在輸入分辨率,卷積層數,參數數目,輸出層數之間找到一個最優平衡;
  • 選擇一些額外的能擴大感受域或利於參數聚合的模塊。比如 FPN, PAN, ASFF, BiFPN。

基於目標,通過對比,作者選擇 CSPDarknet53 backbone, SPP additional module, PANet path-aggregation neck, and YOLOv3 (anchor based) head 作爲 YOLOv4 的架構。

未來可能用一些 Bag of Freebies (BoF) 提高模型精確度。

3.2. Selection of BoF and BoS

訓練選擇的一些方法:

3.3. Additional improvements

爲了時檢測器適合在單 GPU 上訓練,作者還設計和改進了一些方法:

  • 提出新的數據增廣方法:Mosaic 和 Self-Adversarial Training (SAT)。Mosaic 混合了四幅不同內容的圖片,SAT 是一個兩階段的對抗訓練。
  • 選擇最優超參數
  • 修改已有方法使模型更適宜訓練:modified SAM, modified PAN, and Cross mini-Batch Normalization (CmBN)

3.4. YOLOv4

詳細介紹框架和模型各部分使用到的方法。

4. Experiments

檢驗選用的不同技術對分類、檢測性能的影響,文章列出了 ablation study 的結果。

4.1. Experimental setup

介紹了實驗設置,具體看論文。

  • ImageNet 分類實驗的默認超參數,BoS 實驗使用默認值,BoF 實驗有一些改動。
  • MS COCO 檢測實驗的默認超參數,除 genetic algorithm 需要探尋參數外,其他實驗都用默認值。

4.2. Influence of different features on Classifier training

表 2 展示不同功能對分類性能的影響。

4.3. Influence of different features on Detector training

表 4 展示不同 Bag-of-Freebies (BoF-detector) 對檢測性能的影響。表上都是 BoF 的縮寫,右圖是對縮寫的解釋。這些方法都是隻影響準確率影響速度的方法。

表 5 展示不同 Bag- of-Specials (BoS-detector) 對檢測性能的影響 。

4.4. Influence of different backbones and pre-trained weightings on Detector training

表 6 展示不同骨幹網絡對檢測性能的影響 。經過實驗發現,分類準確率高的網絡和技巧用於檢測不一定效果好。

4.5. Influence of different mini-batch size on Detector training

表 7 展示不同 batch-size 對檢測性能的影響 。實驗發現,使用 BoF 和 BoS 等技巧,batch-size 對性能影響不大,所以沒必要用昂貴的 GPU 訓練,換句話說,傳統 GPU 就能訓練出一個很棒的檢測器。

5. Results

通過和其他 state-of-the-art 方法比較,YOLOv4 方法位於 Pareto optimality curve ,無論是速度還是準確率都超過最快最準確的檢測器。

結果圖很多很長,具體去論文找(圖 8 和表 8,9,10)

6. Conclusions

本文提出一個 state of the art 檢測器,它檢測更快(FPS)更精確(MS COCO AP50…95 and AP50)。

作者驗證了大量技巧,並選擇性地使用這些技巧來提高分類器和檢測器的準確性。

這些技巧可用於未來研究和開發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章