深度學習論文翻譯解析(二十):YOLOv4: Optimal Speed and Accuracy of Object Detection

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

論文作者:Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao

論文地址:https://arxiv.org/abs/2004.10934.pdf

參考的 YOLO V4 翻譯博客:https://www.machunjie.com/translate/695.html

YOLO V4 的源碼:https://github.com/AlexeyAB/darknet

聲明:小編翻譯論文僅爲學習,如有侵權請聯繫小編刪除博文,謝謝!           

  小編是一個機器學習初學者,打算認真研究論文,但是英文水平有限,所以論文翻譯中用到了Google,並自己逐句檢查過,但還是會有顯得晦澀的地方,如有語法/專業名詞翻譯錯誤,還請見諒,並歡迎及時指出。

如果需要小編其他論文翻譯,請移步小編的GitHub地址

  傳送門:請點擊我

  如果點擊有誤:https://github.com/LeBron-Jian/DeepLearningNote

 

  YOLO v4 算法就是在原有 YOLO 目標檢測架構的基礎上,採用了近些年 CNN 領域中最優秀的優化策略,從數據處理,主幹網絡,網絡訓練,激活函數,損失函數等各個方面都有着不同程度的優化,雖沒有理論上的創新,但是會受到許許多多的工程師喜歡,各個優化算法的嘗試。文章就像目標檢測的 trick 綜述,效果達到了實現 FPS 與 Precision 平衡的目標檢測 new baseline。

  論文主要有下面三點貢獻:

  • 1,開發了一個高效而強大的模型,使得任何人都可以使用一張 1080Ti 或者 2080Ti GPU 去訓練一個超級快速和精確的目標檢測器。
  • 2,驗證了一系列的 state-of-the-art 的目標檢測器訓練方法的影響
  • 3,修改了 state-of-the-art 方法,使得他們在使用單個 GPU 進行訓練的時候更加有效和適配,包括 CBN,PAN,SAM等。

  作者把訓練的方法分爲了兩類:

  • 1,Bag of freebies:只改變訓練策略或者只增加訓練成本,比如數據增強
  • 2,Bag of specials:插件模塊和後處理方法,他們僅僅增加一點推理成本,但是可以極大地提升目標檢測的精度。

1,摘要

  有大量的特徵來提高卷積神經網絡(CNN)的準確率。需要在大數據集下對這張技巧的組合進行實際測試,並對結果進行理論論證要求。某些技巧僅在某些模型上使用和專門針對某些問題,或只針對小規模的數據集;而一些技巧,如批處理歸一化,殘差連接等,適用於大多數的模型,任務和數據集。我們假設這種通用的技巧包含 Weighted-Residual-Connection(WRC), Cross-Stage-Partial-Connections(CSP),跨小型批量連接(CMBN), Self-adversatial-trainin(SAT)和 Mish-activation。 我們在本文中使用這些新的技巧:WRC,CSP,CMBN,SAT,Mish-activation,Mosaic data augmentation,CMBN,DropBlock 正則化和CIoU損失,以及組合技巧,以達到最好的效果。在MS COCO數據集中的 AP 43.5%(65.7% AP50),在實際應用中,Tesla V100 顯卡上上速度可達 65 FPS。Source code is at  https://github.com/AlexeyAB/darknet。

