YOLOv4 論文精讀


YOLOv4: Optimal Speed and Accuracy of Object Detection

論文地址:鏈接:百度網盤  提取碼:lgw1

GitHub地址:https://github.com/AlexeyAB/darknet

     【摘要】有很多特征可以提高卷積神經網絡(CNN)的准確性。需要在大型數據集上對這些特征的組合進行實際測試,並需要對結果進行理論證明。某些特征僅在某些模型上運行,並且僅在某些問題上運行,或者僅在小型數據集上運行;而某些特征(例如批歸一化和殘差連接)適用於大多數模型,任務和數據集。我們假設此類通用特征包括加權殘差連接(WRC),跨階段部分連接(CSP),交叉小批量標准化(CmBN),自對抗訓練(SAT)和Mish激活。我們使用以下新功能:WRC,CSP,CmBN,SAT,Mish激活,Mosaic數據增強,CmBN,DropBlock正則化和CIoU丟失,並結合其中的一些特征來實現最新的結果:**在MS COCO數據集上利用Tesla V10以65 FPS的實時速度獲得了43.5%的AP(65.7%AP50)。

一、介紹

       大多數基於CNN的物體檢測器僅適用於推薦系統。例如,通過慢速精確模型執行通過城市攝像機搜索空閑停車位的過程,而汽車碰撞警告與快速不精確模型有關。提高實時對象檢測器的精度不僅可以將它們用於提示生成推薦系統,還可以用於獨立的過程管理和人工輸入減少。常規圖形處理單元(GPU)上的實時對象檢測器操作允許它們以可承受的價格進行大量使用。最精確的現代神經網絡不能實時運行,並且需要大量的GPU來進行mini-batch-size的訓練。我們通過創建CNN來解決此類問題,該CNN在常規GPU上實時運行,並且訓練僅需要一個常規GPU。

        這項工作的主要目標是設計生產系統中目標檢測器的快速運行速度並優化並行計算,而不是低計算量理論指標(BFLOP)。例如,任何使用常規GPU進行訓練和測試的人都可以獲得實時,高質量和令人信服的對象檢測結果,如圖1所示。

圖1 提出的YOLOv4與其他最新對象檢測器的比較,YOLOv4的運行速度比EfficientDet快兩倍,

並且性能相當。將YOLOv3的AP和FPS分別提高了10%和12%。

YOLOv4貢獻如下:

1.我們開發了一種高效強大的對象檢測模型,使得每個人都可以使用1080 Ti或2080 Ti GPU訓練超快速和准確的物體檢測器。
2.我們在檢測器訓練期間,驗證了最新的“免費袋”和“特殊袋”檢測方法的影響。
3.我們修改了最先進的方法,使它們更有效,更適合單GPU訓練,包括CBN [89],PAN [49],SAM [85]等。

二、相關工作

2.1目標檢測模型      

 現代檢測器通常由兩部分組成,一個是在ImageNet上預先訓練的骨架,另一個是用來預測物體的類別和邊界框的頭部。對於在GPU平台上運行的檢測器,其主干可以是VGG,ResNet,ResNeXt 或DenseNet。對於在CPU平台上運行的檢測器,其主干可以是SqueezeNet ,MobileNet 或ShuffleNet。至於頭部,通常分為兩類,即一級物體檢測器和二級物體檢測器。最有代表性的兩級物體檢測器是R-CNN 系列,包括快速R-CNN ,更快的R-CNN,R-FCN 和Libra R-CNN 。也有可能使二級物體檢測器成為無錨(anchor free)物體檢測器,例如RepPoints。對於一級目標檢測器,最具代表性的模型是YOLO,SSD和RetinaNet。近年來,開發了無錨的一級物體檢測器。這種檢測器是CenterNet,CornerNet],FCOS 等。近年來開發的對象檢測器通常在骨架和頭部之間插入一些層,這些層通常用於收集特征圖。來自不同的階段。我們可以稱其為對象檢測器的頸部。通常,頸部由幾個自下而上的路徑和幾個自上而下的路徑組成。配備此機制的網絡包括功能金字塔網絡(FPN),路徑聚合網絡(PAN),BiFPN 和NAS-FPN 。除上述模型外,一些研究人員將重點放在直接構建用於檢測物體的新主干(DetNet ,DetNAS )或新的整個模型(SpineNet ,HitDe-tector )上。總而言之,普通的檢測器由以下幾個部分組成:

