YOLOv4原文翻譯 - v4它終於來了!

論文原文:https://arxiv.org/abs/2004.10934
源碼:https://github.com/AlexeyAB/darknet

寫在前面

不久之前,YOLO創始人Redmon宣佈退出CV界,真的很可惜!對我而言,YOLO系列的算法是我研究的第一個目標檢測的算法,我對YOLO算法的感情不言而喻。

那天中午,當看到v4提出的消息的時候,真的很高興!當看到第一作者不再是Redmon的時候,心中還是有點抗拒的,但是,作爲Redmon認可的v4以及瞭解v4接棒人AB對整個YOLO算法精度和速度提升的效果之後,我第一時間將論文下載了下來,花了將近兩天的時間精讀論文並且翻譯了原文。

因爲本人能力有限,難免會有翻譯不恰當的地方,還請各位看官老爺斧正。最後,歡迎大家和我交流~


0 摘要

目前有很多可以提高CNN準確性的算法。這些算法的組合在龐大數據集上進行測試、對實驗結果進行理論驗證都是非常必要的。有些算法只在特定的模型上有效果,並且只對特定的問題有效,或者只對小規模的數據集有效;然而有些算法,比如batch-normalization和residual-connections,對大多數的模型、任務和數據集都適用。我們認爲這樣通用的算法包括:Weighted-Residual-Connections(WRC), Cross-Stage-Partial-connections(CSP), Cross mini-Batch Normalization(CmBN), Self-adversarial-training(SAT)以及Mish-activation。我們使用了新的算法:WRC, CSP, CmBN, SAT, Mish activation, Mosaic data augmentation, CmBN, Dropblock regularization 和CIoU loss以及它們的組合,獲得了最優的效果:在MS COCO數據集上的AP值爲43.5%(65.7% AP50),在Tesla V100上的實時推理速度爲65FPS

從摘要中我們基本上可以看出:v4實際上就是保留Darknet作爲backbone,然後通過大量的實驗研究了衆多普適性算法對網絡性能的影響,然後找到了它們最優的組合。

1 介紹

大部分基於CNN的目標檢測器主要只適用於推薦系統。舉例來說,通過城市相機尋找免費停車位置的系統使用着慢速但是高精度的模型,然而汽車碰撞警告卻使用着快速但是低精度的模型。提高實時目標檢測器的精度不經能夠應用在推薦系統上,而且還能用於獨立的流程管理以及降低人員數量上。目前大部分高精度的神經網絡不僅不能實時運行,並且需要較大的mini-batch-size在多個GPUs上進行訓練。我們構建了僅在一塊GPU上就可以實時運行的CNN解決了這個問題,並且它只需要在一塊GPU上進行訓練

我們工作的主要目標就是設計一個僅在單個計算系統(比如單個GPU)上就可以快速運行的目標檢測器並且對並行計算進行優化,並非減低計量計算量理論指標(BFLOP)。我們希望這個檢測器能夠輕鬆的訓練和使用。具體來說就是任何一個人僅僅使用一個GPU進行訓練和測試就可以得到實時的,高精度的以及令人信服的目標檢測結果,正如在圖片1中所示的YOLOv4的結果。我們的貢獻總結如下:

(1)我們提出了一個高效且強大的目標檢測模型。任何人可以使用一個1080Ti或者2080Ti的GPU就可以訓練出一個快速並且高精度的目標檢測器。

(2)我們在檢測器訓練的過程中,測試了目標檢測中最高水準的Bag-of-FreebiesBat-of-Specials方法

(3)我們改進了最高水準的算法,使得它們更加高效並且適合於在一個GPU上進行訓練,比如CBN, PAN, SAM等。

2 相關工作

2.1 目標檢測模型

