Scaled-YOLOv4: Scaling Cross Stage Partial Network
鏈接:https://arxiv.org/abs/2011.08036
代碼: https://github.com/WongKinYiu/ScaledYOLOv4
本文的貢獻(xiàn):
(1)針對(duì)小模型設(shè)計(jì)了一種強(qiáng)大的模型縮放方法,該方法可以系統(tǒng)地平衡淺層CNN的計(jì)算成本和存儲(chǔ)帶寬;
(2) 設(shè)計(jì)一個(gè)簡單但有效的策略來縮放大型目標(biāo)探測器;
(3) 分析所有模型縮放因子之間的關(guān)系,然后根據(jù)最有利的組劃分進(jìn)行模型縮放;
(4) 實(shí)驗(yàn)已經(jīng)證實(shí),FPN結(jié)構(gòu)本質(zhì)上是一次性結(jié)構(gòu);
(5)利用上述方法開發(fā)了YOLOv4 tiny和YOLO4v4 large。
一、文章簡介
在設(shè)計(jì)有效的模型縮放方法時(shí),我們的主要原則是,當(dāng)縮放比例上升/下降時(shí),我們想要增加/減少的量化成本越低/越高越好。我們將展示和分析各種通用CNN模型,并試圖了解它們在
(1)圖像大小、(2)層數(shù)和(3)通道數(shù)變化時(shí)的量化成本。我們選擇的CNN是ResNet、ResNext和Darknet。對(duì)于具有b個(gè)通道的k層CNN:
ResNet層的計(jì)算為k?[conv(1×1,b/4)→ conv(3×3,b/4)→ conv(1×1,b)]
ResNext層的計(jì)算為k?[conv(1×1,b/2)→ gconv(3×3/32,b/2)→ conv(1×1,b)]
Darknet層的計(jì)算量為k?[conv(1×1,b/2)→ conv(3×3,b)]
用于調(diào)整圖像大小、層數(shù)和通道數(shù)的比例因子分別為α、β和γ。當(dāng)這些比例因子發(fā)生變化時(shí),FLOPs的相應(yīng)變化總結(jié)在下表:
縮放尺寸、深度和寬度會(huì)導(dǎo)致計(jì)算成本增加。它們分別顯示平方、線性和平方增長。
CSPNet可以應(yīng)用于各種CNN架構(gòu),同時(shí)減少參數(shù)和計(jì)算量。此外,它還提高了準(zhǔn)確性,減少了推理時(shí)間。將其應(yīng)用于ResNet、ResNeXt和Darknet,并觀察計(jì)算量的變化,如下所示:
在將上述CNN轉(zhuǎn)換為CSPNet后,新的體系結(jié)構(gòu)可以有效地將ResNet、ResNeXt和Darknet上的計(jì)算量(FLOP)分別減少23.5%、46.7%和50.0%
輕量級(jí)模型不同于大型模型,因?yàn)樗鼈兊膮?shù)利用效率必須更高,以便用少量計(jì)算達(dá)到所需的精度。在進(jìn)行模型縮放時(shí),我們希望計(jì)算順序盡可能低。下表分析了具有有效參數(shù)利用率的網(wǎng)絡(luò),如DenseNet和OSANet的計(jì)算負(fù)載,其中g(shù)表示增長率。
對(duì)于一般CNN,以上列出的g、b和k之間的關(guān)系為k<<g<b。因此,DenseNet的計(jì)算復(fù)雜度順序?yàn)镺(whgbk),而OSANet的計(jì)算復(fù)雜度順序?yàn)镺(max(whbg,whkg2whkg^2whkg2))。上述兩種方法的計(jì)算復(fù)雜度小于ResNet系列的O(whkb2whkb^2whkb2)。
最小化/平衡特征圖的大小:為了在計(jì)算速度方面獲得最佳的折衷,作者提出了一個(gè)新的概念,即在CSPOSANet的計(jì)算塊之間執(zhí)行梯度截?cái)唷H绻麑⒆畛醯腃SPNet設(shè)計(jì)應(yīng)用于DenseNet或ResNet架構(gòu),因?yàn)檫@兩個(gè)架構(gòu)的第j層輸出是第1到(j-1)層的集成,我們必須將整個(gè)計(jì)算塊視為一個(gè)整體。由于OSANet的計(jì)算塊屬于PlainNet體系結(jié)構(gòu),因此從計(jì)算塊的任何一層生成CSPNet都可以達(dá)到梯度截?cái)嗟男Ч?。使用此功能重新?guī)劃基礎(chǔ)層的b通道和計(jì)算塊生成的kg通道,并將它們拆分為兩條通道數(shù)相等的路徑,如下所示。 OSANet、CSPOSANet和CSPOSANet的通道數(shù),其中部分位于計(jì)算塊(PCB)中
當(dāng)通道數(shù)為b+kg時(shí),如果要將這些通道分成兩條路徑,最好的分割方法是將其分成兩個(gè)相等的部分,即(b+kg)/2。當(dāng)考慮硬件的帶寬峰值時(shí),如果不考慮軟件優(yōu)化,則最佳值是ceil((b+kg)/2τ)×2τceil((b+kg)/2τ)×2τceil((b+kg)/2τ)×2τ。
**卷積后保持相同數(shù)量的通道:**為了評(píng)估低端設(shè)備的計(jì)算成本,還必須考慮功耗,而影響功耗的最大因素是內(nèi)存訪問成本(MAC)。通常卷積運(yùn)算的MAC計(jì)算方法如下:
其中h、w、Cin、Couth、w、C_{in}、C_{out}h、w、Cin?、Cout?和K分別表示特征映射的高度和寬度、輸入和輸出的通道數(shù)以及卷積核大小。通過計(jì)算幾何不等式,可以得出Cin=CoutC_{in} = C_{out}Cin?=Cout?時(shí)為最小MAC。
最小化卷積輸入/輸出(CIO) : 下表列出了OSA、CSP和CSPOSANet的CIO,當(dāng)kg>b/2kg>b/2kg>b/2時(shí),所提出的CSPOSANet可以獲得最佳的CIO
Scaling Large Models for High-End GPUs:由于我們希望在對(duì)CNN模型進(jìn)行縮放后提高精度并保持實(shí)時(shí)推理速度,因此在進(jìn)行復(fù)合縮放時(shí),必須在目標(biāo)檢測器的多個(gè)縮放因子中找到最佳組合。通常,我們可以調(diào)整目標(biāo)探測器輸入、主干和頸部的比例因子。下表總結(jié)了可調(diào)整的潛在比例因子。
圖像分類和目標(biāo)檢測的最大區(qū)別在于前者只需要識(shí)別圖像中最大分量的類別,而后者需要預(yù)測圖像中每個(gè)對(duì)象的位置和大小。在單級(jí)目標(biāo)檢測器中,每個(gè)位置對(duì)應(yīng)的特征向量用于預(yù)測該位置處目標(biāo)的類別和大小。更好地預(yù)測物體大小的能力基本上取決于特征向量的感受野。在CNN架構(gòu)中,與感受野最直接相關(guān)的是stage,而功能金字塔網(wǎng)絡(luò)(FPN)架構(gòu)告訴我們,更高的stage更適合預(yù)測大型物體。在下表中,我們說明了感受野和幾個(gè)參數(shù)之間的關(guān)系。
從上表可以明顯看出,寬度縮放可以獨(dú)立操作。當(dāng)輸入圖像大小增加時(shí),如果想要對(duì)大型對(duì)象有更好的預(yù)測效果,必須增加網(wǎng)絡(luò)的深度或級(jí)數(shù)。在列出的參數(shù)中,{sizeinputsize^{input}sizeinput,#stage}的混合有4個(gè)最佳影響。因此,在執(zhí)行放大時(shí),我們首先對(duì){sizeinputsize^{input}sizeinput,#stage}執(zhí)行復(fù)合縮放,然后根據(jù)實(shí)時(shí)要求,我們進(jìn)一步分別對(duì)深度和寬度執(zhí)行縮放。
二、CSP-ized YOLOv4
YOLOv4是為通用GPU上的實(shí)時(shí)目標(biāo)檢測而設(shè)計(jì)的。本文重新設(shè)計(jì)了YOLOv4到Y(jié)OLOv4 CSP,以獲得最佳的速度/精度權(quán)衡。
主干:在CSPDarknet53的設(shè)計(jì)中,cross-stage process的下采樣卷積計(jì)算不在殘差塊中。因此,可以推斷每個(gè)CSPDarknet階段的計(jì)算量為whb2(9/4+3/4+5k/2)whb^2(9/4+3/4+5k/2)whb2(9/4+3/4+5k/2)。從上面推導(dǎo)的公式中,我們知道只有當(dāng)k>1時(shí),CSPDarknet階段才會(huì)比Darknet階段有更好的計(jì)算優(yōu)勢。CSPDarknet53中每個(gè)階段擁有的殘差層數(shù)量分別為1-2-8-8-4。為了獲得更好的速度/精度折衷,將第一個(gè)CSP階段轉(zhuǎn)換為原始的Darknet殘差層。
Neck:為了有效地減少計(jì)算量,在YOLOv4中對(duì)PAN架構(gòu)進(jìn)行了CSP化。PAN架構(gòu)的計(jì)算列表如上左所示。它主要是將來自不同特征金字塔的特征進(jìn)行整合,然后通過兩組反向Darknet殘差層,無需快捷連接。CSP實(shí)現(xiàn)后,新計(jì)算列表的體系結(jié)構(gòu)如上圖右所示。這個(gè)新的更新有效地減少了40%的計(jì)算量。
三、YOLOv4-tiny
將使用帶有PCB架構(gòu)的CSPOSANet來構(gòu)成YOLOv4的主干。設(shè)定g=b/2作為增長率,并使其在最后增長到b/2+kg=2b。通過計(jì)算,推導(dǎo)出k=3,其結(jié)構(gòu)如下所示。至于每個(gè)階段的通道數(shù)和頸部部分,遵循YOLOv3 tiny的設(shè)計(jì)。
四、YOLOv4-large
YOLOv4 large是為云GPU設(shè)計(jì)的,主要目的是實(shí)現(xiàn)高精度的目標(biāo)檢測。本文設(shè)計(jì)了一個(gè)完全CSP化的模型YOLOv4-P5,并將其放大到Y(jié)OLOv4-P6和YOLOv4-P7。圖4顯示了YOLOv4-P5、YOLOv4P6和YOLOv4-P7的結(jié)構(gòu)。設(shè)計(jì)在sizeinputsize^{input}sizeinput和#stage上執(zhí)行復(fù)合縮放。將每個(gè)階段的深度設(shè)置為2dsi2^{d_{s_i}}2dsi??,dsd_sds?設(shè)置為[1,3,15,15,7,7]。最后,進(jìn)一步使用推斷時(shí)間作為約束來執(zhí)行額外的寬度縮放。實(shí)驗(yàn)表明,當(dāng)寬度縮放因子等于1時(shí),YOLOv4P6可以在每秒30幀的視頻中達(dá)到實(shí)時(shí)性能。對(duì)于YOLOv4-P7,當(dāng)寬度縮放因子等于1.25時(shí),它可以以16 FPS的視頻速度達(dá)到實(shí)時(shí)性能。
五、消融實(shí)驗(yàn)
(一)、Ablation study on CSP-ized model
分析CSP化對(duì)參數(shù)量、計(jì)算量、吞吐量和平均精度的影響。使用Darknet53(D53)作為主干,選擇FPN和SPP(FPNSPP)以及PAN和SPP(PANSPP)作為頸部設(shè)計(jì)消融研究。在下表中,列出了不同DNN模型CSP后的APvalAP^{val}APval結(jié)果。分別使用LeakyReu(Leaky)和Mish激活函數(shù)來比較使用的參數(shù)、計(jì)算量和吞吐量。所有實(shí)驗(yàn)都是在COCO minval數(shù)據(jù)集上進(jìn)行的,得到的AP顯示在下表的最后一列中。
從上表中列出的數(shù)據(jù)可以看出,CSP化模型大大減少了32%的參數(shù)和計(jì)算量,并改善了吞吐量和AP。如果想要保持相同的幀速率,可以添加更多的層-或更先進(jìn)的激活函數(shù)。從上表所示的數(shù)字中,可以看到CD53s CFPNSPP Mish和CD53sCPANSPP Leaky與D53 FPNSPP Leaky具有相同的吞吐量,但它們在計(jì)算資源較低的情況下,分別有1%和1.6%的AP改進(jìn)。從以上的改進(jìn)數(shù)據(jù)中,可以看到CSP模式的巨大優(yōu)勢。因此。
(二)、Ablation study on YOLOv4-tiny
從上表所示的圖中,可以看到,設(shè)計(jì)的PCB技術(shù)可以使模型更加靈活,因?yàn)檫@樣的設(shè)計(jì)可以根據(jù)實(shí)際需要進(jìn)行調(diào)整。從以上結(jié)果中,也證實(shí)了線性縮小確實(shí)有其局限性。顯然,在有限的操作條件下,tinyCD53s的殘差法成為推理速度的瓶頸,因?yàn)樗膸俾蔬h(yuǎn)低于具有相同計(jì)算量的COSA體系結(jié)構(gòu)。同時(shí),也看到,提出的COSA可以獲得更高的AP。
其余實(shí)驗(yàn)效果如上。
總結(jié)
以上是生活随笔為你收集整理的Scaled-YOLOv4: Scaling Cross Stage Partial Network的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于MTK平台kpd驱动初步分析
- 下一篇: 牛客网中级项目