輸入:圖像,Patches,圖像金字塔
骨架:VGG16 ,ResNet-50 ,SpineNet ,EfficientNet-B0 / B7 ,CSPResNeXt50 ,CSPDarknet53
頸部:
         其他塊:SPP ,ASPP ,RFB ,SAM 
         路徑聚合塊:FPN ,PAN ,NAS-FPN ,Fully-connected FPN,BiFPN ,ASFF ,SFAM

Heads : 

        密集預測(一階段): RPN,SSD,YOLO , RetinaNet (基於anchor)
                                             CornerNet,CenterNet ,MatrixNet ,FCOS(無anchor)
        稀疏預測(兩階段): Faster R-CNN,R-FCN ,Mask R-CNN (基於anchor);RepPoints(無anchor)

2.2 Bag of freebies

       通常,常規的物體檢測器是離線訓練的。因此,研究人員總是喜歡利用這一優勢,並開發出更好的訓練方法,以使物體檢測器獲得更好的精度而又不增加推理成本。我們稱這些僅改變訓練策略或僅增加訓練成本的方法為“免費贈品”。經常適應對象檢測方法且符合免費贈品袋定義的是數據增強。數據增強的目的是增加輸入圖像的可變性,從而使設計的物體檢測模型對從不同環境獲得的圖像具有更高的魯棒性。例如,光度畸變和幾何畸變是兩種常用的數據增強方法,它們無疑有益於物體檢測任務。在處理光度失真時,我們會調整圖像的亮度,對比度,色相,飽和度和噪點。對於幾何變形,我們添加了隨機縮放,裁剪,翻轉和旋轉。

     上面提到的數據增強方法都是逐像素調整,並且保留了調整區域中的所有原始像素信息。此外,一些從事數據增強的研究人員將重點放在模擬對象遮擋問題上。他們在圖像分類和目標檢測中取得了良好的效果。例如,隨機擦除和CutOut可以隨機選擇圖像中的矩形區域,並填充零的隨機或互補值。至於hide-and-seek和grid mask,他們隨機或均勻地選擇圖像中的多個矩形區域,並將它們替換為全零。如果類似的概念應用於要素地圖,則有DropOut,DropConnect和DropBlock方法。另外,一些研究人員提出了一起使用多個圖像進行數據增強的方法。例如,MixUp使用兩個圖像以不同的系數比率進行乘法和疊加,然后使用這些疊加比率來調整標簽。對於CutMix ,它是將裁切后的圖像覆蓋到其他圖像的矩形區域,並根據混合區域的大小調整標簽。除了上述方法之外,style transfer GAN 還用於數據增強,並且這種用法可以有效地減少CNN學習到的紋理偏差。

        與上面提出的各種方法不同,其他一些免費贈品方法專用於解決數據集中語義分布可能存在偏差的問題。在處理語義分布偏向問題時,一個非常重要的問題是不同類之間存在數據不平衡的問題,這一問題通常是通過兩階段對象設計器中的難例挖掘[72]或在線難例挖掘[67]來解決的。但是實例挖掘方法不適用於一級目標檢測器,因為這種檢測器屬於密集預測架構。因此Linet等 [45]提出了焦點損失,以解決各個類別之間存在的數據不平衡問題。另一個非常重要的問題是,很難用one-hot representation來表達不同類別之間的關聯度。這種表示方法經常在執行標簽時使用。[73]中提出的標簽平滑是將硬標簽轉換為軟標簽以進行訓練,這可以使模型更加健壯。為了獲得更好的軟標簽,Islamet等人[33]引入知識蒸餾的概念來設計標簽優化網絡。

        最后"一袋贈品"是邊界框回歸的目標函數。傳統的目標檢測器通常使用均方誤差(MSE)直接對BBox的中心點坐標和高度、寬度進行回歸,即{xcenter,ycenter,w,h},或者對左上角和右下點,即{xtopleft,ytopleft,xbottomright,ybottomright}進行回歸。對於基於錨點的方法,是估計相應的偏移量,例如{xcenterOffset,ycenterOffset,wOffset,hoffset}和{xtopleftoffset,ytopleftoffset,xbottomright toffset,ybottomright toffset},例如{xtopleftoffset,ytopleftoffset}和{xtopleftoffset,ytopleftoffset}。然而,直接估計BBox中每個點的坐標值是將這些點作為獨立變量來處理,而實際上並沒有考慮對象本身的完整性。為了更好地處理這一問題,最近一些研究人員提出了IoU loss[90],將預測BBOX區域的覆蓋率和地面真實BBOX區域的覆蓋率考慮在內。IOU loss計算過程將觸發BBOX的四個坐標點的計算,方法是執行具有地面實況的借條,然后將生成的結果連接到一個完整的代碼中。由於IOU是一種標度不變的表示,它可以解決傳統方法計算{x,y,w,h}的l1或l2個損失時,損失會隨着尺度的增大而增大的問題。最近,搜索者不斷改善欠條損失。例如,GIOU損失[65]除了包括覆蓋區域外,還包括對象的形狀和方向。他們提出找出能同時覆蓋預測BBOX和實際BBOX的最小面積BBOX,並用這個BBOX作為分母來代替原來在欠條損失中使用的分母。對於DIoU loss[99],它另外考慮了物體中心的距離,而CIoU損失[99]則同時考慮了重疊面積、中心點之間的距離和縱橫比。在求解BBox回歸問題時,Ciou可以達到較好的收斂速度和精度。

        但是,直接估計BBox的每個點的坐標值是將這些點視為獨立變量,但實際上並未考慮對象本身的完整性。為了使這個問題得到更好的處理,一些研究人員最近提出了IoU損失[90],它將預測的BBox區域的覆蓋率和地面真實BBox區域的覆蓋范圍考慮在內。IoU損耗計算過程將通過使用基本事實執行IoU,然后將生成的結果連接到整個代碼中,觸發BBox的四個坐標點的計算。因為IoU是尺度不變表示,所以可以解決傳統方法計算fx,y,w,hg的l1或l2損失時,損失會隨着尺度增加的問題。最近,一些研究人員繼續改善IoU損失。例如,GioU損失[65]除了覆蓋區域外還包括對象的形狀和方向。他們提出找到可以同時覆蓋預測的BBox和地面真值BBox的最小面積BBox,並使用該BBox作為分母來代替最初用於IoU損失的分母。至於DIoU損耗[99],它另外考慮了對象中心的距離,而CIoU損耗[99]同時考慮了重疊區域,中心點之間的距離和縱橫比。CIoU可以在BBox回歸問題上實現更好的收斂速度和准確性。