檢測器通常由兩部分組成:backbonehead。前者在ImageNet上進行預訓練,後者用來預測類別信息和目標物體的邊界框。在GPU平臺上運行的檢測器,它們的backbone可能是VGG, ResNet, ResNetXt,或者是DenseNet。在CPU平臺上運行的檢測器,它們的backbone可能是SqueezeNet,MobileNet或者是ShuffleNet。對於head部分,通常分爲兩類:one-stage和two-stage的目標檢測器。Two-stage的目標檢測器的代表是R-CNN系列,包括:fast R-CNN, faster R-CNN,R-FCN和Libra R-CNN. 還有基於anchor-free的Two-stage的目標檢測器,比如RepPoints。One-stage目標檢測器的代表模型是YOLO, SSD和RetinaNet。在最近幾年,出現了基於anchor-free的one-stage的算法,比如CenterNet, CornerNet, FCOS等等。在最近幾年,目標檢測器在backbonehead之間會插入一些網絡層,這些網絡層通常用來收集不同的特徵圖。我們將其稱之爲目標檢測器的neck。通常,一個neck由多個bottom-up路徑和top-down路徑組成。使用這種機制的網絡包括Feature Pyramid Network(FPN),Path Aggregation Network(PAN),BiFPN和NAS-FPN。

除了上面的這些模型,一些學者將重點放在爲目標檢測器構建新的backbone(DetNet, DetNASNet)或者是一整個新的模型(SpinNet, HitDetector)。

綜上所述,一個普通的目標檢測器由下面四個部分組成:

2.2 Bag of freebies

通常來說,目標檢測器都是進行離線訓練的(訓練的時候對GPU數量和規格不限制)。因此,研究者總是喜歡揚長避短,使用最好的訓練手段,因此可以在不增加推理成本的情況下,獲得最好的檢測精度。我們將只改變訓練策略或者只增加訓練成本的方法稱之爲“bag of freebies"。在目標檢測中經常使用並且滿足bag of freebies的定義的算法稱是①數據增廣。數據增廣的目的是增加輸入圖片的可變性,因此目標檢測模型對從不同場景下獲取的圖片有着更高的魯棒性。舉例來說,photometric distoitions和geometric distortions是用來數據增強方法的兩個常用的手段。在處理photometric distortion中,我們會調整圖像的亮度,對比度,色調,飽和度以及噪聲。對於geometric distortion,我們會隨機增加尺度變化,裁剪,翻轉以及旋轉。

上面提及的數據增廣的手段都是像素級別的調整,它保留了調整區域的所有原始像素信息。此外,一些研究者將數據增廣的重點放在了②模擬目標物體遮擋問題上。他們在圖像分類和目標檢測上已經取得了不錯的結果。具體來說,random erase和CutOut可以隨機選擇圖像上的矩形區域,然後進行隨機融合或者使用零像素值來進行融合。對於hide-and-seek和grid mask,他們隨機地或者均勻地在一幅圖像中選擇多個矩形區域,並且使用零來代替矩形區域中的像素值。如果將相似的概念用來特徵圖中,出現了DropOut, DropConnect和DropBlock方法。此外,一些研究者提出一起使用多張圖像進行數據增強的方法。舉例來說,MixUp使用兩張圖片進行相乘並且使用不同的係數比進行疊加,然後使用它們的疊加比來調整標籤。對於CutMix,它將裁剪的圖片覆蓋到其他圖片的矩形區域,然後根據混合區域的大小調整標籤。除了上面提及的方法,style transfer GAN也用來數據增廣,CNN可以學習如何有效的減少紋理偏差。

一些和上面所提及的不同的方法用來解決數據集中的語義分佈可能存在偏差的問題。處理語義分佈偏差的問題,一個非常重要的問題就是在不同類別之間存在數據不平衡,並且這個問題在two-stage目標檢測器中,通常使用hard negative example mining或者online hard example mining來解決。但是example mining 方法並不適用於one-stage的目標檢測器,因爲這種類型的檢測器屬於dense prediction架構。因此focal loss算法用來解決不同類別之間數據不均衡的問題。③另外一個非常重要的問題就是使用one-hot很難描述不同類別之間關聯度的關係。Label smothing提出在訓練的時候,將hard label轉換成soft label,這個方法可以使得模型更加的魯棒性。爲了得到一個最好的soft label, Islam引入了知識蒸餾的概念來設計標籤細化網絡。

