YOLOv4團隊開源最新力作!1774fps、COCO最高精度,分別適合高低端GPU的YOLO

本文是YOLOv4的原班人馬(包含CSPNet一作與YOLOv4一作AB大神)在YOLO系列的繼續擴充套件,從影響模型擴充套件的幾個不同因素出發,提出了兩種分別適合於低端GPU和高階GPU的YOLO。
該文所提出的YOLO-large在MSCOCO取得前所未有的精度(已公開的研究成果中最佳),且可以保持實時推理;所提出的YOLO-tiny在RTX 2080Ti顯示卡上結合TensorRT+FP16等技術,可以達到驚人的1774FPS@batch=4.

論文標題:Scaled-YOLOv4:Scaling Cross Stage Partial Network

論文連結:https://arxiv.org/2011.08036

開原始碼:https://github.com/WongKinYiu/ScaledYOLOv4

1
介紹
本文提出一種“網路擴充套件(Network Scaling)”方法,它不僅針對深度、寬度、解析度進行調整,同時調整網路結果,作者將這種方法稱之為Scaled-YOLOv4。
由此得到的YOLOv4-Large取得了SOTA結果:在MS-COCO資料集上取得了55.4%AP(73.3% AP50),推理速度為15fps@Tesla V100;在新增TTA後,該模型達到了55.8%AP(73.2%AP50)。截止目前,在所有公開論文中,YOLOv-Large在COCO資料集上取得最佳指標。
由此得到的YOLOv4-tiny取得了22.0%AP(42.0%AP50),推理速度為443fps@TRX 2080Ti;經由TensorRT加速以及FP16推理,batchsize=4時其推理速度可達1774fps。
本文的主要貢獻包含以下幾點:
  • 設計了一種強有力的“網路擴充套件”方法用於提升小模型的效能,可以同時平衡計算複雜度與記憶體佔用;
  • 設計了一種簡單而有效的策略用於擴充套件大目標檢測器;
  • 分析了模型擴充套件因子之間的相關性並基於最優劃分進行模型擴充套件;
  • 透過實驗證實:FPN structure is inherently a once-for-all structure
  • 基於前述分析設計了兩種高效模型:YOLOv4-tiny與YOLOv4-Large。
2
模型擴充套件

模型擴充套件原則
在這部分內容裡面,我們將討論一下模型擴充套件的一些準則。
從三個方面展開介紹:
(1) 量化因子的分析與設計;
(2) 低端GPU上tiny目標檢測器的量化因子;
(3) 高階GPU上目標檢測器的量化因子設計分析。

模型擴充套件通用原則

When the scale is up/down, the lower/higher the quantitative cost we want to increase/decrease, the better.  ----author
上面給出了模型擴充套件所需要考慮的一些因素。接下來,我們將分析幾種不同的CNN模型(ResNet, ResNeXt, DarkNet)並嘗試理解其相對於輸入大小、層數、通道數等的定量損失。
對於包含k層b個通道的CNN而言,ResNet的計算量為:
ResNeXt的為:
DarkNet的為:

假設用於調整影象大小、層數以及通道數的因子分別為

其調整對應的FLOPs變化見下表,可以看到:它們與FLOPs提升的關係分別是square, linear, square

CSPNet可以應用與不同的CNN架構中,且可以降低引數量與計算量,同時還可以提升精度與降低推理耗時。
下表給出了CSPNet應用到ResNet,ResNeXt與DarkNet時的FLOPs變化,可以看到:新的架構可以極大的降低計算量,ResNet降低23.5%,ResNeXt降低46.7%,DarkNet降低50.0%。
因此CSP-ized是適合模型擴張的最佳模型。

為低端裝置擴充套件Tiny Model