1,引言

  大多數基於CNN的目標檢測器基本上都僅適用於推薦系統。例如:通過城市攝像頭尋找免費停車位,它由精確的慢速模型執行,而汽車碰撞警示由快速精度低模型執行。改善實時目標檢測器的精度,使其能夠不但用於提示生成推薦系統,也用於獨立的流程管理和減少人力投入。GPU使得實時目標檢測可以以合理的價格進行,最準確的現代神經網絡不是實時運行的,需要大量的訓練的GPU與大的 batch size。我們通過創建一個CNN來解決這樣的問題。在傳統的GPU上實時生成,而對於這些訓練只需要一個傳統的 GPU。

  這項工作(YOLO-v4)的主要目標是設計一個應用於生產環境中的快速目標檢測器,並且進行並行計算優化,而不是刻意去追求理論上的低計算量指標(BFLOP)。同時YOLOv4的作用希望所設計的算法能易於訓練和使用。也就是說任何使用傳統GPU訓練和測試可以實現實時,高質量,有說服力的目標檢測結果。YOLOv4 的結果如圖1所示。現將我們的貢獻總結如下:

  • 1,我們構建了一個簡單且高效的目標檢測模型,該算法降低了訓練門檻,這使得普通人員都可以使用 1080Ti 或 2080 Ti GPU 來訓練一個超快,準確的(super fast and accurate)目標檢測器。
  • 2,我們驗證了最先進的 Bag-of-Freebies 和 Bag-of-Specials 方法在訓練期間的影響。
  • 3,我們修改了最先進的方法,並且使其更爲有效,適合單GPU訓練。包括 CBN【89】, PAN【49】, SAM【85】等,從而使得 YOLO-v4 能夠在一塊 GPU 上就可以訓練起來。

  一個檢測算法可以理解爲:Object detector = backbone + neck + head

  Backbone:可以理解爲是提取圖像特徵的部分,由於圖像中的淺層特徵(low-level)是比較類似的,例如提取邊緣,顏色,紋理這些。因此這部分可以很好的借鑑一些設計好並且已經訓練好的網絡,例如(VGG16, 19, ResNet-50, ResNeXt-101,DarkNet53),同時還有一些輕量級的 backbone(MobileNetV1,2,3, ShuffleNet1,2)。

  Neck:這部分大佬的理解是特徵增強模塊,前面的 backbone已經提取到了一些相關的淺層特徵,由這部分對 backbone 提取到的淺層特徵(low-level feature)進行加工,增強。從而使得模型學習到的特徵是我想要的特徵。這部分典型的有(SPP,ASPP in deeplabV3+, RFB,SAM),還有一些(FPN, PAN, NAS-FPN, BiFPN, ASFF, SFAM)。

  Head:檢測頭,這部分就到了算法最關鍵的部分,就是來輸出你想要的結果,例如想得到一個 heatmap,(如在 conternet 中),那就增加一些反捲積層來一層一層反捲積回去。如果想直接得到 Bbox,那就可以接 conv 來輸出結果,例如 YOLO,SSD這些。亦或是想輸出多任務(mask-RCNN),那就輸出三個 head:classification, regression, segmentation(就mask那部分)。

2,相關工作

