精彩內容
YOLOv4來了!43.5%mAP+65FPS 精度速度最優平衡, 各種調優手段釋真香!
作者團隊:Alexey Bochkovskiy&中國臺灣中央研究院
論文鏈接:
https://arxiv.org/pdf/2004.10934.pdf
代碼鏈接:
https://github.com/AlexeyAB/darknet
1 Introduction
/可以說有許多技巧可以提高卷積神經網絡(CNN)的準確性,但是某些技巧僅適合在某些模型上運行,或者僅在某些問題上運行,或者僅在小型數據集上運行;我們來碼一碼這篇文章裏作者都用了哪些調優手段:
-
加權殘差連接(WRC)
-
跨階段部分連接(CSP)
-
跨小批量標準化(CmBN)
-
自對抗訓練(SAT)
-
Mish激活
-
馬賽克數據增強
-
CmBN
-
DropBlock正則化
-
CIoU丟失
有沒有被驚到!
經過一系列的堆料,終於實現了目前最優的實驗結果:43.5%的AP(在Tesla V100上,MS COCO數據集的實時速度約爲65FPS)。
這篇文章的貢獻如下:
-
開發了一個高效、強大的目標檢測模型。它使每個人都可以使用1080 Ti或2080 TiGPU來訓練一個超級快速和準確的目標探測器。
-
驗證了在檢測器訓練過程中,最先進的Bag-of-Freebies和Bag-of-Specials 的目標檢測方法的影響。
-
修改了最先進的方法,使其更有效,更適合於單GPU訓練,包括CBN、PAN、SAM等。
總之一句話:速度差不多的精度碾壓;精度差不多的速度碾壓。
2 Relate Works
作者對現有目標檢測算法進行了總結:
目前檢測器通常可以分爲以下幾個部分,不管是two-stage還是one-stage都可以劃分爲如下結構,只不過各類目標檢測算法設計改進側重在不同位置:
作者把所有的調優手段分爲了兩大類“Bag of freebies(免費禮包)”和“Bag of specials(特價包)”,細品 還真形象。
-
Bag of freebies
是指在離線訓練階段爲了提升精度而廣泛使用的調優手段,而這種技巧並不在推斷中使用,不會增加推斷時間。
-
數據類:
數據增強(random erase/CutOut/hide-and-seek/grid mask/MixUp/CutMix/GAN)
數據分佈:two-stage的有難例挖掘,one-stage的有focal loss。
-
特徵圖類:
DropOut/DropConnect/DropBlock
-
Bounding Box目標函數類:
MSE/ IoU loss/l1、l2 loss/GIoU loss/DIoU loss/CIoU loss
-
Bag of specials
是指在推斷過程中增加的些許成本但能換來較大精度提升的技巧。
-
增大感受野類:
SPP/ASPP/RFB
-
注意力類:
Squeeze-and-Excitation (SE)/Spa-tial Attention Module (SAM)
-
特徵集成類:
SFAM/ASFF/BiFPN
-
激活函數類:
ReLu/LReLU/PReLU/ReLU6/Scaled ExponentialLinear Unit (SELU)/Swish/hard-Swish/Mish
-
後處理類:
soft NMS/DIoU NMS
3 YOLOv4 Method
3.1 架構選擇
作者選擇架構主要考慮幾方面的平衡:輸入網絡分辨率/卷積層數量/參數數量/輸出維度。
一個模型的分類效果好不見得其檢測效果就好,想要檢測效果好需要以下幾點:
-
更大的網絡輸入分辨率——用於檢測小目標
-
更深的網絡層——能夠覆蓋更大面積的感受野
-
更多的參數——更好的檢測同一圖像內不同size的目標
假設符合上面幾點要求的backboone就是預期的backbone,作者對CSPResNext50和CSPDarknet53進行了比較,如表1所示,表明CSPDarknet53神經網絡是作爲目標檢測backbone的最優選擇。
爲了增大感受野,作者使用了SPP-block,使用PANet代替FPN進行參數聚合以適用於不同level的目標檢測。
最終YOLOv4的架構出爐:
-
backbone:CSPResNext50
-
additional block:SPP-block
-
path-aggregation neck:PANet
-
heads:YOLOv3的heads
3.2 BoF(免費禮包)和BoS(特價包)的選擇
CNN常用的通用技巧:
-
對於訓練激活函數,由於PReLU和SELU更難訓練,而ReLU6是專門爲量化網絡設計的,因此將上述其餘激活函數從候選列表中刪除。
-
在reqularization方法上,發表Drop-Block的人將其方法與其他方法進行了詳細的比較,其regularization方法取得了很大的成果。因此,作者毫不猶豫地選擇DropBlock作爲regularization方法。
-
在歸一化方法的選擇上,由於關注的是隻使用一個GPU的訓練策略,所以沒有考慮syncBN。
3.3 其他改進
爲了使設計的檢測器更適合於單GPU上的訓練,作者做了如下的附加設計和改進:
-
介紹了一種新的數據增強Mosaic法和Self-AdversarialTraining
自對抗訓練法。 -
應用遺傳算法選擇最優超參數。
-
改進SAM,改進PAN,和交叉小批量標準化(CmBN),使我們的設計適合於有效的訓練和檢測
-
Mosaic法
是一種將4張訓練圖片混合成一張的新數據增強方法,這樣可以豐富圖像的上下文信息。如下圖所示:
這種做法的好處是允許檢測上下文之外的目標,增強模型的魯棒性。此外,在每一層從4個不同的圖像批處理標準化計算激活統計,這大大減少了對大mini-batch處理size的需求。
-
AdversarialTraining自對抗訓練
這是一種新的數據擴充技術,該技術分前後兩個階段進行。
在第一階段,神經網絡改變原始圖像而不是網絡權值。通過這種方式,神經網絡對自身執行一種對抗性攻擊,改變原始圖像,從而造成圖像上沒有目標的假象。
在第二階段,訓練神經網絡對修改後的圖像進行正常的目標檢測。
-
CmBN
表示CBN的修改版本,如下圖所示,定義爲跨微批量標準化(CmBN)。這僅收集單個批中的小批之間的統計信息。
-
SAM改進
將SAM從空間上的attention修改爲點上的attention,並將PAN的short-cut連接改爲拼接,分別如圖5和圖6所示:
3.4 YOLOv4架構總結
-
YOLOv4 架構:
Backbone: CSPDarknet53
Neck: SPP [25], PAN
Head: YOLOv3
-
YOLOv4 使用的調優技巧:
BoF:
backbone:CutMix和mosaic數據增強,DropBlock正則化,類標籤平滑。
detector:ciu -loss,CmBN, DropBlock正則化,Mosaic數據增強,自對抗訓練,消除網格敏感性,爲單個groundtruth使用多個anchors,餘弦退火調度器,最優超參數,隨機訓練形狀
BoS:
backbone:Mish激活、跨級部分連接(CSP)、多輸入加權剩餘連接(MiWRC)。
detector:Mish activation,SPP-block, SAM-block, PAN path-aggregation block,DIoU-NMS.
4 Experiments
-
4.1 實驗建立
在ImageNet圖像分類實驗中,默認的超參數如下:
-
訓練步驟爲8,000,000;
-
批量尺寸爲128,
-
小批量尺寸爲32;
-
採用多項式衰減學習速率調度策略,
-
初始學習速率爲0.1,
-
熱身步驟爲1000;
-
momentum和weight衰減分別設置爲0.9和0.005。
在BoF實驗中,還增加了50%的訓練步驟,驗證了混合、切分、鑲嵌、模糊數據增強和標籤平滑正則化方法。
在BoS實驗中,使用與默認設置相同的超參數。比較了LReLU、Swish和Mish激活函數的作用。所有實驗均使用1080Ti或2080Ti GPU進行訓練。
MS COCO目標檢測實驗中,默認的超參數爲:
-
訓練步驟爲500500;
-
採用初始學習速率0.01的步長衰減學習速率策略,在400000步和450000步分別乘以因子0.1;
-
momentum衰減爲0.9,weight衰減爲0.0005。
-
所有的架構都使用一個GPU來執行批處理大小爲64的多尺度訓練,而小批處理大小爲8或4取決於架構和GPU內存限制。
除了使用遺傳算法進行超參數搜索實驗外,其他實驗均使用默認設置。
-
遺傳算法利用YOLOv3-SPP進行帶GIoU損失的訓練,搜索300個epoch的min-val5k集。
-
遺傳算法實驗採用搜索學習率0.00261、momentum0.949、IoU閾值分配ground truth 0.213、損失歸一化器0.07。
對於所有實驗,只使用一個GPU訓練,因此不會使用syncBN等優化多個gpu的技術。
-
4.2 不同特徵對分類器訓練的影響
具體來說,如Fugure7所示,類標籤平滑、不同數據增強技術、雙側模糊、MixUp、CutMix和Mosaic的影響,以及不同激活的影響,如Leaky-ReLU(默認)、Swish和Mish。結果如下表所示:
-
4.3不同特徵對檢測器訓練的影響
進一步研究不同的Bag-of-Freebies (BoF-detector)對detector訓練精度的影響,如表4所示。通過研究在不影響FPS的情況下提高檢測精度的不同特徵。
進一步研究不同的bag-specials(boss-detector)對檢測器訓練精度的影響,包括PAN、RFB、SAM、Gaussian YOLO(G)、ASFF,如表5所示。
-
4.4 不同的backbone和預先訓練的重量對檢波器訓練的影響
-
4.5 不同的mini-batch size對檢測器訓練的影響
5 Results
-
與目前較前沿檢測模型的比較:
由於不同的方法使用不同架構的gpu進行推理時間驗證,我們將yolov4運行在通常採用的Maxwell架構、Pascal架構和Volta架構的gpu上,並將其與其他最先進的方法進行比較。
-
表8列出了使用Maxwell GPU的幀率比較結果,可以是GTX Titan X (Maxwell)或者Tesla M40 GPU。
-
表9列出了使用Pascal GPU的幀率比較結果,可以是Titan X (Pascal)、Titan Xp、GTX 1080 Ti或Tesla P100 GPU。
-
表10列出了使用VoltaGPU的幀率比較結果,可以是Titan Volta,也可以是Tesla V100 GPU。