對於低端裝置而言,模型的推理速度不僅受計算量、模型大小影響,更重要的是,外部裝置的硬體資源同樣需要考慮。因此,當進行tiny模型擴充套件時,我們必須考慮頻寬、MACs、DRAM等因素。為將上述因素納入考量範圍,其設計原則需要包含西面幾個原則:
讓計算複雜度少於.
相比大模型,輕量型模型的不同之處在於:引數利用率更高(保採用更少的計算量獲得更高的精度)。
當進行模型擴充套件時,我們期望計算複雜度要儘可能的低。下表給出了兩種可以高效利用引數的模型對比。
對於通用CNN來說,之間的性見上表()。因此,DenseNet的計算複雜度為,OSANet的計算複雜度為
兩者的計算複雜度階段都比ResNet()的更低。在這裡作者選用了OSANet作為tiny模型的選型。
最小化/平衡特徵圖大小
為獲得最佳的推理速度-精度均衡,作者提出了一個新的概念用於在CPSOSANet計算模組之間進行梯度截斷。如果把CSPNet設計思想用到DenseNet或者R二十Net架構中,由於第層的輸出是的整合融合,我們必須把完整的計算模組當做一個整體來看待。由於OSANet的計算模組屬於PlainNet架構的範疇,這就使得CSPNet的任一層都可以得到有效的梯度截斷。
我們採用這個特徵重組b個通道以及計算模組中的kg通道,將其以相同的通道數劃分到兩個分支,見下表。當通道數為時,最佳的劃分方式為均等劃分。事實上,我們還要考慮硬體的頻寬因素,此時的最佳劃分則表示為。該文提出的CSPOSANet可以動態的調整通道分配
卷積後保持相同數量的channels
對於低端裝置的計算複雜度評估,我們還需要考慮功耗,而影響功耗的最大因素當屬MAC(memory access cost)。通常來說,卷積的MAC計算方式如下:
其中

分別表示特徵圖的高、寬輸入與輸出通道數、卷積核尺寸。從上式可以得出:當

時,MAC最小。

最小化卷積輸入/輸出(CIO)
CIO是一個用來評價DRAM的IO狀態的度量準則,下表給出了OSA,CSP的CIO對比。
時,本文所提出的CSPOSANet具有最佳CIO。

為高階GPU擴充套件大模型

由於我們期望提升擴張CNN模型的精度,同時保持實時推理速度,這就要求我們需要從目標檢測器的所有擴充套件因子中尋找最佳組合。
通常而言,我們可以調整目標檢測器的輸入、骨幹網路以及neck的尺度因子,潛在的尺度因子見下表:
影象分類與目標檢測的最大區別在於:前者僅需要對影象中的最大成分進行分類,而後者則需要預測影象中每個目標的位置。
在單階段目標檢測器中,每個位置的特徵向量用於預測類別、目標的大小,而目標大小的預測則依賴於特徵向量的感受野。在CNN中,與感受野最相關的當屬stage,而FPN接面構告訴我們:更高的階段更適合預測大目標。
上表彙總了與感受野相關因素,可以看到:寬度擴充套件不會影響感受野。當輸入影象解析度提升後,為保持感受野不變,那麼就需要提升depth或者stage。
也就是說:depth和stage具有最大的影響。因此,當進行向上擴增時,我們需要在輸入解析度、stage方面進行擴增以滿足實時性,然後再進行depth和width的擴增。
3
Scaled-YOLOv4
接下來,我們將嘗試把YOLOv4擴充套件到不同的GPU(包含低端和高階GPU)。

CSP-ized YOLOv4

YOLOv4是一種針對通用GPU設計的實時目標檢測方案。在這裡,作者對YOLOv4進行重新設計得到YOLOv4-CSP以獲取最佳的速度-精度均衡。
Backbone
在CSPDarknet53的設計中,跨階段的下采樣卷積計算量並未包含在殘差模組中。因此,作者推斷:每個CSPDarknet階段的計算量為。從該推斷出發,CSPDarknet比DarkNet具有更好的計算量優勢(k>1)。
CSPDarkNet53每個階段的殘差數量分別為1-2-8-8-4。
為得到更好的速度-精度均衡,作者將首個CSP階段轉換為原始的DarkNet殘差層。
Neck
更有效的降低引數量,作者將PAN架構引入到YOLOv4中。PAN架構的處理流程見下圖a,它主要集成了來自不同特徵金字塔的特徵。改進後的處理流程見下圖b,它還同時引入了ChannelSplitting機制。這種新的處理方式可以節省40%計算量。
SPP
原始的SPP模組位於Neck中間部分,作者同樣將SPP插入到CSPPAN中間位置,見上圖b。

YOLOv4-tiny

YOLOv4是專為低端GPU而設計的一種架構,其計算模組見下圖。在這裡,作者採用CSPOSANet+PCB架構構成了YOLOv4的骨幹部分。
在計算模組中,

。透過計算,作者推斷得到k=3,其對應的計算單元示意圖見上圖。至於YOLOv4-tiny的通道數資訊,作者延續了YOLOv3-tiny的設計。

YOLOv4-large