2.1  目標檢測模型

  現代目標檢測器通常由兩部分組成,ImageNet 上預訓練的 backbone 和用於預訓練的 BBOX 的檢測器的 head。對於那些在 GPU 平臺上運行的探測器,其 backbone 可以是 VGG【68】, ResNet【26】, ResNeXt【86】, 或 DenseNet【30】。對於那些運行在 CPU 平臺上的檢測器形式,他們的 backbone 可以是 SqueezeNet【31】, MobileNet【28, 66, 27, 74】,或 ShuffleNet【97, 53】。至於 head 部分,它通常被分爲兩類:即 One-Stage 目標檢測器和 two-stage 目標檢測器。最優代表性的 two-stage 檢測器是 RCNN【19】系列。包括快速的 R-CNN【18】, Faster R-CNN【64】, R-FCN【9】, Libra R-CNN【58】。也可以做一個 two-stage 目標檢測器一個 Anchor-free 目標檢測器。如RepPoints【87】。對於One-stage 檢測器來說,最代表性的有 YOLO【61, 62, 63】, SSD【50】 RetinaNet【45】。近幾年來,Anchor-free one-stage 目標探測器被開發,如 CenterNet【13】, CornerNet【37,38】,FOCS【78】等。近年來發展起來的檢測器,往往會在 backbone 和 head 之間插入一些層,這些層用於收集不同階段的特徵圖。我們可以稱它爲檢測器的 neck。通常情況下 neck 是由幾個 bottom-up paths 和 幾個 top-down paths 組成。FPN【44】,PAN【49】, BiFPN【77】,NAS-FPN【17】具有這個機制。

  除上述模型外,有的研究者重新構建 backbone(DetNet【43】, DETNAS【7】)或重新構建整個模型(SpineNet【12】, HitDetector【20】)用於目標檢測。

  總結,通常目標檢測模型有如下架構:

 2.2  Bag of freebies

  什麼叫 Bag of Freebies? 字面意思就是免費贈品。在目標檢測中是指:用一些比較有用的訓練技巧來訓練模型,從而使得模型取得更好的準確率但是不增加模型的複雜度,也就是不增加推理(inference)式的計算量(cost)。在目標檢測中,提到 bag of  freebies,首先會想到的就是 Data augmentation。

  本論文中,BoF指的是那些能提升精度而不增加推斷時間的技術。

  • 1,比如數據增光的方法:圖像幾何變換,Cutout,grid mask等
  • 2,網絡正則化的方法:Dropout, DropBlock等
  • 3,類別不平衡的處理方法
  • 4,難例挖掘方法
  • 5,損失函數的設計

  通常,傳統的目標檢測器是離線訓練的。因此,研究人員總是喜歡利用這一優勢,開發更好的訓練方法,使目標檢測器在不增加推理成本的情況下獲得更好的精度。我們將這些方法稱爲“免費贈品包”,這些方法僅改變訓練策略或僅增加訓練成本。目標檢測方法通常採用並符合免費贈品包的定義是數據擴充。數據擴增的目的是增加輸入圖像的可變性。使設計的目標檢測模型對從不同環境獲得的圖像具有更高的魯棒性。例如,光度失真和幾何失真是兩種常用的數據擴增方法,他們肯定有利於目標檢測任務。在處理光度失真時,我們調整了圖像的亮度,對比度,色調,飽和度和噪聲。對於幾何失真,我們添加隨機縮放,裁剪,翻轉和旋轉。

   上面提到的數據擴充方法是所有關於像素的調整,並保留調整後區域中的所有原始像素信息。此外,一些從事數據擴增的研究人員強調模擬物體遮擋問題。他們在圖像分類和物體檢測方面取得了良好的效果。例如,隨機擦除【100】 和 CutOut【11】可以隨機選擇圖像中的矩形區域並填充零的隨機或互補值。至於隱藏和查找【69】和網絡掩碼【6】,他們隨機或均勻地選擇圖像中的多個矩形區域,並將其替換爲所有零。如果類似的概念應用於要素地圖,則有“Dropout【71】”, DropConnect【80】, DropBlock【16】方法。此外,一些研究者提出將多個圖像結合在一起執行數據增強的方法。例如,MixUp【92】使用兩個圖像以不同的係數比率增和疊加,然後使用這些疊加比率調整標籤。至於CutMix【91】,它是將裁剪的圖像覆蓋到其他圖像的矩形區域,並根據混合區域的大小調整標籤。除上述方法外,樣式傳輸 GAN【15】還用於數據擴增,這種使用可以有效地減少 CNN 學到的紋理偏差。

  MIX-UP:Mix-up 在分類任務中,將兩個圖像按照不同的比例相加,例如 A*0.1 + B*0.9=C,那麼C的 label 就是 [0.1A, 0.9A]。在目標檢測中的做法就是將一些框相加,這些 label 中就多了一些不同置信度的框。

  Style-transfer GAN:用style-transfer GAN 做數據增強,例如在做街景分割和目標檢測的時候,將  GTA-5 的數據做一個 style-transfer,擴充一些數據集。不過更多的是用在了 Domain Adaptation上。

   與上述各種方法不同,其他一些免費贈品方法專門用於解決數據集中語義分佈可能存在偏差的問題。在處理語義分佈偏差問題時,一個很重要的問題是,不同類之間的數據不平衡問題,這個問題往往通過硬負例挖掘【72】或兩階段目標檢測器中的聯機硬示例挖掘【67】來解決。但實例挖掘方法不適用於一級目標檢測器,因爲這種檢測器屬於密集預測架構。因此,Lin 等人【45】提出瞭解決不同類別之間存在的數據不平衡問題的重點損耗問題。另一個非常重要的問題是,很難表達不同類別與 one-hot 表示的關係。在執行標籤時,通常使用此方案。【73】中建議的標籤平衡是將硬標籤轉換爲軟標籤進行訓練,這將使模型更加堅固。爲了獲得更好的軟標籤,Islam 等人引入了知識蒸餾的概念來設計標籤細化網絡。

  第三個 bag of  freebies 就是在 loss function 上進行改動,之前常用的計算 bbox 的loss使用 MSE,現在改爲了計算IoU之間的 loss,還有一個叫做 GIoU loss。這裏面有一個比較經典的算法就是在 Mask-RCNN 上改動的 Mask scoring RCNN中,這部分的邏輯是這樣的:在選擇 ROI時,如果按照每個 ROI 的 score 來排序篩選 ROI,會出現一個問題就是,置信度高的 ROI 並不一定 BBOX的位置就準,後來作者嘗試了使用 IoU 來篩選 ROI,發現效果要更好。

   免費贈品的最後一包是邊界框(BBox)迴歸的目標函數。傳統的目標檢測器通常使用均方誤差(MSE)直接對BBox的中心點座標和高度和寬度執行迴歸,即即 {x 居中、y 中心、w、h } 或左上點和右下角,即 {x 左上、左上、x 右下、右下 }。至於基於錨點的方法,它是估計相應的偏移量,例如 [x 中心偏移,y 中心偏移,w偏移,h偏移量} 和 { x 左上偏移量,y 左上偏移量,x 右下偏移量,y 右下角偏移} 。但是,直接估計 BBox 的每個點的座標值是將這些點視爲獨立的變量,但實際上不考慮對象本身的完整性。爲了更好地處理這一問題,一些研究人員最近提出了 IoU損失【90】, 將預測的的 BBox 區域與真實的 BBox區域的覆蓋範圍考慮在內。 IoU 損失會計算到 BBox 的四個座標點,然後連接到生成一個完整的代碼。因爲 IoU 是一個尺度不變表示。它可以解決當傳統方法計算{x, y, w, h} 的 L1 或 L2損失導致尺度增加。最近,一些研究員在不斷改善 IoU損失。例如 GIoU損失【65】除覆蓋面積也考慮物體的形狀和方向,他們建議找到能同時覆蓋預測 BBox 和 ground truth BBox的最小面積 BBox,並使用這個 BBox作爲分母,以取代IoU損失的分母。至於DIOU損失【99】,它另外還包括考慮物體中心的距離,CIOU損失【99】,另一方面,同時考慮到重疊區域,中心點之間的距離,以及長寬比。CIOU可以在 BBox 迴歸問題上實現更好的收斂速度和精度。

 2.3  Bag of specials

  Bag of specials:就是指一些 plugin modules(例如特徵增強模塊,或者一些後處理),這部分增加的計算量(cost)很少,但是能有效的增加物體檢測的準確率,我們將這部分稱之爲 Bag of specials。這部分插件模塊能夠增強網絡的一些屬性,例如增大感受域(ASFF, ASPP, RFB 這些模塊),引入注意力機制(有兩種,一種是 spatial attention,另一種是 channel  attention),增加特徵集成能力(FPN, ASFF,BiFPN)。後處理算法是用一些算法來篩選模型預測出來的結果。

  BoS 是指那些增加稍許推斷代價,但可以提升模型精度的方法。

  • 1,比如增加模型感受野的 SPP,ASPP,RFB等
  • 2,引入注意力機制 Squeeze-and-Excitation(SE),Spatial Attention Module(SAM)等
  • 3,特徵集成方法 SFAM, ASFF,BiFPN等
  • 4,改進的激活函數 Swish, Mish等
  • 5,後處理方法如 Soft NMS,DIOU NMS等

  對於那些插入模塊和後期處理方法只會增加少量的推理成本,但可顯著提高目標檢測的準確率,我們稱其爲“Bag of specials”,一般來說,這些插入模塊是用來增強某些屬性的,如擴大感受野,引入注意力機制或增強特徵整合能力等,而後處理是一種篩選模型預測結果的方法。