最後一個bag of freebies是④設計邊界框迴歸的目標函數。傳統的目標檢測器通常使用均方根誤差(MSE)在Bbox的中心座標以及寬高上進行直接的迴歸預測,即\left \{ x_{center}, y_{center}, w, h \right \},或者左上角和右下角的兩個點,即\left \{ x_{top-left}, y_{top-right},x_{bottom-left},y_{bottom-right} \right \}。對於anchor-based方法,去預測相應的offset,比如\left \{ x_{center-offset},y_{center-offset},w_{offset},h_{offset} \right \}\left \{ {x_{top-left-offset},y_{top-left-offset},x_{bottom-right-offset},y_{bottom-right-offset}} \right \}但是,預測Bbox每個點的座標值是將這些點作爲獨立的變量,但是實際上並沒有將目標物體當成一個整體進行預測。爲了更好的解決這個問題,一些研究者最近提出了IoU損失函數,它能夠將Bbox區域和ground truth的BBox區域的作爲整體進行考慮。IoU損失函數需要計算BBox四個座標點以及ground truth的IoU。因爲IoU具有尺度不變性,它可以解決傳統算法比如l_{1}, l_{2}範數計算\left \{ {x,y,w,h} \right \}存在的問題,這個損失函數會隨着尺度的變化而發生變化。最近,一些研究者繼續提高IoU損失函數的性能。舉例來說,除了覆蓋範圍,GIoU還包括目標物體的形狀和座標。他們提出尋找同時包括預測的BBox和ground truth的BBox的封閉區域BBox,然後使用這個BBox作爲分母去代替原來Iou損失函數中的分母。DIoU損失函數額外考慮了目標物體的中心距離,CIoU另一方面同時將覆蓋區域,中心點距離和縱橫比考慮在內。CIoU在BBox迴歸問題上可以獲得最好的收斂速度和準確率。

2.3 Bag of specials

對於那些插件模塊後處理方法,它們僅僅稍微的增加了推理成本,但是可以極大地提高目標檢測的準確度,我們將其稱之爲“bag of specials”。一般來說,這些插件模塊用來提高一個模型中特定的屬性,比如增加感受野,引入注意力機制或者提高特徵整合的能力等等;後處理方法是用來抑制模型預測結果的一種方法。

可以用來提升感受野的常規的方法是SPP, ASPP和RFB。SPP模型來源於空間金字塔匹配(SPM),而且SPMs原始的方法將特徵圖劃分成很多d*d個相等的塊,其中d可以是{1,2,3,…},因此可以形成空間金字塔,然後提取bag-of-word的特徵。SPP將SPM應用在CNN中,然後使用max-pooling代替bag-of-word運算。因爲SPP輸出的是一維的特徵向量,因此它不能應用在全卷積網絡(FCN)中。在YOLOv3中,Redmon和Farhadi改進了SPP模塊,將max-pooling輸出和內核尺寸k*k連接起來,其中k={1,5,8,13},stride=1。基於這個設計,一個相對較大的k*k的max-pooling有效地提高了backbone特徵的感受野。在添加了改進後的SPP模型之後,YOLO-v3-608在COCO數據集上,雖然增加了0.5%的額外計算量,但是提高了2.7%的AP50。ASPP模塊和改進的SPP模塊的區別主要在:原始的k*k過濾器尺寸,從stride=1到3*3內核尺寸的max-pooling,在stride=1的碰撞卷積運算中膨脹比爲k。RFB模塊使用一些k*k的內核,膨脹比爲k,步長爲1的碰撞卷積,它比ASPP獲得了更全面的空間覆蓋率。RFB在MS COCO數據集上僅僅增加了7%的額外推理時間,但是得到了5.7%的AP50提升。

目標檢測上經常使用的注意力模塊主要分成channel-wise注意力模塊和point-wise注意力模塊,這兩個注意力模塊主要的代表分別是Squeeze-and-Excitation(SE)和Spartial Attention Module(SAM)。儘管SE模塊在ImageNet圖像分類工作上僅僅增加了2%的計算量而提高了1%的top-1準確率,但是在GPU上提高了10%的推理時間,因此SE模塊更適合在移動設備上使用。但是對於SAM模塊來說,在ImageNet圖像分類任務中,它僅僅需要0.1%的額外計算量卻能夠提升ResNet-SE 0.5%的top-1準確率。它在GPU上並沒有有效地影響推理速度。