2.3 Bag of specials

        對於那些僅增加少量推理成本但可以顯着提高對象檢測准確性的插件模塊和后處理方法,我們將其稱為“特價袋”。一般而言,這些插件模塊用於增強模型中的某些屬性,例如擴大接受域,引入注意力機制或增強特征集成能力等,后處理是用於篩選模型預測結果的方法。

        可以用來增強接收域的常用模塊是SPP [25],ASPP [5]和RFB [47]。SPP模塊起源於空間金字塔匹配(SPM)[39],而SPM的原始方法是將特征圖分割為幾個d*d個相等的塊,其中d可以為{1,2,3,...},從而形成空間金字塔,然后提取bag-of-word特征。SPP將SPM集成到CNN中,並使用最大池化操作而不是bag-of-word操作。由於He等人提出的SPP模塊。[25]將輸出一維特征向量,在全卷積網絡(FCN)中應用是不可行的。因此,在YOLOv3的設計中[63],Redmon和Farhadi將SPP模塊改進為內核大小為k*k的最大池輸出的級聯,其中k = {1,5,9,13},步幅等於1。在這種設計下,較大的k*k的最大池化有效地增加了主干特征的接收域。在添加了改進版本的SPP模塊之后,YOLOv3-608在MS COCO物體檢測任務上將AP50升級了2.7%,而額外的計算費用為0.5%。ASPP[5]模塊和改進的SPP模塊之間的操作差異主要在於原始k*k內核的大小,步幅的最大池等於1到幾個3*3內核大小,膨脹比等於k, 步幅在膨脹卷積運算中等於1。RFB模塊將使用k個k核的多個膨脹卷積,膨脹比等於k,步幅等於1,以獲得比ASPP更全面的空間覆蓋。RFB [47]僅花費7%的額外推理時間,即可將MS COCO上SSD的AP50提高5.7%。

       物體檢測中經常使用的注意力模塊主要分為通道式注意和點式注意,這兩種注意模型的代表是Squeeze-and-Excitation(SE)[29]和空間注意模塊(SAM)[ 85]。盡管SE模塊可以將ImageNet圖像分類任務中的ResNet50的功能提高1%至top-1精度,其中僅需將計算工作量增加2%即可,但是通常在GPU上它將使推理時間增加大約10%, 因此更適合在移動設備中使用。但是對於SAM,它只需要付出0.1%的額外計算,就可以在ImageNet圖像分類任務上將ResNet50-SE的top-1准確性提高0.5%。最棒的是,它根本不影響GPU上的推理速度。

        在特征集成方面,早期的實踐是使用KIP連接[51]或超列[22]將低級物理特征集成到高級語義特征。隨着模糊神經網絡等多尺度預測方法的普及,人們提出了許多集成不同特征金字塔的輕量級模塊。這種類型的模塊包括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和Mishare都具有連續可區分的激活功能。

        在基於深度學習的對象檢測中通常使用的后處理方法是NMS,它可以用於過濾那些無法預測相同對象的BBox,並僅保留具有較高響應速度的候選BBox。 NMS嘗試改進的方法與優化目標函數的方法一致。 NMS提出的原始方法沒有考慮上下文信息,因此Girshicket等人。 [19]在R-CNN中添加了分類置信度得分作為參考,並且根據置信度得分的順序,從高分到低分的順序執行貪婪的NMS。對於軟網絡管理系統[1],考慮了一個問題,即物體的遮擋可能會導致帶有IoU評分的貪婪的網絡管理系統的置信度得分下降。 DIoU NMS [99]開發人員的思維方式是在softNMS的基礎上將中心距離的信息添加到BBox篩選過程中。值得一提的是,由於上述后處理方法均未直接涉及捕獲的圖像功能,因此在隨后的無錨方法開發中不再需要后處理。