增大感受野

   可用於擴大感受野的模塊有 SPP【25】, ASPP【5】, RFB【47】。SPP模塊起源於 Spatial Pyramid Match(SPM)【39】,而SPMs 的原始方法是將特徵圖分割成幾個 d*d 等量的塊,其中 d 可以是{1, 2, 3, ....},從而形成空間金字塔,然後提取 Bag-of-word 特徵。SPP將 SPM集合成CNN並使用 最大池化操作而不是 Bag-of-word 運算,由於 He 等人提出的 SPP模塊【25】將輸出一維特徵向量,而不可能應用於全卷積網絡(FCN)中。因此,在YOLOv3的設計[63]中,Redmon和Farhadi改進了YOLOv3的設計將SPP模塊改進爲融合k×k核的max-pooling輸出,其中k = {1,5,9,13},並且步長等於1。在這種設計下,一個相對較大的k×k有效地增加了backbone的感受野,增加了 SPP模塊的改進版後,YOLOv3-608 在 MS COCO上 AP 50 提升 2.7%,但是要付出 0.5%的額外計算成本。ASPP[5]模塊和改進後的SPP模塊在操作上的區別是主要由原來的步長1、k×k核的max-pooling到幾個3×3核的max-pooling、空洞率爲k步長1的空洞卷積。RFB模塊是使用幾個k×k核的空洞卷積,空洞率爲k,步長爲1以獲得比ASPP更全面的空間覆蓋率。RFB[47]只需額外增加7%推理時間卻在MS COCO上提升SSD的AP50 5.7%。