關於特徵融合,早期的是使用skip connection或者是hyper-column將低級的特徵和高級的語義特徵進行融合。因爲多尺度預測方法比如FPN逐漸受到追捧,因此提出了很多將不同特徵金字塔融合的輕量級模型。這類別的模型包括SFAM, ASFF和BiFPN。SFAM的主要思想是在多尺度連接特徵圖上使用channel-wise級別的調整。對於ASFF,它使用softmax作爲point-wise級別的調整,然後將不同尺度的特徵圖加在一起。在BiFPN中,提出使用多輸入權重殘差連接去執行scale-wise級別的調整,然後將不同尺度的特徵圖加在一起。

在深度學習的研究中,一些人重點關心去尋找一個優秀的激活函數。一個優秀的激活函數可以讓梯度更有效的進行傳播,與此同時它不會增加額外的計算量。在2010年,Nair和Hinton提出了ReLU激活函數充分地解決了梯度消失的問題,這個問題在傳統的tanh和sigmoid激活函數中會經常遇到。隨後,LReLU,PReLU,ReLU6,Scaled Exponential Linear Unit(SELU),Swish,hard-Swish和Mish等等相繼提出,它們也用來解決梯度消失的問題。LReLU和PReLU主要用來解決當輸出小於零的時候,ReLU的梯度爲零的問題。ReLU6和hard-Swish主要爲量化網絡而設計。對於神經網絡的自歸一化,提出SELU激活函數去實現這個目的。需要注意的是Swish和Mish都是連續可導的激活函數。

在基於深度學習的目標檢測中使用的後處理方法是NMS,它可以用來過濾那些預測統一物體、但是效果不好的BBoxes,然後僅僅保留較好的BBoxes。優化NMS和優化目標方程的方法異曲同工。NMS提出的最初的方法並沒有將上下文信息考慮在內,因此Girshick在R-CNN中添加了分類置信度作爲參考,然後根據置信度得分的順序,由高到低執行greedy NMS。對於soft NMS來說,它考慮了這樣一個問題:在greedy NMS使用IoU的時候,目標遮擋可能會造成置信度得分的退化。在soft NMS基礎上,DIoU NMS將重心座標的距離信息添加到Bbox的篩選處理中了。值得一提的是,上面提到的後處理方法中都不直接引用捕獲的圖像特徵,後續的anchor-free方法開發中不再需要後處理。

3 方法

我們工作基本的目標就是在生產系統和優化並行預算中加快神經網絡的速度,而非降低計算量理論指標(BFLOP)。我們提供了兩個實時神經網絡的選擇:

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

(2)VPU 我們使用分組卷積,但是我們不使用Squeeze-and-excitement(SE)模塊,具體包括以下模型:EfficientNet-lite / MixNet / GhostNet / MobileNetV3

3.1 網絡架構的選擇

我們的目標是尋找輸入網絡的分辨率卷積層的個數參數的數量(filter_size^{^{2}}*filters*channel/groups)以及輸出層的個數(filters)之間的最優的平衡。舉例來說,大量的研究表明:在ILSVRC2012(ImageNet)的目標檢測上,CSPResNext50比CSPDarket53的效果更好,但是在MS COCO的目標檢測中,兩個的效果恰好相反。

下一個目標就是選擇額外的模塊去增加感受野以及爲不同檢測器不同的backbone選擇參數聚合的最佳方法。比如:FPN, PAN, ASFF, BiFPN。

在分類任務上最優的模型在檢測上未必就是最優的。和分類任務相比,檢測器需要以下要求:

(1)更好的輸入尺寸(分辨率)- 爲了檢測多個小物體

(2)更多網路層 - 爲了獲得更大的感受野去覆蓋不斷增大的輸入尺寸

