天天看點

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

YOLOv4:Optimal Speed and Accuracy of Object Detection

YOLOv4: 目标檢測的最佳速度和精度

論文位址

代碼

摘要

據說有很多功能可以提高卷積神經網絡(CNN)的準确性。在大型資料集上對這些特征的組合進行實際測試,并對結果進行理論證明是必要的。某些功能僅在某些模型上運作,并且僅在某些問題上運作,或者僅在小型資料集上運作。而一些特性,如批處理規範化和調整大小連接配接,則适用于大多數模型、任務和資料集。我們假設這些通用特征包括權重剩餘連接配接(WRC)、跨階段部分連接配接(CSP)、跨小批量規範化(CmBN)、自對抗訓練(SAT)和Mish激活。我們使用了新功能:WRC、CSP、CmBN、SAT、誤激活、馬賽克資料增強、CmBN、DropBlock正則化和CIoU丢失,并将其中一些功能結合起來,以達到最新的結果:43.5%AP(65.7%AP 50)用于MS COCO資料集,在Tesla V100上以65 FPS的實時速度。

1.引言

大多數基于cnn的對象檢測器主要隻适用于推薦系統。例如,通過城市錄影機搜尋免費停車位是由低精度模型執行的,而汽車碰撞警告則與高精度模型相關。提高實時對象檢測器的準确性,不僅可以将其用于提示生成推薦系統,還可以用于獨立的過程管理和減少人工輸入。正常圖形處理單元(GPU)上的實時對象檢測器操作允許以它們可承受的價格大量使用。最精确的現代神經網絡不能實時運作,需要大量的gpu來進行小批量的訓練。我們通過建立一個在傳統GPU上實時運作的CNN來解決這些問題,而訓練隻需要一個傳統GPU。

這項工作的主要目标是設計生産系統中目标檢測器的快速運作速度并優化并行計算,而不是降低計算量理論名額(BFLOP)。我們希望設計的對象可以很容易地訓練和使用。例如,任何使用傳統GPU進行訓練和測試的人都可以實作實時、高品質、令人信服的目标檢測結果,如圖1所示的YOLOv4結果。我們的貢獻總結如下:

  • 1.我們建立了一個高效而強大的目标檢測模型。它使得每個人都可以使用1080ti或2080ti GPU來訓練一個超級快速和精确的目标探測器。
  • 2.我們在檢測器訓練期間,驗證了最先進的我們稱之為Bag-of-Freebies和Bag-of-Specials的方法的影響。
  • 3.我們修改了最新的方法,使之更有效,更适合于單一GPU訓練,包括CBN[89]、PAN[49]、SAM[85]等。
    YOLOv4 論文翻譯YOLOv4:Optimal Speed and Accuracy of Object Detection
    圖1:YOLOv4和其他最新物體探測器的比較。YOLOv4的運作速度比EfficientDet(D0~D4)快兩倍,性能相當。使YOLOv3的AP和FPS分别提高10%和12%。

2.相關工作

2.1 目标檢測模型