引入注意力機制

   在目標檢測中經常使用的注意力模塊,通常分爲 channel-wise 注意力和 point-wise 注意力。代表模型是 SE【29】和 SAM(Spatial Attention Module )【85】。雖然SE模塊可以提高 ReSNet50 在 ImageNet 圖像分類任務 1% top-1 準確率而計算量增加 2%,但是在 GPU上,通常情況下,它將增加推理時間的 10% 左右,所以更適合用於移動端。但對於 SAM,它只需要額外 0.1% 計算量提高 ResNet50-SE 0.5% Top-1 精度,且它完全不影響 GPU上的推理速度。

特徵融合或特徵集成

   在特徵融合方面,早期的做法是 Skip connection【51】或 hyper-column 【22】來融合低級和高級特徵。由於 FPN 等多尺度預測方法已成爲流行,許多輕量級模塊集成了不同的特徵金字塔。包括SFAM【98】, ASFF【48】, BiFPN【77】。SFAM的主要思想是利用 SE 模塊在多尺度疊加特徵圖上來執行 channel-wise 級別的  re-weighting。至於 ASFF,它用 softmax 作爲點級別重量化,然後添加不同比例的要素貼圖。在 BiFPN 中,建議多輸入加權殘聯執行比例級重新加權,然後添加不同比例的特徵映射。

激活函數

   在深度學習的研究中,有人注重於尋找好的激活函數。一個好的激活函數可以使梯度更有效的傳播,也不會造成太多的額外計算成本。2010年,Nair and Hinton 【56】提出了 ReLU 來實質性的解決梯度消失的問題,這也是 tanh 和 Sigmoid 中經常遇到的問題。隨後就是 LReLU[54],  PReLU[24],  ReLU6[28], Scaled Exponential Linear Unit (SELU)[35]、Swish[59]、hard-Swish[27]、和Mish[55]等,也是用來解決梯度問題的。LReLU和PReLU其主要目的是:是爲了解決梯當輸出小於零時,ReLU的梯度爲零。至於ReLU6 和 Hard-Swish,它們是專爲量化網絡設計。對於自歸一化的神經網絡,提出了SELU的激活函數滿足子歸一化目的。有一點需要注意的是,Swish和Mish都是連續可微激活函數。

後處理

  在基於深度學習的目標檢測中最常用的後處理方法常用的是 NMS,它可以用於過濾那些預測錯誤的 BBoxes,並僅保留響應較高的候選 BBox。NMS嘗試改進的方式與優化目標函數的方法一致。NMS提出的原始方法不考慮上下文信息,因此 Girshick等人【19】在 R-CNN中添加了分類置信度分數作爲參考,並考慮置信度分數的順序,以高分到低分的順序進行貪婪的 NMS。至於 soft NMS【1】, 它考慮的問題,對象的遮擋可能會導致在貪婪的 NMS 與 IOU 分數的置信度分數下降的問題。DIOU NMS【99】開發人員的思維方式是在 soft NMS 的基礎上將中心點距離的信息添加到 BBox 篩選過程中。值得一提的是,由於上述後處理方法沒有一種直接是指捕獲的圖像特徵,因此在後續開發無錨方法時不再需要後處理。

3,方法論

  基本目標是加速神經網絡的運行速度,在生產系統中優化並行計算,而不是低計算量理論指標(BFLOPS),我們提出了兩種實時神經網絡的選項。

  • 對於 GPU, 我們在卷積層中使用少量組(1~8): CSPResNeXt50 / CSPDarknet53
  • 對於 VPU, 我們使用分組卷積,但是不使用SE塊,具體來說包含下面幾個模塊:EfficientNet-lite / MixNet [76]  / GhostNet [21] . MobileNetV3。

  CSPDarkNet-53 包含 29 個卷積層, 725*725 的感受野,27.6M 參數。

