重磅更新!YoloV4最新论文与源码!权重!结构!翻译!
今年初 YOLO 之父Joseph Redmon宣布推出CV界,引起軒然大波,大家紛紛猜測YOLO是否不會再出v4版,退出歷史舞臺。
今天,YOLOv4重磅發布,作者為俄羅斯開發者 Alexey Bochkovskiy 和兩位中國臺灣開發者 Chien-Yao Wang、Hong-Yuan Mark Liao。
了解:https://mp.weixin.qq.com/s/tjz9Kz7Of8sCnXg0qxNGwQ
獻上原論文和源碼:
原論文:https://pan.baidu.com/s/1_J17pIkPl7KwcR5Sr5HP-w
提取碼:acdn
論文源碼:
?GitHub:https://github.com/AlexeyAB/darknet
?百度云:https://pan.baidu.com/s/1hEB0JS48Ax85Gnd6IL3new
提取碼:rk07
權重:https://pan.baidu.com/s/1xB0zUa0zM-4LXq8u5KnQSw
提取碼:9mp9
結構:
大神畫的:https://www.cnblogs.com/pprp/p/12771430.html
自我評價:換了基礎結構、增加了SPP-Net提出的金字塔池化、檢測時將原有的上下文思想換為上中下文思想。其他的改進太小了。總的來說,創新點不明顯,知識點總結/梳理的很好,可以當做學習深度學習部分知識的目標。
翻譯:
摘要:
有大量的特征被認為可以提高卷積神經網絡(CNN)的精度。需要在大型數據集上對這些特征的組合進行實際測試,并對結果進行理論證明。某些特性對特定的模型具有決定性的作用,對于某些特定的問題僅適用于小規模數據集;而某些特性(如批處理規范化和剩余連接)適用于大多數模型、任務和數據集。我們假設這些通用特征包括加權殘差連接(WRC)、跨階段部分連接(CSP)、跨小批量規范化(CmBN)、自對抗訓練(SAT)和Mish激活函數。我們使用以下新功能:WRC、CSP、CmBN、SAT、Mish激活、Mosaic數據增強、CmBN、DropBlock正則化和CIoU_loss,并將其中一些功能結合起來,以達到最新的結果:43.5%AP(65.7%AP50)用于MS COCO數據集,在Tesla V100上以65 FPS的實時速度。源代碼位于https://github.com/AlexeyAB/darknet
1.引言:
大多數基于CNN的目標檢測器大多只適用于推薦系統。例如,通過城市攝像機搜索免費停車位是由低精度模型執行的,而汽車碰撞警告則與高精度模型相關。通過提高實時目標檢測的準確性,不僅可以將其用于提示生成推薦系統,還可以用于獨立的流程管理并能減少人工輸入。常規圖形處理單元(GPU)上的實時對象檢測器操作允許它們以可承受的價格進行大量使用。最精確的現代神經網絡不具備實時性,需要大量的gpu進行小批量的訓練。我們通過創建一個CNN來解決這些問題,該CNN在常規GPU上實時運行,并且訓練僅需要一個常規GPU。
圖1:提出的YOLOv4和其他最新物體探測器的比較。YOLOv4的運行速度比EfficientDet快兩倍,性能相當。使YOLOv3的AP和FPS分別提高10%和12%。
本文的主要目的是設計一種快速的目標探測器在生產系統中的工作速度,并對并行計算進行優化,而不是對低計算體積理論指標(BFLOP)進行優化。我們希望所設計的對象可以很容易地訓練和使用。例如,任何使用傳統GPU進行訓練和測試的人都可以獲得實時、高質量和令人信服的目標檢測結果,如圖1所示的YOLOv4結果。我們的貢獻總結如下:
1.我們開發了一個高效而強大的目標檢測模型。它使得每個人都可以使用1080ti或2080ti GPU來訓練一個超快速和精確的目標探測器。
2.我們在探測器訓練期間驗證了SOTA大禮包(Bag-of Freebies 不增加推理成本的trick)和特價袋 (Bag-of-Specials 增加推理成本的trick)檢測方法的影響
3.我們修改了SOTA方法,使它們更有效且更適合單個GPU訓練,包括CBN [89],PAN [49],SAM [8]
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]。也有可能使二級對象檢測器成為無錨對象(anchor-free)檢測器,例如RepPoints [87]。對于一級目標檢測器,最具代表性的模型是YOLO [61、62、63],SSD [50]和RetinaNet [45]。近年來,開發了無錨的一級物體檢測器。這種檢測器是CenterNet [13],CornerNet [37、38],FCOS [78]等。近年來開發的對象檢測器通常在骨架和頭部之間插入一些層,這些層通常用于收集特征圖。從不同的階段。我們可以稱其為對象檢測器的頸部。通常,頸部由幾個自下而上的路徑和幾個自上而下的路徑組成。配備此機制的網絡包括特征金字塔(Feature Pyramid Network(FPN))[44], Path Aggregation Network (PAN)[49],BiFPN [77]和NAS-FPN [17]。
除上述模型外,一些研究人員將重點放在直接構建用于對象檢測的新主干(DetNet [43],DetNAS [7])或新的整個模型(SpineNet [12],HitDetector [20])上。
綜上所述,普通的目標檢測器由以下幾個部分組成:
輸入:圖像、Patches、圖像金字塔
骨干網絡: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:
?密集預測(一階段):
(1)RPN[64]、SSD[50]、YOLO[61]、RetinaNet[45](基于錨)
(2)CornerNet[37]、CenterNet[13]、MatrixNet[60]、FCOS[78](無錨)
?稀疏預測(兩階段):
(1)更快的R-CNN[64]、R-FCN[9]、掩碼RCNN[23](基于錨)
(2)RepPoints[87](無錨)
2.2Bag of freebies
通常,常規的物體檢測器是離線訓練的。因此,研究人員總是喜歡利用這一優勢,并開發出更好的訓練方法,以使物體檢測器獲得更好的精度而又不增加推理成本。我們稱這些方法為“bag of freebies”,即改變訓練策略或僅增加訓練成本。數據增強是對象檢測方法經常采用的并符合bag of freebies定義的數據。數據增強的目的是增加輸入圖像的可變性,從而使設計的物體檢測模型對從不同環境獲得的圖像具有更高的魯棒性。例如,光度畸變和幾何畸變是兩種常用的數據增強方法,它們無疑有益于物體檢測任務。在處理光度失真時,我們會調整圖像的亮度,對比度,色相,飽和度和噪點。對于幾何變形,我們添加了隨機縮放,裁剪,翻轉和旋轉等方式。
上述數據增強方法都是逐像素調整,并且保留了調整區域中的所有原始像素信息。此外,一些從事數據增強的研究者把重點放在模擬物體遮擋問題上。在圖像分類和目標檢測方面取得了良好的效果。例如,隨機擦除[100]和CutOut[11]可以隨機選擇圖像中的矩形區域,并填充0的隨機值或互補值。至于hide-and-seek(69)和grid mask(6),它們隨機或均勻地選擇圖像中的多個矩形區域,并將它們替換為全零。如果將類似的概念應用于特征地圖,則有DropOut[71]、DropConnect[80]和DropBlock[16]方法。此外,一些研究者還提出了利用多幅圖像進行數據增強的方法。例如,MixUp[92]使用兩個圖像以不同的系數比率進行乘法和疊加,然后使用這些疊加比率調整標簽。對于CutMix[91],它是將裁剪后的圖像覆蓋到其他圖像的矩形區域,并根據混合區域的大小調整標簽。除了上述方法外,style transfer GAN[15]還用于數據增強,這樣的使用可以有效地減少CNN學習到的紋理偏差。
與上面提出的各種方法不同,專門設計了一些其他bag of freebies來解決數據集語義分布中可能存在的偏差問題。在處理語義分布偏差問題時,一個非常重要的問題是不同類之間存在數據不平衡的問題,通常可以通過以下方法解決此問題:否定示例挖掘[72]或在線示例在線挖掘[67] ]兩級物體檢測器。但是示例挖掘方法不適用于第一級目標檢測器,因為該檢測器屬于密集預測體系結構。因此,林等[45]提出了焦點損失來解決各個類別之間的數據不平衡問題。另一個非常重要的問題是,很難使用one-hot來表達不同類別的相關性之間的關系。執行標記時經常使用此表示方案,在[73]中提出的標簽平滑將硬標簽轉換為軟標簽以進行訓練,這可以使模型更健壯。為了獲得更好的軟標簽,Islam等 [33]介紹了知識蒸餾的概念來設計標簽細化網絡。
最后bag of freebies是邊界框(BBox)回歸的目標函數。傳統的物體檢測器通常使用均方誤差(MSE)直接對BBox的中心點坐標以及高度和寬度執行回歸,即{xcenter,ycenter,w,h}或左上角和右下角點,即{xtop_left,ytop_left,xbottom_right,ybottom_right }。對于anchor-based的方法,將估計相應的偏移量,例如{xcenter偏移量,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回歸問題上實現更好的收斂速度和準確性。
2.3. Bag of specials
對于那些只增加少量推理代價卻能顯著提高目標檢測精度的插件模塊和后處理方法,我們稱之為“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內核大小,dilated ratio等于k,步幅等于在膨脹卷積運算中為1。RFB模塊將使用k×k個核的膨脹卷積,膨脹比等于k,步幅等于1,以獲得比ASPP更全面的空間覆蓋范圍。RFB [47]僅需花費7%的額外推理時間即可將MS COCO上SSD的AP50提高5.7%
物體檢測中經常使用的注意力模塊主要分為channel-wise注意和point-wise注意,這兩種注意模型的代表是Squeeze-and-Excitation(SE)[29]和Spatial Attention Module (SAM) [85]。盡管SE模塊可以將ImageNet圖像分類任務中的ResNet50的功能提高1%至top-1精度,但其代價僅是將計算工作量增加2%,但在GPU上通常會增加大約10%的推理時間,因此更適合在移動設備中使用。但是對于SAM,它只需要0.1%的額外費用,就可以在ImageNet圖像分類任務上將ResNet50-SE的top-1準確性提高0.5%。最好的是,它根本不影響GPU上的推理速度。
在特征集成方面,早期的實踐是使用t跳躍連接[51]或hyper-column [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。對于soft NMS [1],考慮了物體的遮擋可能會導致貪婪的NMS的IoU評分置信度降低的問題。DIoU NMS [99]開發人員的思維方式是在softNMS的基礎上將中心點距離的信息添加到BBox篩選過程中。值得一提的是,由于上述后處理方法均未直接涉及捕獲的圖像特征,因此在隨后的anchor-free方法開發中不再需要后處理。
表1:用于圖像分類的神經網絡參數。
3.方法
其基本目標是神經網絡在生產系統中的快速運行和并行計算的優化,而不是使用低計算量理論指標(BFLOP)。我們提出了兩種實時神經網絡方案:
對于GPU,我們在卷積層中使用少量的群(1-8):CSPResNeXt50/CSPDarknet53
對于VPU-我們使用分組卷積,但不要使用Squeeze-and-excitement (SE)塊-具體來說,它包括以下模型:EfficientNet-lite / MixNet [76] / GhostNet [21] / MobileNetV3
3.1Selection of architecture
我們的**目標是在輸入網絡分辨率,卷積層數,參數數量(filter size2 * filters * channel / groups)和層輸出(過濾器)的數量之間找到最佳平衡。**例如,我們的大量研究表明,就ILSVRC2012(ImageNet)數據集上的對象分類而言,CSPResNext50與CSPDarknet53相比要好得多[10]。但是,相反,在檢測MS COCO數據集上的對象方面,CSPDarknet53比CSPResNext50更好。
下一個目標是針對不同的檢測器級別從不同的主干級別中選擇其他塊來增加接收場和參數聚集的最佳方法: FPN,PAN,ASFF,BiFPN。
對于分類最佳的參考模型對于檢測器并非總是最佳的。與分類器相比,檢測器需要滿足以下條件:
更高的輸入網絡規模(分辨率)-用于檢測多個小型物體
更高的層數-更高的感受范圍,以覆蓋輸入網絡不斷擴大的規模
更多參數–具有更大的模型容量,可在單個圖像中檢測不同大小的多個對象
假設,我們可以假設一個感受野較大的模型(卷積層數為3×3)和參數較多的模型作為主干。表1顯示了CSPResNeXt50、CSPDarknet53和EfficientNet 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 path-aggregation neck和YOLOv3(基于錨的)頭部作為YOLOv4的體系結構。(重點,網絡結構)
未來,我們計劃大幅擴展用于探測器的Bag of Freebies(BoF)的內容,從理論上講,它可以解決一些問題并提高探測器的準確性,并以實驗方式依次檢查每個功能的影響。
我們不使用跨GPU批量標準化(CGBN或SyncBN)或昂貴的專用設備。這使任何人都可以在常規圖形處理器上重現我們的最新技術成果,例如 GTX 1080Ti或RTX 2080Ti。
3.2. Selection of BoF and BoS
為了改進目標檢測訓練,CNN通常使用以下方法:
激活:ReLU、leaky ReLU、parametric ReLU、ReLU6、SELU、Swish或Mish
邊界框回歸損失:MSE、IoU、GIoU、CIoU、DIoU
數據增強:剪切、混合、剪切
正則化方法:DropOut、DropPath[36]、space DropOut[79]或DropBlock
空間DropOut [79]或DropBlock
通過均值和方差對網絡激活進行歸一化:批歸一化(BN)[32],Cross-GPU批歸一化(CGBN或SyncBN)[93],過濾器響應歸一化(FRN)[70]或交叉迭代批歸一化(CBN)[89]
跳過連接:殘留連接,加權殘留連接,多輸入加權殘留連接或跨階段局部連接(CSP)
至于訓練激活函數,由于PReLU和SELU更難訓練,并且ReLU6是專門為量化網絡設計的,因此我們將上述激活函數從候選列表中移除。在重新量化方法中,發表DropBlock的人詳細比較了他們的方法和其他方法,他們的正則化方法贏得了很多。因此,我們毫不猶豫地選擇DropBlock作為正則化方法。至于規范化方法的選擇,由于我們關注的是一種只使用一個GPU的訓練策略,所以不考慮syncBN。
圖3:Mosaic代表了一種新的數據擴充方法。
3.3. 其他改進
為了使所設計的檢測器更適合單GPU的訓練,我們做了如下的額外設計和改進:
我們介紹了一種新的數據增強Mosaic, and Self-Adversarial Training (SAT)方法
我們在應用遺傳算法的同時選擇了最佳超參數
我們修改了一些現有方法,使我們的設計適合進行有效的訓練和檢測-改進的SAM,改進的PAN和Cross mini-Batch Normalization(CmBN)
Mosaic表示一種新的數據增強方法,該方法混合了4個訓練圖像。因此,有4種不同的上下文混合,而CutMix僅混合2個輸入圖像。這樣可以檢測正常上下文之外的對象。此外,批量歸一化從每層上的4張不同圖像計算激活統計信息。這大大減少了對大批量生產的需求。
Self-Adversarial Training (SAT)也代表了一項新的數據增強技術,該技術可在2個向前和向后的階段進行操作。在第一階段,神經網絡會更改原始圖像,而不是網絡權重。以這種方式,神經網絡對其自身執行對抗攻擊,從而改變原始圖像以產生對圖像上沒有期望物體的欺騙。在第二階段,訓練神經網絡以正常方式檢測此修改圖像上的對象。
CmBN表示CBN修改版本,如圖4所示,定義為交叉微型批處理規范化(CmBN)。這僅收集單個批次中的迷你批次之間的統計信息。
我們將SAM從空間注意改為點注意,并將PAN的快捷連接替換為串聯,分別如圖5和圖6所示。
圖4:跨小批量標準化。
圖5:修改過的SAM。
圖6:改性平底鍋。
3.4. YOLOv4
在本節中,我們將詳細介紹YOLOv4。
YOLOv4包括:
主干網:CSPDarknet53[81]
頸部:SPP[25],PAN[49]
頭部:YOLOv3[63]
YOLO v4使用:
Bag of Freebies (BoF) for backbone:CutMix和Mosaic數據增強,DropBlock正則化,類標簽平滑
Bag of Specials (BoS) for backbone:Mish activation, Cross-stage partial connections (CSP), Multiinput weighted residual connections (MiWRC)
Bag of Freebies (BoF) for detector: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 [52], Optimal hyperparameters, Random training shapes
Bag of Specials (BoS) for detector::Mish activation, SPP-block, SAM-block, PAN path-aggregation block, DIoU-NMS
4.實驗
在ImageNet(ILSVRC 2012 val)數據集上測試了不同訓練改進技術對分類器精度的影響,然后在MS-COCO(test dev 2017)數據集上測試了檢測器的精度。
4.1實驗設置
在ImageNet圖像分類實驗中,默認的超參數如下:訓練步驟為8,000,000;批量大小和最小批量大小分別為128和32;采用多項式衰減學習率調度策略,初始學習率為0.1。預熱步驟(warm-up steps)為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;采用步階衰減學習率調度策略,初始學習率為0.01,并分別在400,000步和450,000步處乘以系數0.1。動量和權重衰減分別設置為0.9和0.0005。所有架構都使用單個GPU以64的批量大小執行多尺度訓練,而最小批量大小是8或4,這取決于架構和GPU內存限制。除了使用遺傳算法進行超參數搜索實驗外,所有其他實驗均使用默認設置。遺傳算法使用YOLOv3-SPP訓練GIoU損失,并搜索300個紀元的最小值5k集。對于遺傳算法實驗,我們采用搜索學習率0.00261,動量0.949,IoU閾值來分配ground truth 0.213,并使用損失歸一化器0.07。我們已經驗證了大量BoF,包括消除網格敏感度,鑲嵌數據增強,IoU閾值,遺傳算法,類標簽平滑,交叉小批量標準化,自對抗訓練,余弦退火調度程序,動態小批量大小,DropBlock,優化錨,不同類型的IoU損失。我們還對各種BoS進行了實驗,包括Mish,SPP,SAM,RFB,BiFPN和高斯YOLO [8]。對于所有實驗,我們僅使用一個GPU進行訓練,因此未使用可優化多個GPU的諸如syncBN之類的技術。
圖7:各種數據擴充方法。
表2:BoF和Mish對CSPRESEXT-50分級機精度的影響。
表3:BoF和Mish對CSPDarknet-53分級機精度的影響。
4.2不同特征對分類器訓練的影響
首先,我們研究不同特征對分類器訓練的影響;具體來說,如圖7所示,類別標簽平滑化的影響,不同數據增強技術的影響,雙邊模糊,MixUp,CutMix和Mosaic的影響,以及Leaky-ReLU(默認情況下),Swish等不同激活的影響和Mish。
在我們的實驗中,如表2所示,通過引入以下功能提高了分類器的準確性:**CutMix和Mosaic數據增強,類標簽平滑和Mish激活。**因此,我們用于分類器訓練的BoFbackbone(Bag of Freebies))包括以下內容:CutMix和Mosaic數據增強和類標簽平滑。此外,我們使用Mish激活作為補充選項,如表2和表3所示。
表4:免費包消融研究。(CSPResNeXt50面板SPP,512x512)。
4.3不同特征對探測器訓練的影響
進一步的研究涉及到不同的Bag-of Freebies(BoF-detector)對探測器訓練精度的影響,如表4所示。我們通過研究在不影響FPS的情況下提高探測器精度的各種功能來顯著擴展BoF列表:
S: 消除網格敏感度,公式bx =σ(tx)+ cx,其中cx和cy始終是整數,在YOLOv3中用于評估對象坐標,因此,對于接近c x或cx + 1值的bx值,需要非常高的tx絕對值。基本事實我們通過將sigmoid乘以超過1.0的因數來解決此問題,從而消除了無法檢測到物體的網格的影響。
M:鑲嵌數據擴充-在訓練過程中使用4幅圖像而非單幅圖像
IT:IoU閾值-對單個ground truth IoU(真相,錨點)> IoU閾值使用多個錨點
GA:遺傳算法-使用遺傳算法在網絡訓練的前10%的時間段內選擇最佳超參數?
LS:類標簽平滑-使用類標簽平滑進行S型激活
CBN:CmBN-使用交叉mini-batch收集整個批次內的統計信息,而不是在單個mini-batch內收集統計信息
CA:余弦退火調度程序-在正弦曲線訓練期間更改學習率
DM:動態微型批次尺寸-在小分辨率下自動增加微型批次尺寸使用隨機訓練形狀進行訓練
OA:優化的錨點-使用優化的錨點以512x512網絡分辨率進行訓練
GIoU,CIoU,DIoU,MSE-使用不同的損失算法進行有界框回歸
進一步的研究涉及不同的Bagof-Specials(BoS-探測器)對探測器訓練精度的影響,包括PAN,RFB,SAM Gaussian YOLO 和ASFF,如表5所示。在我們的實驗中,探測器獲得了使用SPP,PAN和SAM時的最佳性能。
表5:特殊包的消融研究。(尺寸512x512)。
4.4不同骨干和預訓練重量對探測器訓練的影響
進一步,我們研究了不同主干模型對檢測器精度的影響,如表6所示。我們注意到,具有最佳分類精度的模型在檢測器精度方面并不總是最佳的。
首先,盡管與CSPDarknet53模型相比,經過不同功能訓練的CSPResNeXt50模型的分類準確性更高,但是CSPDarknet53模型在對象檢測方面顯示出更高的準確性。
其次,將BoF和Mish用于CSPResNeXt50分類器訓練可提高其分類精度,但是將這些預訓練權重進一步用于檢測器訓練會降低檢測器準確性。但是,對CSPDarknet53分類器訓練使用BoF和Mish可以提高分類器和使用該分類器預訓練加權的檢測器的準確性。
最終結果是,骨干CSPDarknet53比CSPResNeXt50更適合于檢測器。我們觀察到,由于各種改進,CSPDarknet53模型顯示出提高檢測器精度的更大能力。
表6:使用不同的分類器預訓練權重進行檢測器訓練(所有其他訓練參數在所有模型中都相似)。
4.5不同小批量對檢測器訓練的影響
最后,我們分析了使用不同小批量大小訓練的模型獲得的結果,結果顯示在表7中。從表7中顯示的結果中,我們發現在添加BoF和BoS訓練策略之后,小批量大小對檢測器的性能幾乎沒有影響。該結果表明,在引入BoF和BoS之后,不再需要使用昂貴的GPU進行訓練。換句話說,任何人都只能使用常規的GPU來訓練出色的檢測器。
5.結論
圖8顯示了與其他最先進的目標探測器的比較結果。我們的YOLOv4位于Pareto最優曲線上,在速度和精度方面都優于最快和最精確的檢測器。
由于不同的方法使用不同體系結構的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。
圖8:不同目標探測器的速度和精度比較。(有些文章只對其中一個gpu的FPS進行了說明:Maxwell/Pascal/Volta)
表8:MS COCO數據集上不同目標探測器的速度和精度比較(testdev 2017)。(此處突出顯示FPS 30或更高的實時探測器。我們將結果與batch=1進行比較,而不使用tensorRT。)
表9:MS COCO數據集上不同目標探測器的速度和精度比較(測試開發2017)。(此處突出顯示FPS 30或更高的實時探測器。我們將結果與batch=1進行比較,而不使用tensorRT。)
表10:MS COCO數據集上不同目標探測器的速度和精度比較(測試開發2017)。(此處突出顯示FPS 30或更高的實時探測器。我們將結果與batch=1進行比較,而不使用tensorRT。)
6.總結
我們提供最先進的探測器,比所有可用的替代探測器更快(FPS)和更精確(MS COCO AP50…95和AP50)。所述檢測器可在8-16gb-VRAM的傳統GPU上訓練和使用,這使得其廣泛應用成為可能。一級錨定探測器的最初概念已經證明了它的可行性。我們已經驗證了大量的特征,并選擇使用這些特征來提高分類器和檢測器的精度。這些特性可以作為今后研究和開發的最佳實踐。
7.感謝
作者希望感謝格倫Jocher提出的馬賽克數據增強、利用遺傳算法選擇超參數以及解決網格敏感性問題的思想https://github.com/ultralytics/yolov3
文獻
?
總結
以上是生活随笔為你收集整理的重磅更新!YoloV4最新论文与源码!权重!结构!翻译!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文了解YOLO-v4目标检测
- 下一篇: Keras搭建YoloV4目标检测平台