YOLOv4-large是專為雲端GPU而設計的一種架構,主要目的在於獲得更好的目標檢測精度。作者基於前述分析設計了一個全尺寸的YOLOv4-P5並擴充套件得到了YOLOv4-P6和YOLOv4-P7。
其對應的網路結構示意圖見下圖:
作者透過實驗發現:YOLOv4-P6(寬度縮放因子1)可以達到30fps的實時處理效能;YOLOv4-P7(寬度縮放因子1.25)可以達到15fps的處理速度。

4
實驗
作者在MSCOCO-2017資料集上驗證了所提Scaled-YOLOv4的效能,作者提到並未採用ImageNet進行預訓練,所有YOLOv4模型均從頭開始訓練。
YOLOv4-tiny的訓練了600epoch;YOLOv4CSP訓練了300epoch;YOLOv4-large先訓練了300epoch,然後採用更強的資料增廣技術訓練了150epoch。其他訓練相關的超參作者採用k-mean與遺傳演算法決定。
在CSP-ized模型上的消融研究
作者首先針對CSP-ized模型進行了消融實驗分析,結果見下表。作者從引數量、計算量、處理流程以及平均精度方面進行了CSP-ization的影響性分析。
作者採用Darknet53作為骨幹網路,選擇FPN+SPP與PAN+SPP作為neck進行消融分析。
作者同時還採用了LeakyReLU與Mish進行對比分析:
從上表可以看到:CSP-ized模型可以極大的降低引數量與計算量達32%,同時帶來效能上的提升;同時還可以看到:CD53s-CFPNSPP-Mish、CD53s-CPANSPP-Leaky與D53-FPNSPP-Leaky相同的推理速度,但具有更高的指標(分別搞1%和1.6%AP),且具有更低的計算量。

在YOLOv4-tiny上的消融研究

接下來,我們將透過實驗來證實:CSPNet+partial的靈活性。
作者將其與CSP-Darknet53進行了對比,結果見下表:
從上表可以看到:所設計的PCB技術可以使模型更具靈活性,因為它可以更具實際需要進行結構調整。同時也證實:線性縮放方式的侷限性。
作者最終選擇COSA-2x2x作為YOLOv4-tiny,因其取得最佳的精度-速度均衡。
目標檢測的Scaled-YOLOv4
上圖給出了本文所提Scaled-YOLOv4與其他SOTA目標檢測方法的對比,可以看到:所提方法在不同約束下均取得了最佳的均衡。比如,YOLOv4-CSP與EfficientDet-D3具有相同的精度,但具有更開的推理速度(1.9倍);YOLOv4-P5與EfficientDet-D5具有相同的精度,推理速度則快2.9倍。
類似現象可見:YOLOv4-P6 vs EfficientDet-D7, YOLOv4-P7 vs EfficientDet-D7x。更重要的是:所有Scaled-YOLOv4均達到了SOTA結果。
與此同時,作者還給出了新增TTA後的YOLOv4-large效能,可以看到分別可以得到1.1%,0.6%與0.4%AP的指標提升。
作者還對比了YOLOv4-tiny與其他tiny目標檢測器的效能對比,見下表。
可以看到:YOLOv4-tiny取得了最佳的效能。
最後,作者在不同的嵌入式GPU上測試了YOLOv4-tiny的效能,見下圖。可以看到:無論哪種硬體平臺下,YOLOv4-tiny均可以達到實時性。
經過TensorRT FP16最佳化後的YOLOv40tiny最高可以達到1774fps的推理速度。

最後附上YOLO系列相關論文:

1. YOLOv1: https://arxiv.org/abs/1506.02640
2. YOLO 9000:https://arxiv.org/abs/1612.08242
3. YOLO v3: https://arxiv.org/abs/1804.02767
4. YOLO-Lite: https://arxiv.org/abs/1811.05588
5. Gaussian YOLOv3: https://arxiv.org/1904.04620
6. REQ-YOLO: https://arxiv.org/abs/1909.13396
7. xYOLO: https://arxiv.org/abs/1910.03159
8. YOLO-Nano: https://arxiv.org/abs/1910.01271
9. CSPNet:https://arxiv.org/abs/1911.11929
10. YOLO v4: https://arxiv.org/abs/2004.10934
11. Poly-YOLO: https://arxiv.org/abs/2005.13243
12. PP-YOLO: https://arxiv.org/abs/2007.12099

點選閱讀原文,直達EMNLP小組!

相關文章