3.1  架構選擇

   我們的目標是在輸入網絡分辨率,卷積層數,參數編號(濾波器大小 2 * + 濾波器 + 通道 / 組)和圖層輸出層(篩選器)之間尋找最佳平衡。例如,我們的大量研究表明,在 ILSVRC 2012(ImageNet) 數據集【10】上,CSPResNext50 比 CSPDarkNet53 要好的多。但是,相反,在檢查  MS COCO 數據集【46】上的對象方面,CSPDarknet53 優於  CSPResNeXt50。

  下一個目標是選擇其他模塊,以增加感受野和不同主幹級別不同骨幹級別參數聚合的最佳方法:例如 FPN, PAN, ASFF,BiFPN。

  最佳分類的參考模型並不總是檢測器的最佳模型。與分類器相比,檢測器需要以下操作:

  • 1,更高的輸入網絡大小(分辨率)——用於檢測更多的小尺寸目標
  • 2,更多的層——隨着輸入網絡尺寸的增大而獲得更大的感受野
  • 3,更多的參數——更大的模型容量來檢測單幅圖像中不同尺寸的目標

   假設,我們可以假定一個感受野大小的模型(具有較多的卷積層 3*3)和更多的參數應作爲主幹。表 1 顯示了 CSPResNeXt50, CSPDarkNet53 和高效網絡 B3 的信息。CSPResNeXt50 僅包含 16 個卷積層 3*3, 425*425 感受野和 20.6M 參數, CSPDarkNet53 包含 29 個卷積層 3*3, 725*725 感受野和 27.6 M 參數。這一理論論證,加上我們的大量實驗,表明 CSPDarkNet53 神經網絡是兩者作爲檢測器骨幹的最佳模型。

  不同大小的感受野的影響總結如下:

  • 1,最多到對象大小——允許查看整個對象
  • 2,最多網絡大小——允許查看對象周圍的上下文
  • 3,超過網絡大小——增加圖像點和最終激活之間的連接數

  我們在CSPDarkNet53 上添加 SPP塊,因爲它顯著增加了感受野,分離出最重要的上下文功能,並且幾乎不降低網絡操作速度。我們使用 PANet 作爲不同檢測器級別的不同骨幹級參數聚合方法,而不是 YOLOV3 中使用的 FPN。

  最終,我們選擇 CSPDarkNet53 作爲主幹網絡,SPP附加模塊,PANet路徑聚合頸部和 YOLOv3(基於錨)頭作爲 YOLOv4 的體系結構。

  今後,我們計算大幅擴展檢測器免費贈品包(BoF)的含量,理論上可以解決一些問題,提高檢測器的精度,並按照順序以實驗方式檢查每個功能的影響。

  我們不使用跨 GPU 批處理規範化(CGBN 或 SyncBN)或昂貴的專用設備。這允許任何人在傳統的圖形處理器上重現我們最先進的結果,例如GTX 1080Ti 或 RXT 2080Ti。

3.2  BoF 和  BoS 的選擇

  爲了改善目標檢測訓練,CNN通常會使用以下內容:

   關於訓練激活功能,因爲 PReLU 和 SELU 更難訓練,並且 ReLU6 是專門爲量化網絡設計的,因此我們從候選列表中刪除了上述激活功能。在規則化方法中,發佈 DropBlock 的人將自己的方法與其他方法進行了詳細的比較,其正則化方法贏得了很多。因此,我們毫不猶豫的選擇 DropBlock 作爲我們的正則化方法。至於正則化方法的選擇,由於我們專注於只是有一個 GPU 的訓練策略,因此不考慮 syncBN。

3.3   額外的提升

  爲了使設計的檢測器更適合於單GPU的訓練,我們進行了如下其他設計和改進:

  • 1,我們介紹了一種新的數據擴展馬賽克和自我對抗訓練(SAT)的方法
  • 2,在應用遺傳算法時,我們選擇最佳的超參數

  我們修改了一些外在方法,使我們的設計適合高效的訓練和檢測——修改的 SAM,修改的 PAN 和交叉微型批處理正則化(CMBN)。

  馬賽克是一種新的數據擴展方法,它混合了 4 個訓練圖像。因此,四個不同的上下文混合,而 CutMix 只混合 2 個輸入圖像。這允許檢測其正常上下文之外的對象。此外,批處理規範化計算每個層上 4 個不同圖像的激活統計信息。這顯著減少了對大量小型批次尺寸的需求。

  自對抗訓練(SAT)還代表一種新的數據擴增技術,可在 2 個向前向後階段允許。在第一階段,神經網絡更改原始圖像而不是網絡權重。通過這種方式,神經網絡對自身執行對抗攻擊,更改原始圖像以創建映象上沒有對象的欺騙。在第二階段,神經網絡被訓練以正常方式檢測此修改圖像上的對象。

  CMBN 表示 CBN 修改版本,如圖4所示,定義爲交叉小批量規範化(CMBN)。這僅僅在單個批處理中的微型批處理之間收集統計信息。

  我們從空間上的注意力到點注意力來修改 SAM,並將 PAN 的快捷方式連接改爲串聯,如圖5 和 圖 6 所示。

  BN 是對當前 mini-batch 進行歸一化。CBN 是對當前以及當前往前數 3 個 mini-batch 的結果進行歸一化,本文提出的 CmBN 則僅僅是在這個 Batch 中進行累積。在實驗中,CmBN 要比 BN高出不到一個百分點。

