還有看過YOLOv4的朋友可以看一下我們另外一篇博客:YOLOv4全文翻譯
YOLOv4它到底做了些什麼,才能得到這麼高的精度和速度,並且能夠在一塊1080Ti的GPU上就可以進行訓練和測試?
YOLOv4其實並沒有提出什麼特別大的創新點,它的主要內容可以概括爲三個方面:目標檢測算法綜述+最新算法的大量實驗+最優的算法組合。這三者是相互聯繫,層層遞進的。在相關工作部分,作者將目標檢測的整體框架分成三個部分:backbone、neck以及head。這三個部分對整個檢測器的作用是各有偏重的,這其實也就是意味着我們可以使用不同的算法,分別提升這三個部分的檢測效果,進而提升檢測器整體的性能。因此,作者從這個思路出發,研究了目前最近的算法,分別對其進行對比試驗,最終得到了一個最優的組合,這個組合所帶來的整體增益最高。
1 目標檢測算法的綜述
作者將整個目標檢測器分成三個部分:
從上圖,我們可以看這三個部分的分工各有偏重:我們將backbone放在ImageNet上進行預訓練,先得到一個比較好的網絡權重,常見的backbone有VGG, RestNet等等;在預測類別信息以及邊界框位置上,我們使用head進行預測,它分爲one-stage和two-stage兩個系列的算法。在head和backbone之間,常常會使用neck來收集低級和高級的特徵圖進行融合,低級的特徵圖通常保留着物體的紋理信息,而高級的特徵圖包含這大量的語義信息,爲了能夠讓網絡更有效地做出預測,通常會將兩類信息進行融合,常見的neck包括FPN (Feature Pyramid Network) 和PAN (Path Aggregation Network)。
2 最新的算法
作者根據算法對網絡檢測的準確率以及推理時間的損耗,將最新的算法分爲兩類:一類是能夠增加網絡的整體性能,但是基本上沒有增加檢測器的推理時間的損耗,我們稱之爲bag of freebies(加量不加價:性能的提升就像是商品的贈品)。另一類雖然會增加推理時間,但是也能夠大幅度的提高網絡的整體性能,我們稱之爲bag of specials(特價:少量的推理損耗能夠大幅度提供網絡的新能)
2.1 bag of freebies
Bag of freebies主要包括解決四個問題:如何實現數據增廣、如何解決樣本不均衡的問題、如何解決one-hot類型標籤中類別關聯度難以描述的問題以及如何設計邊界框迴歸的目標函數。
2.2 bag of specials
Bag of speicals主要包括兩個部分:使用即插即拔的模塊加載到網絡中,提高網絡的整體性能;對檢測器預測的結果進行有效的過濾。
3 大量的實驗
作者在總結檢測器的主要部分以及兩類不同的算法之後,作者分別對相關的算法進行了對比實驗,然後研究每個算法對網絡性能的影響,然後選出那個最優的算法組合。
3.1 backbone的選擇
作者提供了兩個可選的backbone:CSPDarknet53和CSPResNeXt-50。作者通過實驗發現,前者在分類任務上要差於後者,但是在檢測任務上,前者的性能要優於後者。這說明在分類任務上最優的backbone在檢測任務上並不一定是最優的。作者由將BoF和Mish算法應用到兩個backbone之後發現,CSPResNeXt-50雖然增加了分類精度但是降低了檢測的精度;而CSPDarknet53不僅增加了分類精度,而且還增加了精測的精度。這說明CSPDarknet53的魯棒性比前者更優,CSPDarknet53更適合作爲YOLOv4的backbone。
3.2 neck
爲了增加網絡的感受野,並且能夠將網絡中不同的特徵圖進行融合,作者選用了SPP(Spatial pyramid pooling)作爲額外的插件模塊,並且使用PAN(Path Aggregation Network)進行特徵圖的融合。
3.3 BoF和BoS的選擇
a. BoF的選擇
確定了網絡基本的架構之後,作者可是選擇最合適的BoF組合。作者通過對邊實驗發現了幾個化學反應比較好的組合:S(Eliminate grid sensitivity) + M(Mosaic data augmentation) + IT(IoU threshod) + GA(Genetic algorithms) + OA(Optimized Anchors) + GIoU/CIoU
b. BoS的選擇
通過實驗發現,SPP+PAN+SAM一起使用之後,檢測器得到了一個最好的效果(SAM: Spatial Attention Module),其中PAN和SAM都是進行了改進。
YOLOv4使用到的技巧:
改進的部分 |
使用的技巧 |
Activation |
Mish |
Bounding box regression loss |
GIoU/CIoU |
Data augmentation |
Mosaic Self-Adversarial Training(SAT) |
Regularization method |
DropBlock |
Normalization |
Improved Cross mini-Batch Normalization(CmBN) |
4 總結
通過上面我們發現,作者雖然沒有提出什麼特別亮眼的模型和算法,但是,作者集百家之長,通過大量的實驗分析每個算法對檢測性能的影響,從而找到最優的算法組合。