(3)更多的參數 - 提高模型的能力從而能夠在一張圖片上檢測到不同尺寸的多個物體。

假設來說,我們可以認爲具有更大感受野(有大量的3*3的卷積層)和具有大量參數的模型應當作爲檢測器的backbone。表格1展示了CSPResNetXt50, CSPDarkent53以及EfficientNet B3的相關信息。CSPResNetXt50僅僅只有16個3*3的卷積層,一個425*425的感受野和20.6M個參數,然而CSPDarkent53有29個3*3的卷積層,725*725的感受野和27.6M個參數。從理論證明和大量的實驗表明在這兩個模型中,CSPDarkent53是作爲檢測器的backbone最優的選擇

        不同尺寸的感受野的影響總結如下:

(1)等於目標物體的大小時:能夠看到整個物體

(2)等於網絡的尺寸:能夠看到目標物體周圍的上下文信息

(3)大於網絡的尺寸:增加圖像點和最終激活之間連接的數量

我們將SPP模塊添加到CSPDarknet53中,因爲它極大提高了感受野,能夠分離出最重要的上下文特徵而且沒有降低網絡運行的速度。我們使用PANet作爲不同檢測器不同backbone訓練階段聚集參數的方法,而非YOLOv3的FPN模塊。

最後,我們選擇CSPDarknet53作爲backbone, SPP作爲附加的模塊,PANet 作爲neck,使用YOLOv3作爲YOLOv4架構的head。

未來,我們計劃擴展檢測器的Bag of freebies,它們在理論上可以解決某些問題並且能夠提高檢測器的精度,後續會以實驗的形式探究每個算法對檢測器的影響。

我們沒有使用Cross-GPU Batch Normalization(CGBN 或者 SyncBN) 或者昂貴的定製設備。這能夠使得任何人在一個GPU上就可以得到最先進的結果,比如在GTX 1080Ti或者RTX 2080Ti。

3.2 BoF 和 BoS的選擇

爲了提高目標檢測的訓練,CNN通常使用下面一些技巧:

對於訓練激活函數,因爲PReLU和SELU難以訓練,並且RELU6是專門爲量化網絡設計的,我們因此不考慮這這三個激活函數。在正則化方法中,提出DropBlok的學者將其算法和其他算法進行了比較,然後DropBolck效果更好。因此我們毫不猶豫的選擇DropBlock作爲我們的正則化方法。在歸一化方法的選擇中,因爲我們關注在一塊GPU上的訓練策略,因此我們不考慮syncBN。

3.3 額外的改進

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

(1)我們提出了數據增廣的新的方法:Mosaic和Self-Adversarial Training(SAT)

(2)在應用遺傳算法去選擇最優的超參數

(3)我們改進了一些現有的算法,讓我們的設計更適合高效的訓練和檢測 - 改進SAM, 改進PAN以及Cross mini-Batch Normalization(CmBN)

Mosaic是一種新型的數據增廣的算法,它混合了四張訓練圖片。因此有四種不同的上下文進行融合,然而CutMix僅僅將兩張圖片進行融合。此外,batch normalization在每個網絡層中計算四張不同圖片的激活統計。這極大減少了一個大的mini-batch尺寸的需求。

自適應對抗訓練(SAT)也表示了一個新的數據增廣的技巧,它在前後兩階段上進行操作。在第一階段,神經網絡代替原始的圖片而非網絡的權重。用這種方式,神經網絡自己進行對抗訓練,代替原始的圖片去創建圖片中此處沒有期望物體的描述。在第二階段,神經網絡使用常規的方法進行訓練,在修改之後的圖片上進檢測物體。

正如圖4中顯示,CmBN(Cross mini-Batch Normalization)代表CBN改進的版本。它只收集了一個批次中的mini-batches之間的統計數據。

我們將SAM的spatial-wise注意力變成了point-wise注意力機制,然後將PAN中的shortcut連接變成了concatenation連接,正如圖5和圖6所表示的那樣。

3.4 YOLOv4

在這個部分,我們會詳細介紹YOLOv4的細節:

YOLOv4網絡架構的細節