現代檢測器通常由兩部分組成,一個是在ImageNet上預先訓練的骨架,另一個是用來預測對象的類别和邊界框的頭部。對于那些在GPU平台上運作的檢測器,它們的主幹可以是VGG[68]、ResNet[26]、ResNeXt[86]或DenseNet [30]。對于那些在CPU平台上運作的檢測器,其主幹可以是SqueezeNet [31], MobileNet[28,66,27,74],或ShuffleNet [97,53]。至于頭部,通常分為兩類:單階段目标探測器和兩階段目标探測器。最具代表性的兩級目标探測器是R-CNN[19]系列,包括fast R-CNN[18]、faster R-CNN[64]、R-FCN[9]和Libra R-CNN [58]。也可以使兩階段目标檢測器成為無錨目标檢測器,例如RepPoints[87]。單階段目标探測器最具代表性的型号有YOLO[61, 62, 63]、SSD[50]、RetinaNet[45]。這類探測器有CenterNet[13]、CornerNet[37、38]、FCOS[78]等。近年來發展起來的目标檢測器,往往在主幹和頭部之間插入一些層,這些層通常用于采集不同階段的特征圖。我們可以把它稱之為目标探測器的頸部。通常,頸部由幾個自下而上的路徑和幾個自上而下的路徑組成。具有這種機制的網絡包括特征金字塔網絡(FPN)[44]、路徑聚合網絡(PAN)[49]、BiFPN[77]和NAS-FPN[17]。除了上述模型外,一些研究人員還着重于直接建構用于對象檢測的新骨幹網絡(DetNet [43],DetNAS [7])或新的整個模型(SpineNet [12],HitDetector [20]。

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

綜上所述,一個普通的物體探測器由幾個部分組成:

  • 輸入(Input): Image, Patches, Image Pyramid
  • 骨幹(Backbones): VGG16 [68], ResNet-50 [26], SpineNet[12], EfficientNet-B0/B7 [75], CSPResNeXt50 [81], CSPDarknet53 [81]
  • 頸部(Neck):

    額外的塊( Additional blocks): SPP [25], ASPP [5], RFB[47], SAM [85]

    路徑聚合的塊( Path-aggregation blocks): FPN [44], PAN [49], NAS-FPN [17], Fully-connected FPN, BiFPN[77], ASFF [48], SFAM [98]

  • 頭(Heads):

    密集預測(單階段):

    ◦ RPN [64], SSD [50], YOLO [61], RetinaNet[45] (anchor based)

    ◦ CornerNet [37], CenterNet [13], MatrixNet[60], FCOS [78] (anchor free)

    稀疏預測(兩階段):

    ◦ Faster R-CNN [64], R-FCN [9], Mask R-CNN [23] (anchor based)

    ◦ RepPoints [87] (anchor free)

2.2 Bag of freebies

(關于Bag of freebies大概是指: 即在不改變模型結構并且不改變損失函數的情況下,不犧牲前向傳播時間,将mAP提升)

通常,傳統的目标探測器是離線訓練的。是以,研究人員總是希望利用這一優勢,開發出更好的訓練方法,使目标探測器在不增加推理成本的情況下獲得更高的精度。我們把這些隻會改變教育訓練政策或隻會增加教育訓練成本的方法稱為“免費包(Bag of freebies)”。對象檢測方法通常采用的是資料擴充,它滿足了免費包的定義。資料擴充的目的是增加輸入圖像的可變性,使所設計的目标檢測模型對來自不同環境的圖像具有更高的魯棒性。例如,光度畸變和幾何畸變是兩種常用的資料增強方法,它們肯定有利于對象檢測任務。在處理光度失真時,我們調整圖像的亮度、對比度、色調、飽和度和噪聲。對于幾何分布,我們加入随機縮放、裁剪、翻轉和反旋轉。

上述資料增強方法均為像素級調整,并保留調整區域内的所有原始像素資訊。此外,一些從事資料擴充的研究人員把重點放在模拟對象遮擋問題上。在圖像分類和目标檢測方面取得了較好的效果。例如,随機擦除[100]和CutOut [11]可以随機選擇圖像中的矩形區域并填充随機值或零的互補值。至于 hide-and-seek(69)和 grid mask(6),它們随機或均勻地選擇圖像中的多個矩形區域,并将它們替換為全部零。如果将類似的概念應用到特征地圖,則有DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,一些研究者提出了将多幅圖像結合在一起進行資料增強的方法。例如,MixUp [92]使用兩個圖像以不同的系數比率進行乘法和疊加,然後使用這些疊加比率調整标簽。 CutMix[91]是将裁剪後的圖像覆寫到其他圖像的矩形區域,并根據混合區域的大小調整标簽。除了上述方法外,還使用style transfer GAN[15]進行資料擴充,這樣可以有效減少CNN學習到的紋理偏差。

與上面提出的各種方法不同,其他一些免費贈品方法專用于解決資料集中語義分布可能存在偏差的問題。在處理語義分布偏差問題時,一個非常重要的問題是不同類之間存在資料不平衡的問題,這一問題通常通過兩級對象檢測器中的難例負樣本挖掘[72]或線上難例挖掘[67]來解決。但是示例挖掘方法不适用于單階段目标檢測器,因為這種檢測器屬于密集預測架構。是以,Lin等人提出了focal loss來處理各個類之間存在的資料不平衡問題。另一個非常重要的問題是,很難用獨熱寫死表示來表達不同類别之間的關聯度的關系。進行标注時經常使用此表示方案。文[73]中提出的标簽平滑是将硬标簽轉化為軟标簽進行訓練,使模型更加健壯。為了獲得更好的軟标簽,Islam等人[33]引入了知識蒸餾的概念來設計标簽細化網絡。

最後一包免費贈品是邊界框(BBox)回歸的目标函數。傳統的目标檢測器通常采用均方誤差(MSE)方法對BBox的中心點坐标和高、寬進行回歸。對于基于錨的方法,是對相應偏移量的估計。但是,直接估計BBox的每個點的坐标值是将這些點視為自變量,但實際上并沒有考慮對象本身的完整性。為了更好地處理這個問題,一些研究人員最近提出了IoU損失[90],将預測BBox區域的覆寫範圍和地面真實BBox區域納入考慮範圍。IoU損耗計算過程将觸發BBox的四個坐标點的計算,執行IoU并将生成的結果連接配接成一個完整的代碼。由于IoU是尺度不變的表征,它可以解決傳統方法在計算{x, y, w, h}的l1或l2損失時,損失會随着尺度的增大而增大的問題。最近,一些研究人員繼續改善IoU損失。例如,GIoU loss[65]除了覆寫區域外,還包括了對象的形狀和方向。他們建議找到可以同時覆寫預測的BBox和地面真值BBox的最小面積BBox,并使用該BBox作為分母來代替最初用于IoU損失的分母。對于DIoU loss[99],它額外考慮了物體中心的距離,而CIoU loss[99]則同時考慮了重疊區域、中心點之間的距離和縱橫比。對于BBox回歸問題,CIoU具有更好的收斂速度和精度。

2.3 Bag of specials

對于那些隻增加少量推理成本,卻能顯著提高對象檢測準确性的插件子產品和後處理方法,我們稱之為“特價包(Bag of specials)”。一般而言,這些插件子產品用于增強模型中的某些屬性,例如擴大感受野,引入注意力機制或增強特征內建能力等,而後處理是用于篩選模型預測結果的方法。

可以用來增強感受野的常用子產品是SPP [25],ASPP [5]和RFB [47]。SPP子產品源自空間金字塔比對(SPM)[39]。SPM的原始方法是将特征圖劃分為幾個 d × d d × d d×d個相等的塊,其中 d d d可以為{ 1 , 2 , 3 , . . . 1,2,3,... 1,2,3,...},進而形成空間金字塔,然後提取詞袋特征。SPP将SPM內建到CNN中,并使用max-pooling操作代替bag-of-word操作。由于He等人提出的SPP子產品, [25]将輸出一維特征向量,在全卷積網絡(FCN)中應用是不可行的。是以,在YOLOv3 [63]的設計中,Redmon和Farhadi将SPP子產品改進為卷積核核大小為 k × k k×k k×k的最大池化輸出的級聯,其中 k = 1 , 5 , 9 , 13 k = {1,5,9,13} k=1,5,9,13,步幅等于1。在本設計中,較大的 k × k k×k k×k最大池化有效地增加了主幹特征的感受野。在添加了改進版本的SPP子產品後,在MS COCO對象檢測任務中,YOLOv3-608以0.5%的額外計算量将 A P 50 AP_{50} AP50​提升了2.7%。ASPP[5]模與改進的SPP模在運算上的差別主要在于原 k × k k×k k×k卷積核大小、最大步長池等于1, 現在是使用幾個 3 × 3 3×3 3×3卷積核大小、膨脹比等于k、膨脹卷積運算步長等于1。RFB子產品将使用多個 k × k k×k k×k大小的膨脹卷積,膨脹比等于k,步幅等于1,來獲得比ASPP更全面的空間覆寫。RFB[47]隻需額外花費7%的推斷時間,即可使MS COCO上SSD的 A P 50 AP_{50} AP50​增加5.7%。

在目标檢測中常用的注意子產品主要分為通道注意和點注意,這兩種注意模型的代表分别是擠壓和激發(SE)[29]和空間注意子產品(SAM)[85]。雖然SE子產品可以提高ResNet50在ImageNet圖像分類任務中的能力1%top-1的精度,隻需增加2%的計算量,但在GPU上通常會增加10%左右的推理時間,是以更适合在移動裝置中使用。但對于SAM,隻需額外支付0.1%的計算費用,就可以在ImageNet圖像分類任務中提高ResNet50 SE 0.5%的top-1精度。最重要的是,它完全不影響GPU的推理速度。

在特征融合方面,早期的實踐是使用skip connection[51]或hyper column[22]将低級實體特征內建到進階語義特征。随着FPN等多尺度預測方法的流行,人們提出了許多融合不同特征金字塔的輕量級預測子產品。這類子產品包括SFAM[98]、ASFF[48]和BiFPN[77]。SFAM的主要思想是利用SE子產品在多尺度連接配接的特征圖上執行信道級的權重重配置設定。對于ASFF,它使用softmax作為點向水準重權重,然後添加不同尺度的特征圖。在BiFPN中,提出了多輸入權重剩餘連接配接來執行按比例的水準重權重,然後添加不同比例的特征圖。

在深度學習的研究中,一些人把重點放在尋找好的激活函數上。一個好的激活函數可以使梯度更有效地傳播,同時也不會造成過多的計算開銷。2010年,Nair和Hin- ton[56]提出ReLU從本質上解決傳統的tanh和sigmoid激活函數中經常遇到的梯度消失問題。随後,LReLU[54]、PReLU[24]、ReLU6[28]、标度指數線性機關(SELU)[35]、Swish[59]、hard Swish[27]和Mish[55]等,也被用來解決梯度消失問題。LReLU和PReLU的主要目的是解決輸出小于零時ReLU的梯度為零的問題。對于ReLU6和hard-Swish,它們是專門為量化網絡設計的。為了實作神經網絡的自歸一化,提出了SELU激活函數。需要注意的是,Swish和Mish都是連續可微的激活函數。

在基于深度學習的對象檢測中,通常使用的後處理方法是NMS,它可以用來過濾那些對同一對象預測不佳的bbox,隻保留響應度較高的候選bbox。NMS試圖改進的方法與優化目标函數的方法是一緻的。NMS提出的原始方法不考慮上下文資訊,是以Girshick等人[19] 在R-CNN中加入分類置信度得分作為參考,根據置信度得分的順序,貪婪的NMS按照從高分到低分的順序進行。對于soft NMS[1],它考慮了對象的遮擋可能導緻帶IoU分數的貪婪NMS的置信度分數下降的問題。DIoU NMS[99]開發者的思路是在soft NMS的基礎上,在BBox篩選過程中加入中心點距離資訊。值得一提的是,由于以上的後處理方法都沒有直接引用捕獲的圖像特征,是以在無錨方法的基礎開發中不再需要後處理。

3. 方法

其基本目标是神經網絡在生産系統中的快速運作和并行計算的優化,而不是低計算量理論名額(BFLOP)。我們提出了實時神經網絡的兩種選擇:

  • 對于GPU,我們在卷積層中使用少量的組(1 - 8):CSPResNeXt50 / CSPDarknet53
  • 于VPU-我們使用分組卷積,但不要使用擠壓和激發(SE)塊-具體來說,它包括以下模型:EfficientNet-lite / MixNet

    [76] / GhostNet [21] / MobileNetV3

3.1. 結構的選擇

我們的目标是在輸入網絡分辨率、卷積層數、參數量(濾波器尺寸2濾波器信道/組)和層輸出數(濾波器)之間找到最佳平衡。例如,我們的大量研究表明,在ILSVRC2012 (ImageNet)資料集[10]上的對象分類方面,CSPResNext50要比CSPDarknet53好得多。然而,相反地,在檢測MS COCO資料集[46]上的對象方面,CSPDarknet53比CSPResNext50更好。

下一個目标是針對不同的檢測器級别從不同的主幹級别中選擇其他塊來增加接收場和參數聚集的最佳方法: FPN,PAN,ASFF,BiFPN。

對于分類來說是最優的參考模型對于檢測器來說并不總是最優的。與分類器相比,檢測器需要以下特性:

  • 更高的輸入網絡大小(分辨率):用于檢測多個小型對象
  • 更多的層:一個更高的接受域,以覆寫增加的輸入網絡的大小
  • 更多參數:使模型能夠在單個圖像中檢測多個不同大小的對象
YOLOv4 論文翻譯YOLOv4:Optimal Speed and Accuracy of Object Detection

假設我們可以選擇一個感受野較大(卷積層數為3×3)且參數較多的模型作為主幹。表1顯示了CSPResNeXt50、CSPDarknet53和Effi- cientNet B3的資訊。CSPResNext50僅包含16個卷積層3×3、425×425感受野和20.6M參數,CSPDarknet53包含29個卷積層3×3、725×725感受野和27.6M參數。這一理論證明和我們的大量實驗表明,CSPDarknet53神經網絡是二者作為探測器骨幹的最佳模型。

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

  • 取決于對象的大小-允許檢視整個對象
  • 取決于網絡大小-允許檢視對象周圍的上下文
  • 超出網絡規模-增加映像點和最終激活之間的連接配接數

我們在CSPDarknet53上添加了SPP塊,因為它顯著地增加了接受域,分離出了最重要的上下文特性,并且幾乎不會導緻網絡運作速度的降低。我們用PANet代替YOLOv3中的FPN,從不同的主幹層對不同的檢測器層進行參數聚合。

最後,選擇CSPDarknet53骨幹網、SPP附加子產品、PANet路徑聚合頸部和YOLOv3(基于錨的)頭部作為YOLOv4的體系結構。

在未來,我們計劃将探測器的免費贈品包(BoF)的内容進行擴充,理論上可以解決一些問題,提高探測器的精度,并以實驗的方式依次檢查各個因素的影響。

我們不使用跨gpu批處理标準化(CGBN或SyncBN)或昂貴的專用裝置。這使得任何人都可以在傳統的圖形處理器(如GTX 1080Ti或RTX)上重制我們最先進的結果2080 ti。

3.2 BoF和BoS的選擇

為了提高目标檢測訓練,CNN通常使用以下方法:

  • 激活函數:ReLU, leaky-ReLU,參變ReLU,ReLU6, SELU, Swish,或Mish
  • 邊界框回歸損失:MSE, IoU, GIoU,CIoU, DIoU
  • 資料增強: CutOut, MixUp, CutMix
  • 正則化方法: DropOut, DropPath [36], Spatial DropOut [79], or DropBlock
  • 通過均值和方差對網絡活動進行歸一化: Batch Normalization (BN) [32], Cross-GPU Batch Normalization (CGBN or SyncBN)[93], Filter Response Normalization (FRN) [70], or Cross-Iteration Batch Normalization (CBN) [89]
  • 跳躍連結:殘差連接配接、權重殘差連接配接、多輸入權重殘差連接配接或跨級部分連接配接(CSP)。

至于訓練激活函數,由于PReLU和SELU較難訓練,并且ReLU6是專門為量化網絡設計的,是以我們從候選清單中删除了上述激活函數。在重新規範化方法中,發表DropBlock的人詳細比較了他們的方法和其他方法,他們的正則化方法赢得了很多。是以,我們毫不猶豫地選擇了DropBlock作為我們的正則化方法。對于歸一化方法的選擇,由于我們關注的是隻使用一個GPU的訓練政策,是以沒有考慮syncBN。

3.3 進一步的改進

為了使設計的檢測器更适合于單GPU上的訓練,我們做了如下的附加設計和改進:

  • 我們介紹了一種新的資料增強方法Mosaic和自對抗訓練(SAT)。
  • 應用遺傳算法選擇最優超參數。
  • 我們修改了現有的一些方法,使我們的設計适合于有效的訓練和檢測修改的SAM、修改的PAN和交叉小批量規範化(CmBN)。

馬賽克表示一種新的資料增強方法,該方法混合了4個訓練圖像。是以,4個不同的上下文被混合,而CutMix隻混合2個輸入圖像。這允許檢測正常上下文之外的對象。此外,批量歸一化從每層的4張不同圖像中計算激活統計資訊。這大大減少了mini-batch size的大小。

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

自對抗訓練(SAT)也代表了一種新的資料增加技術,在兩個前後階段操作。在第一階段,神經網絡改變原始圖像而不是網絡權值。通過這種方式,神經網絡對自己進行了一次對抗性的攻擊,改變了原始圖像,進而制造出圖像上沒有所需對象的欺騙。在第二階段,神經網絡以正常的方式對這個修改後的圖像進行檢測。

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

CmBN表示CBN修改版本,如圖4所示,定義為跨小批量規範化(CmBN)。這隻在單個批内的小批之間收集統計資訊。我們将SAM從空間注意修改為點注意,并替換PAN到連接配接的快捷連接配接,分别如圖5和圖6所示。

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

3.4 YOLOv4

在本節中,我們将詳細介紹YOLOv4。

YOLOv4包括:

  • 骨幹: CSPDarknet53 [81]
  • 頸部:SPP [25], PAN [49]
  • 頭: YOLOv3 [63]

YOLO v4使用:

  • 骨幹網絡的BoF:CutMix和馬賽克資料增強,DropBlock正則化,類标簽平滑
  • 骨幹網絡的BoS:Mish激活,跨級部分連接配接(CSP),多輸入權重剩餘連接配接(MiWRC)
  • 檢測器的BoF:CIoU-loss, CmBN, DropBlock正則化,馬賽克資料處理,自對抗訓練,消除網格敏感性,對一個ground truth 使用多個anchor,餘弦退火排程器[52],最優超參數,随機訓練形狀
  • 檢測器的BoS:Mish激活, sp塊,sam塊,PAN路徑聚合塊,DIoU-NMS

4. 實驗

在ImageNet(ILSVRC 2012 val)資料集上測試了不同訓練改進技術對分類器精度的影響,然後在MS-COCO(test dev 2017)資料集上測試了檢測器的精度。

4.1 實驗設定

在ImageNet圖像分類實驗中,預設的超參數如下:訓練步驟為8000000。批大小和迷你批大小分别為128和32。采用多項式衰減學習率排程政策,初始學習率為0.1。熱身(warm-up)步長1000;動量和權重衰減分别設定為0.9和0.005。我們所有的BoS實驗都使用與預設設定相同的超參數,在BoF實驗中,我們添加了50%的額外訓練步驟。在BoF實驗中,我們驗證了MixUp、CutMix、Mosaic、模糊資料增強和标簽平滑正則化方法。在BoS實驗中,我們測試了flrelu、Swish和mish激活功能的效果。所有實驗訓練都是使用單個1080Ti 或 2080Ti。

在MS-COCO目标檢測實驗中,預設超參數如下:訓練步數為500500;采用階躍衰減學習率排程政策,初始學習率為0.01,在40萬步和45萬步分别乘以系數0.1;動量衰減和權重衰減分别設定為0.9和0.0005。所有體系結構都使用一個單一的GPU來執行64批大小的多尺度訓練,而最小批大小是8或4取決于體系結構和GPU記憶體限制。除了使用遺傳算法進行超參數搜尋實驗外,其他所有實驗均使用預設設定。遺傳算法使用YOLOv3-SPP訓練GIoU損失并搜尋300個epoch的min-val 5k sets。對于遺傳算法實驗,我們采用搜尋的學習率0.00261,動量0.949,IoU門檻值來配置設定地面實況0.213,并使用損失歸一化器0.07。我們已經驗證了大量的BoF,包括網格敏感度消除、馬賽克資料增強、IoU門檻值、遺傳算法、類标簽平滑、交叉小批量規範化、自對抗訓練、餘弦退火排程、動态小批量、DropBlock、優化錨、不同類型的IoU損失。我們還對各種BoS進行了實驗,包括Mish,SPP,SAM,RFB,BiFPN和高斯YOLO [8]。對于所有的實驗,我們隻使用一個GPU進行訓練,是以像syncBN這樣的優化多個GPU的技術并沒有被使用。

4.2 不同特征對分類器訓練的影響

首先,我們研究了不同特征對分類器訓練的影響;具體來說,如圖7所示,類标簽平滑的影響,不同資料增強技術的影響,雙邊模糊、混合、剪切和鑲嵌,以及不同激活的影響,Leaky-ReLU(預設)、Swish和Mish。

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

在我們的實驗中,如表2所示,通過引入CutMix和Mosaic資料增強、類标簽平滑和錯誤激活等特性,提高了分類器的準确性。是以,我們用于分類器訓練的BoFbackbone(免費包)包括以下内容:CutMix和Mosaic資料增強和類标簽平滑。此外,我們使用Mish激活作為補充選項,如表2和表3所示。

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

4.3 不同特征對檢測器訓練的影響

進一步研究了不同的免費包(BoF檢測器)對檢測器訓練精度的影響,如表4所示。通過研究在不影響FPS的情況下提高檢測器精度的各種功能,我們大大擴充了BoF清單:

  • S:消除grid靈敏度方程: b x = σ ( t x ) + c x , b y = σ ( t y ) + c y b_{x}=\sigma\left(t_{x}\right)+c_x,b_y=\sigma(t_y)+c_y bx​=σ(tx​)+cx​,by​=σ(ty​)+cy​。其中 c x c_x cx​和 c y c_y cy​總是整數,在YOLOv3中用于計算對象坐标,是以,接近 c x c_x cx​或 c x + 1 c_x+1 cx​+1值的 b x b_x bx​值需要極高的 t x t_x tx​絕對值。我們通過将sigmoid乘以超過1.0的因數來解決此問題,進而消除了無法檢測到物體的網格的影響。
  • M:馬賽克資料增強——在訓練過程中使用4張圖像鑲嵌代替單個圖像。
  • IT:IoU門檻值——使用多個錨為一個單一的ground truth IoU(真值,錨)> IoU門檻值。
  • GA: 遺傳算法——使用遺傳算法選擇最佳超參數在網絡訓練的前10%的時間周期。
  • LS:類标簽平滑——對sigmoid激活函數使用類标簽平滑。
  • CBN:CmBN——使用跨小批量規範化來收集整個批内的統計資訊,而不是在單個小批量内收集統計資訊。
  • CA:餘弦退火排程器——改變正弦波訓練中的學習速率。
  • DM: 動态小批量大小——使用随機訓練形狀在小分辨率訓練期間自動增加小批量大小。
  • OA: 優化anchor——使用優化的anchor,以512x512網絡分辨率進行訓練。
  • GIoU, CIoU, DIoU, MSE ——對邊界框回歸使用不同的損失算法。

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

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

4.4 不同骨幹網絡和預訓練模型在檢測訓練時的影響

進一步研究不同骨架模型對檢測精度的影響,如表6所示。我們注意到,就檢測器的精度而言,具有最佳分類精度的模型并不總是最佳的。

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

首先,盡管不同特征訓練的CSPResNeXt-50模型的分類精度比CSPDarknet53模型高,但CSPDarknet53模型在目标檢測方面顯示出更高的精度。其次,使用BoF和Mish進行CSPResNeXt50分類器訓練可以提高其分類精度,但進一步應用這些預先訓練的權重進行檢測器訓練會降低檢測器的精度。然而,在CSPDarknet53分類器訓練中,使用BoF和Mish的方法提高了分類器和使用預先訓練權重的檢測器的準确性。結果表明,基幹CSPDarknet53比CSPResNeXt50更适合于檢測器。

我們觀察到,CSPDarknet53模型由于各種改進而顯示出更大的提高檢測器準确度的能力。

4.5 不同的小批尺寸對檢測器訓練的影響

最後,我們對不同小批尺寸訓練模型的結果進行了分析,結果如表7所示。從表7的結果可以看出,加入BoF和BoS訓練政策後,小批量尺寸對檢測器的性能幾乎沒有影響。該結果表明,在引入BoF和BoS之後,不再需要使用昂貴的GPU進行訓練。換句話說,任何人都隻能使用傳統的GPU來訓練優秀的檢測器。

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

5. 結果

得到的結果與其他最先進的對象探測器的比較顯示在圖8中。我們的YOLOv4位于Pareto最優曲線上,在速度和精度方面都優于最快和最精确的檢測器。

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

由于不同的方法使用不同體系結構的gpu進行推理時間驗證,我們對常用的Maxwell、Pascal和Volta體系結構的gpu進行了YOLOv4運算,并與其他最新方法進行了比較。表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,它列出了使用Volta GPU的幀速率比較結果,可以是Titan Volta或Tesla V100 GPU。

6. 結論

我們提供最先進的探測器,比所有可用的替代探測器更快(FPS)和更準确(MS COCO A P 50 … 95 AP_{50…95} AP50…95​和 A P 50 AP_{50} AP50​)。所描述的檢測器可以在8-16GB-VRAM的傳統GPU上訓練和使用,這使得它的廣泛應用成為可能。單階段基于anchor的檢測器的已經證明了它的可行性。我們已經驗證了大量的特征,并選擇使用這些特征來提高分類器和檢測器的準确性。這些特性可以作為未來研究和開發的最佳實踐。

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

繼續閱讀