3.4  YOLOV4

  在這一節,我們將詳細闡述 YOLOv4的細節。

 

   YOLOv4 使用了:

  • 1,主幹免費贈品袋(BoF):CutMix 和 馬賽克數據擴增,DropBlock正則化,類標籤平滑。
  • 2,主幹專用袋(BoS):Mish激活,跨階段部分連接(CSP),多輸入加權剩餘連接(MiWRC)
  • 3,用於檢測器的免費贈品袋(BoF):CIOU損失,CMBN,DropBlock正則,馬賽克數據擴增,自我對抗訓練,消除網絡靈敏度,使用多個錨點作爲單一的ground truth,Cosin退火調度程序【52】,最佳超參數,隨機訓練形狀
  • 4,用於檢測器的特有包(BoS):Mish 激活,SPP塊,PAN路徑聚合塊,DIoU-NMS

 4,實驗

  我們測試了不同的訓練改進的影響。包括(ILSVRC 2012  val)ImageNet 數據集分類準確性,然後是 MS COCO(test-dev 2017) 數據集的檢測準確性。

4.1  實驗設置

   在 ImageNet 的圖像分類實驗中,默認超參數如下:訓練步數8 000 000;batch size和mini-batch size爲128和32;polynomial decay learning rate scheduling strategy 初始學習率爲0.1的調度策略。warm-up steps爲1000;momentum and weight decay分別設定爲0.9和0.005。我們所有的BoS實驗中使用的超參數爲默認設置,而在BoF實驗中,我們增加了一個額外的50%的訓練步數。在BoF實驗中,我們驗證 MixUp, CutMix, Mosaic, Bluring數據增強、和label smoothing regularization方法。在BoS的經驗中我們比較了LReLU、Swish和Mish的效果。所有的實驗都是用1080Ti或2080 Ti GPU。

  整理一下在 ImageNet 圖像分類實驗中,默認的超參數是:

  1. training steps:8000,000
  2. batch size:128
  3. mini-batch size:32
  4. polynomial decay learning rate:initial learning rate 0.1
  5. warm-up steps:1000
  6. momentum:0.9
  7. weight decay:0.005
  8. BoF實驗中,額外增加50%的training steps

   在 MS COCO 目標檢測實驗中,默認參數如下:訓練步長爲 500,500; the step decay learning rate scheduling strategy 是採用初始學習率爲 0.01, 並分別在 40萬步 和 45 萬步時乘以係數 0.1, momentum and weight decay 分別設置爲 0.9 和 0.0005。所有架構執行多尺度訓練的都使用單 GPU,batch size 64,mini-batch size 是 8 或 4,取決於架構和 GPU顯存容量限制。除了超參數搜索使用遺傳算法,所有其他實驗使用默認設置。遺傳算法實驗使用 YOLOv3-SPP 以 GIoU損失進行訓練,對 min-val 5k 數據搜索 300 輪。我們採用搜索過的學習率 0.00261,動量 0.949,IoU閾值對 ground truth 爲 0.213,loss normalizer 爲 0.07。我們已經驗證了大量的 BoF,包括 grid sensitivity elimination, mosaic data augmentation, IoU threshold, genetic algorithm,class label smoothing, cross mini-batch normalization, self adversarial training, cosine annealing scheduler, dynamic mini-batch size, DropBlock, Optimized Anchors, different kind of IoU losses。我們還對各種BoS驗證,包括Mish、SPP、SAM、RFB、BiFPN、BiFPN和Gaussian YOLO[8]。對於所有的實驗,我們只使用一個GPU訓練,因此,諸如syncBN這樣的技術可以優化多GPU訓練並未使用。

  在MS COCO目標檢測實驗中,默認的超參數是:

  1. training steps:500,500
  2. step decay learning rate:0~399,999 steps ,learning rate 0.1;400,000~449,999 steps,learning rate 0.01;450,000~500,500 steps, learning rate 0.001
  3. momentum:0.9
  4. weight decay:0.0005
  5. batch size:64
  6. mini-batch size:8 or 4

  除了使用遺傳算法尋找最優超參數的實驗,其他全部使用默認參數。