網絡組成

Backbone

Neck

Head

採用模塊

CSPDarknet53

SPP, PAN

YOLOv3

BoF

CutMix and Mosaic data augmentation

DropBlock regularization

Class label smoothing

 

CIoU-loss

CmBN

DropBlock regularization

Mosaic data augmentation

Self-Adversarial Training

Eliminate grid sensitivity

Using multiple anchors for a single ground truth

Cosine annealing scheduler

Optimal hyperparameters

Random training shapes

BoS

Mish activation

Cross-stage partial connections(CSP)

Multi-input weighted residual connections (MiWRC)

 

Mish activation

SPP-block

SAM-block

PAN path-aggregation block

DIoU-NMS

模塊作用

在ImageNet上進行預訓練

融合不同位置上的特徵圖

進行預測

4 實驗

我們測試了不同訓練提升技巧在ImageNet(ILSVRC2012 val)數據集上的精度影響,然後又驗證了檢測器在MS COCO(test-val 2017)數據集的準確率。

4.1 實驗參數配置

在ImageNet圖像分類實驗中,默認的超參數如下:訓練步長爲8,000,000;batch size和mini-batch size分別爲128和32;polynominal decay learning rate scheduling strategy初始的學習率爲0.1;warm-up步長爲1000;momentum和weight decay分別設置爲0.9和0.005。所有的BoS實驗使用相同的、默認的超參數,在BoF實驗中,我們增加了一半的訓練步長。在BoF實驗中,我們驗證了MixUp, CutMix, Mosaic, Bluring數據增加一節label smoothing regularization方法。在BoS實驗中,我們比較了LReLU,Swish和Mish激活函數的影響。所有的實驗都在1080Ti或者2080Ti GPU上進行訓練。

在MS COCO目標檢測實驗中,默認的超參數如下:訓練步長爲500,500;the step decay learning rate scheduling strategy初始化學習率爲0.01在步長爲400,000和450,000的時候乘以0.1;momentum和weight decay分別設置爲0.9和0.0005。所有的架構在一塊GPU進行多尺度訓練,它的batch size爲64,然而它的mini-batch爲8還是4取決於網絡架構和GPU的內存限制。除了對尋找最優的超參數使用遺傳算法之外,其他所有的實驗都使用默認的設置。遺傳算法和GIoU使用YOLOv3-SPP進行訓練,並且爲5k個min-val進行300個epochs。對我們採用搜索的學習率爲0.00261,momentum爲0.949,IoU閾值爲設置爲0.213,遺傳算法實驗的損失標準化爲0.07。我們還驗證了大量的BoF算法,包括grid sensitivity elimination, mosaic數據增廣,IoU閾值化,遺傳算法,class label smoothing, cross mini-batch normalization,self-adversarial training,cosine anneling scheduler, dynamic mini-batch size, DropBlock, Optimized Anchors, 不同的IoU損失函數。我們也在不同BoS算法上進行了實驗,包括Mish,SPP,SAM,RFB,BiFBN以及Gaussiian YOLO。所有的實驗我們僅僅使用一個GPU進行訓練,因此比如syncBN的優化多個GPU的技巧我們並沒有使用。

4.2 不同算法在分類器訓練上的影響

首先,我們研究了不同算法在分類器訓練上的影響;具體來說,Class label smoothing的影響,不同數據增廣技巧,bilateral blurring,MixUp, CutMix和Mosaic的印象在圖7中顯示,以及不同激活函數的影響,比如Leaky-ReLU(默認的),Swish和Mish。

在表2中所示,在我們的實驗中,通過引入一些算法,分類器的準確率得到了提升,這些算法包括:CutMix和Mosaic數據增廣,Class label smoothing和Mish激活函數。結果,我們的用於分類器訓練的BoF-backbone(Bag of Freebies)包括:Cutmix 和Mosaic數據增廣算法以及Class labelsmoothing。正如表2和表3所示,我們將Mish激活函數作爲補充的選項。

4.3  不同算法在檢測器訓練上的影響