三、方法(Methodology)

       基本目標是神經網絡在生產系統中的快速運行速度以及對並行計算的優化,而不是低計算量理論指標(BFLOP)。我們提供了實時神經網絡的兩種選擇:

  • 對於GPU,我們使用少量的組(1-8)卷積層:CSPResNeXt50 / CSPDarknet53

  • 對於VPU-我們使用分組卷積,但是我們不再使用SE塊-特別是這包括以下模型:EfficientNet-lite / MixNet [76] / GhostNet [21] / Mo-bileNetV3

3.1. Selection of architecture

      我們的目標是在輸入網絡分辨率,卷積層數,參數數(過濾器大小的平方 *過濾器*通道/組)和層輸出(過濾器)的數量之間找到最佳平衡。例如,我們的大量研究表明,就ILSVRC2012(ImageNet)數據集上的對象分類而言,CSPResNext50比CSPDarknet53更好。然而,相反,就檢測MS COCO數據集上的對象而言,CSPDarknet53優於CSPResNext50 [46]。
      下一個目標是針對不同的檢測器級別從不同的主干級別中選擇其他塊來增加接收場和參數聚集的最佳方法: FPN,PAN,ASFF,BiFPN。
      對於分類最佳的參考模型對於檢測器並非總是最佳的。與分類器相比,檢測器需要以下條件:

  • 更大的網絡輸入—用於檢測小目標
  • 更多的層—以獲得更大的接收域來覆蓋增大的輸入圖像
  • 更多的參數—為了增強從單張圖像中檢測出不同大小的多個對象的能力

      假設可以選擇接受域較大(卷積層數為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路徑聚合Neck和YOLOv3(基於錨點的)頭部作為YOLOv4的體系結構。將來,我們計划顯著擴展檢測器的贈品袋(BoF)的內容,從理論上講,它可以解決一些問題並提高檢測器的准確性,並以實驗方式依次檢查每個功能的影響。我們不使用跨GPU批量標准化(CGBNor SyncBN)或昂貴的專用設備。這使任何人都可以在傳統的圖形處理器上重現我們的最新成果,例如GTX 1080Ti或RTX2080Ti。

3.2 Selection of BoF and BoS

         為了改進目標檢測訓練,CNN通常使用以下方法:

  • 激活:ReLU,leaky-ReLU,parameter-ReLU,ReLU6,SELU,Swish或Mish
  • 邊界框回歸損失:MSE,IoU,GIoU,CIoU,DIoU
  • 數據增強:CutOut,MixUp,CutMix
  • 正則化方法:DropOut, DropPath [36],Spatial DropOut [79]或DropBlock
  • 通過均值和方差對網絡激活進行歸一化:Batch Normalization (BN) [32],Cross-GPU Batch Normalization (CGBN or SyncBN)[93], Filter Response Normalization (FRN) [70], orCross-Iteration Batch Normalization (CBN) [89]
  • 跨連接:Residual connections, Weightedresidual connections, Multi-input weighted residualconnections, or Cross stage partial connections (CSP)

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

3.3 Additional improvements

      為了使設計的檢測器更適合在單個GPU上進行訓練,我們進行了以下附加設計和改進:

  • 我們引入了一種新的數據增強方法:Mosaic, and Self-Adversarial Training (SAT)
  • 在應用遺傳算法時,我們選擇最優的超參數
  • 我們修改了一些現有方法,使我們的設計適合進行有效的訓練和檢測-改進的SAM,改進的PAN ,以及跨小批量標准化(CmBN)

      Mosaic是一種新的混合4幅訓練圖像的數據增強方法。所以四個不同的上下文信息被混合,而CutMix只混合了2種。這允許檢測其正常上下文之外的對象。此外,批量歸一化從每層上的4個不同的圖像計算激活統計。這極大地減少了對large mini-batch-size的需求。自對抗訓練(SAT)也代表了一種新的數據增強技術,它在兩個前向后向階段運行。在第一階段,神經網絡改變原始圖像而不是網絡權值。通過這種方式,神經網絡對其自身執行對抗性攻擊,改變原始圖像,以制造圖像上沒有所需對象的欺騙。在第二階段,訓練神經網絡,以正常的方式在修改后的圖像上檢測目標。CmBN表示CBN的修改版本,如圖4所示,定義為交叉小批量規范化(Cross mini-Batch Normalization,CMBN)。這僅在單個批次內的小批次之間收集統計信息。

我們將SAM從空間注意修改為點注意,並將PAN的快捷連接分別替換為串聯,如圖5和圖6所示。

3.4. YOLOv4

      在本節中,我們將詳細介紹YOLOv4的細節。YOLOv4的組成:

  • Backbone: CSPDarknet53 [81]
  • Neck: SPP [25], PAN [49]
  • Head: YOLOv3 [63]

YOLOv4的使用:

  • 支持主干的BoF:CutMix和Mosaic數據增強,DropBlock正則化,類標簽平滑
  • 專為主干網設計的BoS:激活網狀天線,跨階段部分連接(CSP),多輸入加權剩余連接(MiWRC)
  • 用於檢測器的BoF:CIoU損失,CmBN,DropBlock正則化,鑲嵌數據增強,自我專家訓練,消除網格敏感性,對單個地面真相使用多個錨點,余弦退火調度程序[52],最佳超參數,隨機訓練形狀
  • 用於檢測器的BoS:Mish激活,SPP塊,SAM塊,PAN路徑聚集塊,DIoU-NMS

四、實驗

        我們測試了不同訓練改進技術對ImageNet(ILSVRC 2012 val)數據集上分類器准確性的影響,然后對MS COCO(test-dev 2017)數據集上檢測器的准確性進行了測試。

4.1. Experimental setup

        在ImageNet圖像分類實驗中,默認的超參數如下:訓練步驟為8,000,000;批量大小和最小批量大小分別為128和32;采用多項式衰減學習率調度策略,初始學習率為0.1。預熱步驟為1000;動量和權重衰減分別設置為0.9和0.005。我們所有的BoS實驗都使用與默認設置相同的超參數,並且在BoF實驗中,我們添加了額外的50%訓練步驟。在BoF實驗中,我們驗證了MixUp,CutMix,Mosaic,模糊數據增強和標簽平滑正則化方法。在BoS實驗中,我們比較了LReLU,Swish和Mish激活功能的效果。所有實驗均使用1080 Ti或2080 Ti GPU進行訓練。

       在MS COCO物體檢測實驗中,默認的超參數如下:訓練步驟是500,500;訓練步驟是500,500。采用步階衰減學習率調度策略,初始學習率為0.01,並分別以400,000步和450,000步乘以系數0.1。動量和權重衰減分別設置為0.9和0.0005。所有架構都使用單個GPU以64的批量大小執行多尺度訓練,而最小批量大小為8或4則取決於架構和GPU內存限制。除了使用遺傳算法進行超參數搜索實驗外,所有其他實驗均使用默認設置。遺傳算法使用YOLOv3-SPP訓練GIoU損失,並搜索最小值5k集的300個epochs。對於遺傳算法實驗,我們采用搜索學習率0.00261,動量0.949,IoU閾值來分配地面實況0.213,並使用損失歸一化器0.07。我們已經驗證了許多BoF,包括消除網格敏感性,鑲嵌數據增強,IoU閾值,遺傳算法,類標簽平滑,交叉小批量標准化,自對抗訓練,余弦退火調度程序,動態小批量大小,DropBlock,優化anchor,不同類型的IoU損失。我們還對各種BoS進行了實驗,包括Mish,SPP,SAM,RFB,BiFPN和高斯YOLO [8]。對於所有實驗,我們僅使用一個GPU進行訓練,因此未使用可優化多個GPU的諸如syncBN之類的技術。

4.2. Influence of different features on Classifier training

       首先,我們研究不同特征對分類器訓練的影響;具體來說,如圖7所示,類標簽平滑的影響,不同數據增強技術的影響,雙邊模糊,MixUp,CutMix和Mosaic的影響,以及Leaky-ReLU(默認情況下),Swish等不同激活的影響和Mish。

       在我們的實驗中,如表2所示,通過引入以下功能提高了分類器的准確性:CutMix和Mosaic數據增強,類標簽平滑和Mish激活。因此,我們用於分類器訓練的BoFbackbone包括以下內容:CutMix和Mosaic數據增強和類標簽平滑。此外,我們使用Mish激活作為補充選項,如表2和表3所示。

4.3. Influence of different features on Detector training

       進一步的研究涉及到不同的BoF-detector對探測器訓練精度的影響,如表4所示。我們通過研究在不影響FPS的情況下提高探測器精度的各種特征,顯著擴展了BoF列表:

  • S:消除網格靈敏度,方程bx =sigma(tx)+ cx;by =sigma(ty)+ cy,其中cx和cy始終是整數,在YOLOv3中用於評估對象坐標,因此,對於接近 cx或 cx + 1值的bx值,需要非常高的tx絕對值。我們通過將sigmoid函數乘以超過1.0的因數來解決此問題,從而消除了無法檢測到物體的網格的影響。
  • M:Mosaic數據增強-在訓練過程中使用4圖像Mosanic而非單幅圖像
  • IT:IoU閾值-對單個真實背景IoU(真實,錨點)> IoU閾值使用多個錨點
  • GA:遺傳算法-使用遺傳算法在網絡訓練的前10%時間段內選擇最佳超參數
  • LS:類標簽平滑-使用類標簽平滑進行S型激活
  • CBN:CmBN-使用交叉微型批處理規一化來收集整個批處理中的統計信息,而不是在單個微型批處理中收集統計信息
  • CA:余弦退火調度程序-在正弦曲線訓練期間更改學習率
  • DM:動態小批量大小-使用隨機訓練形狀在小分辨率訓練期間自動增加小批量大小
  • OA:優化的anchor-使用優化的anchor以512x512網絡分辨率進行訓練
  • IoU,CIoU,DIoU,MSE-使用不同的損失算法進行有界框回歸

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

4.4. Influence of different backbones and pretrained weightings on Detector training

  • 進一步,我們研究了不同骨干模型對檢測器精度的影響,如表6所示。我們注意到,具有最佳分類精度的模型在檢測器精度方面並不總是最佳的。
  • 首先,盡管與CSPDarknet53模型相比,經過不同功能訓練的CSPResNeXt50模型的分類准確性更高,但是CSPDarknet53模型在對象檢測方面顯示出更高的准確性。
  • 其次,將BoF和Mish用於CSPResNeXt50分類器訓練可提高其分類准確性,但是將這些預訓練權重進一步用於檢測器訓練會降低檢測器准確性。
  • 但是,將BoF和Mish用於CSPDarknet53分類器訓練會提高分類器和使用該分類器預訓練加權的檢測器的准確性。
  • 最終結果是,骨干CSPDarknet53比CSPResNeXt50更適合於檢測器。
  • 我們觀察到,由於各種改進,CSPDarknet53模型顯示出提高檢測器精度的更大能力。

4.5. Influence of different minibatch size on Detector training

      最后,我們分析了使用不同小批量大小訓練的模型獲得的結果,結果顯示在表7中。從表7中顯示的結果中,我們發現在添加BoF和BoS訓練策略之后,小批量大小對檢測器的性能幾乎沒有影響。此結果表明,在引入BoF和BoS之后,不再需要使用昂貴的GPU進行訓練。換句話說,任何人都只能使用常規的GPU來訓練出色的檢測器。

五. Results

      與其他最先進的物體探測器獲得的結果進行比較,如圖8所示。我們的YOLOv4位於帕累托最優曲線上,在速度和准確性方面均優於最快,最精確的探測器。由於不同的方法使用不同架構的GPU進行推理時間驗證,因此我們在Maxwell,Pascal和Volta架構的通用GPU上運行YOLOv4,並將它們與其他最新方法進行比較。

圖8:不同物體檢測器的速度和准確性的比較。(一些文章指出,它們的探測器的FPS僅適用於其中一種GPU:Maxwell / Pascal / Volta)

      表8列出了使用Maxwell GPU的幀速率比較結果,它可以是GTX Titan X(Maxwell)或Tesla M40 GPU。

 表8:MS COCO數據集上不同物體檢測器的速度和准確性的比較(testdev 2017)

(FPS 30或更高的實時檢測器在此處突出顯示。我們將結果與batch = 1進行比較,而無需使用tensorRT。)

      表9列出了使用Pascal GPU的幀速率比較結果,可以是Titan X(Pascal),Titan Xp,GTX 1080 Ti或Tesla P100 GPU。

表9:MS COCO數據集上不同物體檢測器的速度和准確性的比較(test-dev 2017)。
(FPS 30或更高的實時檢測器在此處突出顯示。我們將結果與batch = 1進行比較,而無需使用tensorRT。)

      至於表10,它列出了使用Volta GPU的幀速率比較結果,可以是Titan Volta或Tesla V100 GPU。

表10:MS COCO數據集上不同物體檢測器的速度和准確性的比較(test-dev 2017)
(FPS 30或更高的實時檢測器在此處突出顯示。我們將結果與batch = 1進行比較,而無需使用tensorRT)

六. Conclusions

      我們提供最先進的檢測器,其幀率(FPS)和准確度(MS COCO AP50 … 95和AP50)比所有可用的替代檢測器都高。所描述的檢測器可以在具有8-16GB-VRAM的常規GPU上進行訓練和使用,這使得它的廣泛使用成為可能。一階段基於錨的探測器的原始概念已證明其可行性。我們已經驗證了大量特征,並選擇使用其中的一些特征以提高分類器和檢測器的准確性。這些功能可以用作將來研究和開發的最佳實踐。

七、Acknowledgements

作者要感謝Glenn Jocher進行Mosaic數據增強的想法,通過使用遺傳算法選擇超參數並解決網格敏感性問題的方法https://github.com/ultralytics/yolov3.10

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM