【YOLO V4】 速度和準確度更優的目標檢測

在這裏插入圖片描述
從圖中可以看到,最新的YOLO V4 版本的速度比EfficientDet 快了 2倍在大致相同的AP 表現下。相比之前的YOLO V3 AP和FPS 分別提升了 10% 和 12%。

摘要:

據說有許多功能可以提高卷積神經網絡(CNN)的準確性。需要在大型數據集上對這些特徵的組合進行實際測試,並對結果進行理論證明。某些功能僅在某些模型上運行,並且僅在某些問題上運行,或者僅在小型數據集上運行;而某些功能(例如批歸一化和殘差連接)適用於大多數模型,任務和數據集。我們假設此類通用功能包括加權殘差連接(WRC),跨階段部分連接(CSP),跨小批量標準化(CmBN),自對抗訓練(SAT)和Mish激活。我們使用新功能:WRC,CSP,CmBN,SAT,Mish激活,馬賽克數據增強,CmBN,DropBlock正則化和CIoU丟失,並結合其中的一些來達到最先進的結果:在MS VCO數據集上,Tesla V100的實時速度爲〜65 FPS時爲43.5%AP(65.7%AP50)。
論文的源碼鏈接:https://github.com/JianqiuChen/darknet

Related work

目標檢測模型

現代的檢測器通常由兩部分組成,一個是在ImageNet上預訓練的骨架,另一個是用來預測對象的類別和邊界框的主要部分。對於在GPU平臺上運行的那些檢測器,其主幹可能是VGG [68],ResNet [26],ResNeXt [86]或DenseNet [30]。對於在CPU平臺上運行的那些檢測器,其主幹可以是SqueezeNet [31],MobileNet [28、66、27、74]或ShuffleNet [97、53]。至於頭部,通常分爲兩類,即一級目標檢測器和二級目標檢測器。最具有代表性的兩級對象檢測器是R-CNN [19]系列,包括快速R-CNN [18],更快的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],HitDeector [20])。 。
綜上所述,普通的物體檢測器由以下幾部分組成:
在這裏插入圖片描述

Bag of freebies

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

上面提到的數據擴充方法都是逐像素調整,並且保留了調整區域中的所有原始像素信息。此外,一些從事數據增強的研究人員將重點放在模擬對象遮擋問題上。他們在圖像分類和目標檢測中取得了良好的效果。例如,隨機擦除[100]和CutOut [11]可以隨機選擇圖像中的矩形區域,並填充零的隨機或互補值。至於捉迷藏[69]和網格遮罩[6],他們隨機或均勻地選擇圖像中的多個矩形區域,並將它們替換爲所有的zeros。如果類似的概念應用於特徵圖,則有DropOut [71],DropConnect [80]和DropBlock [16]方法。另外,一些研究人員提出了使用多個圖像一起執行數據增強的方法。例如,MixUp [92]使用兩個圖像以不同的係數比值相乘和疊加,然後使用這些疊加的比值來調整標籤。對於CutMix [91],它是將裁切後的圖像覆蓋到其他圖像的矩形區域,並根據混合區域的大小調整標籤。除了上述方法之外,樣式轉移GAN [15]還用於數據擴充,這種用法可以有效地減少CNN所學習的紋理偏差。

與上面提出的各種方法不同,其他一些免費贈品方法專用於解決數據集中語義分佈可能存在偏差的問題。在處理語義分佈偏向問題時,一個非常重要的問題是不同類之間存在數據不平衡的問題,並且該問題通常通過硬否定示例挖掘[72]或在線硬示例挖掘來解決。 [67]在兩階段對象檢測器中。

因此林等。 [45]提出了焦點損失,以解決各種類別之間存在的數據不平衡問題。另一個非常重要的問題是,很難用一鍵硬表示來表達不同類別之間的關聯度的關係。執行標記時通常使用這種表示方案。在[73]中提出的標籤平滑是將硬標籤轉換爲軟標籤以進行訓練,這可以使模型更健壯。爲了獲得更好的軟標籤,Islam等。 [33]介紹了知識蒸餾的概念來設計標籤細化網絡。
最後一袋免費贈品是邊界框(BBox)迴歸的目標函數。傳統的物體檢測器通常使用均方誤差(MSE)對BBox的中心點座標以及高度和寬度直接執行迴歸,即{xcenter,ycenter,w,h}或左上點和右下點,即{xtop左,ytop左,xbottom右,ybottom右}。對於基於錨的方法,它是估計對應的偏移量,例如{fset的xcenter,fset的ycenter,woffset,hoffset}和{xtop左偏移量,ytop左偏移量,xbottom右偏移量,ybottom右偏移量偏移量}。但是,直接估計BBox的每個點的座標值是將這些點視爲自變量,但實際上並沒有考慮對象本身的完整性。爲了使這個問題得到更好的處理,一些研究人員最近提出了IoU損失[90],從而將預測的BBox區域和地面真實BBox區域的覆蓋範圍考慮在內。 IoU損耗計算過程將通過使用基本事實執行IoU,然後將生成的結果連接到整個代碼中,從而觸發BBox的四個座標點的計算。因爲IoU是尺度不變表示,所以可以解決傳統方法計算{x,y,w,h}的l1或l2損失時,損失會隨着尺度增加的問題。最近,一些研究人員繼續改善IoU損失。例如,GIoU損失[65]除了覆蓋區域外還包括對象的形狀和方向。他們建議找到最小面積的BBox,它可以同時覆蓋預測的BBox和地面真值BBox,並使用該BBox作爲分母來代替最初用於IoU損耗的分母。至於DIoU損失[99],它還考慮了對象中心的距離,而CIoU損失[99]同時考慮了重疊區域,中心點之間的距離和縱橫比。 CIoU可以在BBox迴歸問題上實現更好的收斂速度和準確性。

Bag of specials

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

可以用來增強接收域的通用模塊是SPP [25],ASPP [5]和RFB [47]。 SPP模塊起源於空間金字塔匹配(SPM)[39],SPM的原始方法是將特徵圖分割爲幾個d×d個相等的塊,其中d可以爲{1,2,3,…。 },從而形成空間金字塔,然後提取詞袋特徵。 SPP將SPM集成到CNN中,並使用最大池操作而不是詞袋操作。由於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%。

通常在對象檢測中使用的注意力模塊主要分爲通道注意和點注意,這兩個注意模型的代表是擠壓和激發(SE)[29]和Spa -分別注意模塊(SAM)[85]。儘管SE模塊可以將ImNetNet圖像分類任務中的ResNet50的功能提高1%至top-1的準確性,但僅將計算工作量增加2%即可,但是通常在GPU上它將使推理時間增加大約10 %,因此更適合在移動設備中使用。但是對於SAM,它只需要支付0.1%的額外費用,就可以在ImageNet圖像分類任務上將ResNet50-SE的top-1準確性提高0.5%。最好的是,它根本不影響GPU上的推理速度。
在特徵集成方面,早期的實踐是使用跳過連接[51]或超列[22]將低層物理特徵集成到高層語義特徵。由於諸如FPN的多尺度預測方法已變得流行,因此提出了許多集成了不同特徵金字塔的輕量級模塊。這種模塊包括SFAM [98],ASFF [48]和BiFPN [77]。 SFAM的主要思想是使用SE模塊在多尺度級聯特徵圖上執行通道級級別的加權。對於ASFF,它使用softmax作爲逐點級別權重,然後添加不同比例的特徵圖。在BiFPN中,提出了多輸入加權殘差連接以執行按比例的級別重新加權,然後添加不同比例的特徵圖。
在深度學習的研究中,有些人專注於尋找良好的激活功能。良好的激活函數可以使梯度更有效地傳播,同時不會引起過多的額外計算成本。 Nair和Hinton [56]在2010年提出ReLU來實質上解決傳統tanh和S形激活函數中經常遇到的梯度消失問題。隨後,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。對於軟網絡管理系統[1],它考慮到一個問題,即物體的遮擋可能會導致帶有IoU分數的貪婪的網絡管理系統的置信度得分下降。 DIoU NMS [99]開發人員的思維方式是在軟NMS的基礎上將中心距離的信息添加到BBox篩選過程中。值得一提的是,由於上述後處理方法均未直接涉及捕獲的圖像功能,因此在隨後的無錨定方法開發中不再需要後處理。

Methodology

在並行計算和生產系統上進行優化。

The basic aim is fast operating speed of neural network, in production systems and optimization for parallel computations, rather than the low computation volume theoreti- cal indicator (BFLOP).

We present two options of real-time neural networks:
• For GPU we use a small number of groups (1 - 8) in convolutional layers: CSPResNeXt50/CSPDarknet53
• For VPU - we use grouped-convolution, but we refrain from using Squeeze-and-excitement (SE) blocks - specifically
this includes the following models: EfficientNet-lite / MixNet [76] GhostNet [21] / Mo- bileNetV3

Selection of architecture

YOLO V4 的目標是在輸入網絡分辨率,卷積層數,參數數之間找到最佳平衡。 (filter size2 * filters * channel / groups), and the number of layer outputs (filters)
舉個例子來說:

our numerous studies demonstrate that the CSPResNext50 is considerably better compared to CSPDarknet53 in terms of object classification on the ILSVRC2012 (ImageNet) dataset . However, conversely, theCSPDarknet53 is better compared to CSPResNext50 in terms of detecting ob- jects on the MS COCO dataset.

YOLO V4 另一個目標是針對不同的檢測器水平,從不同的主幹水平中選擇更多的塊以增加感受野和最佳參數聚集方法 比如FPN,PAN,ASFF, BiFPN

對於分類最佳的參考模型對於檢測器並非總是最佳的。與分類器相比,檢測器需要滿足以下條件:

  1. 更高的輸入網絡規模(分辨率)–用於檢測多個小型物體
  2. 更高的層數–更高的感受野,以覆蓋輸入網絡不斷擴大的規模
  3. 更多的參數–提高模型在單個圖像中檢測不同大小的多個對象的能力

假設地說,我們可以假設一個具有較大感受野的(通過大量3×3的卷積和)和大量參數的模型主幹。表1顯示了CSPResNeXt50,CSPDarknet53和EfficientNet B3的信息。 CSPResNext50僅包含16個3×3卷積層,一個425×425感受野和20.6 M參數,而CSPDarknet53包含29個3×3卷積層,一個725×725感受野和27.6 M參數。這種理論上的論證,再加上我們的衆多實驗,表明CSPDarknet53神經網絡是兩者作爲檢測器主幹的最佳模型。

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

Up to the object size - allows viewing the entire object
Up to networksize-allows viewing the context around
the object
Exceeding the network size - increases the number of connections between the image point and the final activation

我們將SPP塊添加到CSPDarknet53上,因爲它顯着增加了感受野,分離出最重要的上下文特徵,並且幾乎沒有降低網絡運行速度。我們使用PANet作爲針對不同檢測器級別的來自不同backbone 級別的參數聚合方法,而不是YOLOv3中使用的FPN

最後,我們選擇CSPDarknet53骨幹網,SPP附加模塊,PANet路徑聚合瓶頸和YOLOv3(anchor based)作爲YOLOv4的體系結構。
將來,我們計劃大幅擴展檢測器的贈品袋(BoF)的內容,從理論上講,它可以解決一些問題並提高檢測器的準確性,並以實驗方式依次檢查每個功能的影響。

YOLO V4 不使用跨GPU批量標準化(CGBN或SyncBN)或昂貴的專用設備。這樣一來,任何人都可以在傳統的圖形處理器上重現我們的最新技術成果,例如GTX 1080Ti或RTX 2080Ti。

Selection of BoF and BoS

爲了改進對象檢測訓練過程,CNN通常使用以下方法:

在這裏插入圖片描述
至於訓練激活功能,由於PReLU和SELU更難以訓練,並且ReLU6是專門爲量化網絡設計的,因此我們從候選列表中刪除了上述激活功能。在重新量化方法中,發佈DropBlock的人已將其方法與其他方法進行了詳細的比較,並且其正則化方法贏得了很多。因此,我們毫不猶豫地選擇了DropBlock作爲我們的規範化方法。至於標準化方法的選擇,由於我們專注於僅使用一個GPU的訓練策略,因此不考慮syncBN。

Additional improvements

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

•我們引入了一種新的數據增強方法,即自我專業​​訓練(SAT)
•我們在應用遺傳算法時選擇最佳超參數
•我們修改了一些現有方法,使我們的設計適合進行有效的訓練和檢測-修改後的SAM,修改後的PAN和交叉小批量標準化(CmBN)

Mosaic 表示一種新的數據增強方法,該方法混合了4個訓練圖像。然而 CutMix 只有兩個輸入圖像。這樣就可以檢測到超出其正常上下文的對象。此外,批量歸一化從每層上的4張不同圖像計算激活統計信息。這大大減少了對大批量生產的需求。

在這裏插入圖片描述
自我對抗訓練(SAT)也代表了一項新的數據增強技術,該技術可在2個向前和向後的階段進行操作。在第一階段,神經網絡會更改原始圖像,而不是網絡權重。這樣,神經網絡對其自身執行了對抗攻擊,從而改變了原始圖像,從而欺騙了圖像上沒有想要的物體。在第二階段,訓練神經網絡以正常方式檢測此修改圖像上的對象。

CmBN表示CBN修改版本,如圖4所示,定義爲交叉微型批處理規範化(CmBN)。這僅收集單個batch中的mini-batches之間的統計信息。
在這裏插入圖片描述
我們將SAM從空間注意改爲點注意,並將PAN的快捷連接替換爲串聯,分別如圖5和圖6所示。
在這裏插入圖片描述

YOLOv4 的部分細節

在這裏插入圖片描述

實驗

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

在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,分別在40萬步和45萬步上乘以係數0.1。動量和重量衰減分別設置爲0.9和0.0005。所有架構均使用單個GPU以64的批處理大小執行多尺度訓練,而最小批處理大小爲8或4則取決於架構和GPU內存限制。除了使用遺傳算法進行超參數搜索實驗外,所有其他實驗均使用默認設置。遺傳算法使用YOLOv3-SPP訓練GIoU損失,並搜索300個紀元的最小值5k集。對於遺傳算法實驗,我們採用搜索學習率0.00261,動量0.949,IoU閾值來分配地面實況0.213,並使用損失歸一化器0.07。我們已經驗證了許多BoF,包括消除網格敏感性,分子數據增強,IoU閾值,遺傳算法,類標籤平滑,交叉小批量標準化,自對抗訓練,餘弦退火調度程序,動態小批量大小,DropBlock,優化錨點,不同類型的IoU損失。我們還對各種BoS進行了實驗,包括Mish,SPP,SAM,RFB,BiFPN和高斯YOLO [8]。對於所有實驗,我們僅使用一個GPU進行訓練,因此未使用可優化多個GPU的諸如syncBN之類的技術。

結論

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

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