進一步的研究關注不同Bag-of-Freebies(BoF-detector)在檢測器訓練準確度的影響,正如表4所示。通過研究能夠提高檢測器準確度的算法,我們極大地擴展了BoF的算法選項,而且並沒有影響FPS:

  • S:消除柵格的敏感度   這個方程在YOLOv3中用於評估目標物體的座標,自重cx和cy通常是整數,因此,當bx的值非常接近cx或者cx+1的時候,tx的絕對值會非常大。我們通過給sigmoid函數乘以一個大於1的因子來解決這個問題,因此,這樣就消除了柵格對不可檢測物體的影響。
  • M:Mosaic數據增廣 - 在訓練過程中,使用四張圖片而非一張進行增廣處理
  • IT:IoU閾值 - 爲一個ground truth的IoU使用多個anchors,ground truth IoU(truth, anchor) > IoU 閾值
  • GA:遺傳算法 - 在前10%的訓練時間內使用遺傳算法選擇最優的超參數
  • LS:Class label smoothing - 爲sigmoid激活函數使用class label smoothing。
  • CBN:CmBN - 在整個批次中通過使用Cross mini-Batch Normalization收集統計數據,而非在單獨的mini-batch中收集統計數據。
  • CA:Cosine annealing scheduler - 在sinusoid訓練中改變學習率
  • DM:動態的mini-batch尺寸 - 在低分辨率的訓練過程中,通過隨機訓練形狀自動的改提高mini-batch的尺寸。
  • OA: 優化Anchors - 使用優化的anchors進行訓練,網絡的分辨率爲512*512
  • GIoU, CIoU, DIoU, MSE - 爲邊界框迴歸使用不同的損失函數。

下一步的研究關心在檢測器訓練準確度上,不同Bag-of-Specials(BoS-detector)的影響,包括PAN, RFB, SAM, Gaussian YOLO(G),以及ASFF,正如表5所示。在我們的實驗中,當使用SPP, PAN和SAM的時候,檢測器得到了最好的性能。

4.4 不同backbones和預訓練權重在檢測器訓練中的影響

下一步我們研究不同backbones模型在檢測器準確率上的影響,正如表6所示。我們注意到擁有最佳分類準確率的模型,檢測器的準確度未必是最佳的。

首先,儘管使用不同算法訓練得到的CSPResNeXt-50模型的分類精度比CSPDarknet53模型的要高,但是CSPDarknet53模型的檢測精度更高。

再者,CSPResNeXt-50分類器訓練使用BoF和Mish提高了它的分類準確率,但是檢測器訓練使用的預訓練權重的進一步使用減少了檢測器的精度。但是,CSPDarknet53分類器訓練使用BoF和Mish提高了費雷器和檢測器的準確率,它使用分類器預訓練權重。這表示CSPDarknet53比CSPResNeXt-50更適合作爲檢測器。

我們觀察到,由於各種改進,CSPDarknet53模型顯示出了更大的提高的檢測器精度的能力

4.5 不同mini-batch尺寸在檢測器訓練上的影響

最後,我們分析了不同mini-batch尺寸的訓練的模型的結果,並且結果在表7中顯示出來。從表7中我們發現在添加了BoF和BoS訓練策略之後,mini-batch尺寸幾乎對檢測器的性能沒有影響。結果顯示在引入了BoF和BoS之後,就不需要使用昂貴的GPUs進行訓練。換句話說,任何人可以僅僅使用一個GPU去訓練一個優秀的檢測器。

5 結果

使用最先進的目標檢測器得到的對比結果在圖8中顯示(具體請看原文)。我們的YOLOv4坐落在帕累托最優曲線上,而且在精度和速度上都優於目前最快的和最準確的檢測器。

6 結論

我們提出了一個最先進的目標檢測器,它比所有檢測器都要快而且更準確。這個檢測器可以僅在一塊8-16GB的GPU上進行訓練,這使得它可以廣泛的使用。One-stage的anchor-based的檢測器的原始概念證明是可行的。我們已經驗證了大量的特徵,並且其用於提高分類器和檢測器的精度。這些算法可以作爲未來研究和發展的最佳實踐。

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