4.2  不同技巧對分類訓練中的影響

  首先,我們研究了不同技巧對分類訓練的影響;具體而言,Class label smoothing,不同的數據增強的影響,bilateral blurring,MixUp, CutMix and Mosaic,如圖7所示,以及不同激活函數的影響,如Leaky ReLU(默認情況下),Swish和Mish。

   在我們的實驗中,如表2所示,引入了以下技巧提高了精度,如CutMix和Mosaic 數據增強,Class label smoothing 和 Mish activation。因此,我們的分類器訓練 BOF-backbone(Bag of Freebies)是:CutMix 和 Mosaic data augmentation和Class label smoothing,此外我們還使用Mish activation作爲補充方案,如表2和表3所示。

 4.3  在檢測訓練中不同技巧對訓練的影響

  深入研究考慮不同 Bag-of-Freebies(BoF-detector)在檢測器訓練中的影響,如表4所示,我們通過研究不影響 FPS 的同時提升精度的技巧顯著擴展了 BOF的內容。

  進一步研究涉及不同的 Bag-of-Specials(BoS-detector)對探測器訓練精度的影響,包括 PAN,RFB,SAM,Gaussian YOLO(G)和 ASFF,如表5所示,在我們的實驗中,當使用SPP,PAN和SAM 時,檢測器獲得最佳性能。

 4.4  不同backbone 和預訓練權重的影響

  我們進一步研究不同backbone對精度的影響,如表6所示。我們注意到具有最佳的分類特徵精度模型並不總是最好的檢測精度。
  首先,雖然CSPResNeXt50的分類準確率高於 CSPDarknet53,CSPDarknet53模型在目標檢測方面有更高的精度。
  第二,使用BoF和Mish對CSPResNeXt50訓練,提高了其分類精度,但進一步應用這些預先訓練過的權重降低了檢測器的精度。然而,使用BoF和Mish用於CSPDarknet53分類器的訓練均提高了分類器和檢測器的精度。結果是,backbone CSPDarknet53 比 CSPResNeXt50 更適合用於檢測器。
  我們觀察到,CSPDarknet53 模型顯示了更大的能力來提高檢測器的精度,這是因爲各種改進。

 4.5  不同的 mini-batch size 對檢測器的影響

  最後,我們用模型來分析用不同的  mini-batch size 進行訓練,其結果如表 7所示。從表7所示的結果來看,我們發現,在加入 BoF 和 BoS 訓練策略後,發現mini-batch size幾乎對檢測器的每一個batch的檢測結果沒有任何影響。這一結果表明,在引進了BoF和BoS,它不再需要使用昂貴的GPU進行訓練。換句話說,任何人都可以只使用一個傳統的GPU來訓練一個優秀的探測器。

5, 結果

  圖8 顯示了與其他最先進的目標檢測器結果的比較。我們的 YOLOv4位於 Pareto 最佳曲線上,在速度和精度方面優於最快,最精確的檢測器。

  由於不同方法使用不同體系結構的 GPU進行推理時間驗證,因此我們在通常採用的 Maxwell, Pascal 和 Volta 體系解耦的 GPU 上運行 YOLOv4,並將其與其他最先進的方法進行比較。表8 列出了使用 Maxwell GPU 的幀速率比較結果,它可以是 GTX Titan X (Maxwell),Titan Xp, GTX 1080Ti,或 Tesla P100 GPU。至於表10, 它列出了使用 Volta GPU 的幀速率比較結果,它可以是 Titan Volta 或 Tesla V100 GPU。

 

6,總結

  我們提供了最先進的檢測器,它比所有可用的替代檢測器更快(FPS)和更準確(MS COCO AP50~90 和 AP50)。它所描述的檢測器可在具有 8~16 GB-VRAM 的傳統 GPU上進行訓練和使用,這使得其廣泛使用成爲可能。一階錨式檢測器的最初概念已證明其可行性。我們已經證明了大量的功能,並選擇用於這些功能,以提高分類器和檢測器的準確性。這些功能可用作未來研究和發展的最佳實踐。

 

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