宋 爽, 張 悅, 張琳娜, 岑翼剛,*, 李浥東
(1. 北京交通大學(xué)計算機與信息技術(shù)學(xué)院, 北京 100044; 2. 現(xiàn)代信息科學(xué)與網(wǎng)絡(luò)技術(shù)北京市
重點實驗室, 北京 100044; 3. 貴州大學(xué)機械工程學(xué)院, 貴州 貴陽 550025)
深度卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)體系結(jié)構(gòu)經(jīng)過多年的發(fā)展,已經(jīng)在計算機視覺、自然語言處理、音視頻識別等多個領(lǐng)域展現(xiàn)出其優(yōu)越的性能。在硬件資源充足的情況下,構(gòu)建更深、更寬的網(wǎng)絡(luò)結(jié)構(gòu)是在各項任務(wù)中取得更高得分的重要手段之一[1-2],以計算機視覺領(lǐng)域為例,因為CNN在圖像方面有著強大的特征提取和表征能力,自從AlexNet[3]在ImageNet圖像挑戰(zhàn)賽ILSVRC2012(ImageNet Large Scale Visual Recognition Challenge 2012)[4]中獲得冠軍后,CNN在計算機視覺領(lǐng)域掀起了新一輪的研究熱潮。通過構(gòu)建更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),提升網(wǎng)絡(luò)層數(shù)或?qū)挾?增加網(wǎng)絡(luò)的參數(shù)量或計算量,VGGNet[5]、GoogLeNet[6]、ResNet[2,7]和SENet[8]分別在之后的ImageNet大賽中取得了優(yōu)異的成績。同時,各種基于CNN的目標檢測算法也不斷涌現(xiàn),目前主流應(yīng)用的算法有以單階段多框檢測器(single shot multibox detector, SSD)[9-10]、你只需要看一次(you only look once, YOLO)[11-13]系列為代表的單階段檢測算法和以包含卷積神經(jīng)網(wǎng)絡(luò)特征的區(qū)域(regions with CNN features, R-CNN)[14-15]系列為代表的兩階段檢測算法。但是在現(xiàn)實生產(chǎn)場景中,過于龐大復(fù)雜的目標檢測網(wǎng)絡(luò)不利于生產(chǎn)部署和移動端移植,在自動駕駛[16-17]、智能安防[18]、工業(yè)機器人[19]等現(xiàn)實應(yīng)用中,精度高、速度快和對硬件要求低的網(wǎng)絡(luò)更加受到產(chǎn)業(yè)和市場的青睞。因此,通過壓縮和加速深度神經(jīng)網(wǎng)絡(luò)模型,使其能直接應(yīng)用于存儲和計算資源有限的場景中,成為一種有效的解決方案。
研究指出,通過將緊湊型網(wǎng)絡(luò)[20-24]應(yīng)用于檢測模塊中,可以很好地降低網(wǎng)絡(luò)的參數(shù)和所需要的計算量[25],不過因為網(wǎng)絡(luò)復(fù)雜度降低,可能導(dǎo)致檢測精度大幅度下降,因此不能為了追求模型輕量化而盲目地對基礎(chǔ)檢測網(wǎng)絡(luò)進行修改。本文在綜合考慮檢測精度以及模型參數(shù)量和計算量的基礎(chǔ)上,針對基礎(chǔ)的YOLO目標檢測算法,參考ShuffleNet V2的網(wǎng)絡(luò)設(shè)計,對檢測骨干網(wǎng)絡(luò)部分進行重構(gòu),同時為了彌補由網(wǎng)絡(luò)修改導(dǎo)致的精度損失,構(gòu)建快速特征提取Stem模塊,并引入可變形卷積網(wǎng)絡(luò)[26-27](deformable convolutional network, DCN)對特征提取網(wǎng)絡(luò)中的部分卷積層進行替換,在大幅降低網(wǎng)絡(luò)參數(shù)量和計算量的同時,保持了網(wǎng)絡(luò)的較高檢測精度,最終獲得一個高性能的輕量化目標檢測模型。在自采集的道路監(jiān)控數(shù)據(jù)集和公開數(shù)據(jù)集PASCAL VOC[28]上進行的大量實驗,驗證了本文所提出的輕量化檢測模型的有效性。
經(jīng)典的CNN一般由多個卷積層和全連接層組成,如圖1所示,為了實現(xiàn)對模型的壓縮和加速,得到輕量化的深度神經(jīng)網(wǎng)絡(luò),相關(guān)研究針對不同層的參數(shù)權(quán)值和運算操作提出了各種不同的優(yōu)化方法。
對網(wǎng)絡(luò)冗余參數(shù)進行剪枝可以降低網(wǎng)絡(luò)復(fù)雜度,壓縮模型和加速模型的計算,韓松等人[29-30]提出經(jīng)典的訓(xùn)練連接、刪除連接、重訓(xùn)練權(quán)值的低值連接刪除策略,使網(wǎng)絡(luò)變得稀疏。文獻[31]對批歸一化層(batch normalization, BN)的尺度縮放因子引入L1正則化項,再逐層裁剪低于閾值的通道,實現(xiàn)網(wǎng)絡(luò)瘦身。剪枝操作可以很好地實現(xiàn)網(wǎng)絡(luò)壓縮和加速,但是對網(wǎng)路參數(shù)的剪枝可能會破壞網(wǎng)絡(luò)原有結(jié)構(gòu),需要特殊的硬件以支持部署。逐層逐通道剪枝雖然實現(xiàn)了結(jié)構(gòu)化剪枝,但是重復(fù)的裁剪和微調(diào)操作需要消耗大量的人力和時間成本,同時神經(jīng)網(wǎng)絡(luò)中通道和層的重要性評估依據(jù)也沒有統(tǒng)一標準。知識蒸餾將訓(xùn)練好的復(fù)雜模型作為教師網(wǎng)絡(luò),指導(dǎo)簡單的學(xué)生網(wǎng)絡(luò)去學(xué)習(xí)知識,以得到較為精煉的小模型。Hinton等人[32]最先提出知識蒸餾的概念,將教師模型softmax層的輸出作為標簽,監(jiān)督指導(dǎo)學(xué)生進行網(wǎng)絡(luò)的訓(xùn)練。文獻[33]提出可以利用教師網(wǎng)絡(luò)中高層隱藏層神經(jīng)元的輸出作為知識,相比于使用標簽概率,包含的學(xué)習(xí)信息更加豐富。知識蒸餾可以獲得細小化的學(xué)生網(wǎng)絡(luò),但是教師和學(xué)生網(wǎng)絡(luò)差距過大可能導(dǎo)致學(xué)習(xí)效果較差,同時對教師網(wǎng)絡(luò)的假設(shè)較為嚴格,缺乏重要指導(dǎo),導(dǎo)致知識遷移不易成功。
以上提到的壓縮和加速策略都是基于已有的模型,而訓(xùn)練一個完整龐大的模型需要耗費大量的資源。輕量化網(wǎng)絡(luò)從網(wǎng)絡(luò)設(shè)計部分著手,力求通過卷積核替換和網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化,降低模型的參數(shù)量和計算量,并追求達到與復(fù)雜模型可比的精度水平。綜合以上分析,使用輕量化網(wǎng)絡(luò)對基于CNN的目標檢測算法進行重構(gòu),以較低的硬件資源消耗實現(xiàn)目標檢測算法,既保證了基礎(chǔ)的網(wǎng)絡(luò)結(jié)構(gòu)不被破壞,而且不依賴于提前訓(xùn)練好的網(wǎng)路,構(gòu)建模型所需要的時間更少,計算成本更為低廉。
作為一種單階段的目標檢測算法,YOLO算法將整幅圖像作為輸入,運行一個端到端的檢測網(wǎng)絡(luò)以輸出結(jié)果。網(wǎng)絡(luò)將圖像劃分為S×S個單元格,如果目標的中心點落入某個單元格內(nèi)部,由該單元格負責(zé)預(yù)測該目標,負責(zé)預(yù)測的單元格會預(yù)測B個邊界框位置的相對坐標及其對應(yīng)的目標置信度分數(shù)。相對坐標用(x,y,w,h)表示,其中(x,y)表示邊界框的中心坐標,以圖像左上角為坐標原點;(w,h)表示邊界框的寬和高,表示相對于整幅圖像的寬和高的比例,YOLO算法的檢測流程如圖2所示。
自YOLO檢測算法在2016年被首次提出之后,相關(guān)研究人員在其基礎(chǔ)上不斷改進和增強,發(fā)展衍生出v1~v5多個版本,并在工業(yè)界和產(chǎn)業(yè)界獲得了良好的應(yīng)用。YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,模型依舊以DarkNet[13]為基礎(chǔ),為了減少網(wǎng)絡(luò)計算量并且增強梯度的表現(xiàn),文獻[34]使用跨階段局部網(wǎng)絡(luò)(cross stage partial network, CSPNet)組成CSP模塊。為了增加主干網(wǎng)絡(luò)的特征接收范圍,更顯著地分離上下文特征,在最后一層使用了空間金字塔池化(spatial pyramid pooling, SPP)模塊[35]。YOLOv5通過引入深度和寬度因子,控制模型的大小,得到v5s,v5m,v5l,v5x 4種由小到大的模型。但在實際應(yīng)用中,即便是網(wǎng)絡(luò)復(fù)雜度最低的YOLOv5s,在模型大小和計算資源消耗方面,仍然有優(yōu)化空間。
本文提出的輕量化目標檢測模型的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖4所示,不對輸入特征圖進行切片操作,同時對圖3中由卷積模塊和CSP模塊堆疊組成的骨干網(wǎng)絡(luò)使用融合Stem和ShuffleNet V2單元組成的模塊進行重構(gòu),降低網(wǎng)絡(luò)的計算和內(nèi)存消耗,使用DCN模塊替換原始網(wǎng)絡(luò)中的基本卷積模塊,以提高網(wǎng)絡(luò)的檢測性能,輸出部分沿用YOLOv5的設(shè)計,通過特征融合的方式對3個不同尺度的特征圖進行預(yù)測。
目前研究一般使用神經(jīng)網(wǎng)絡(luò)的空間和時間復(fù)雜度對網(wǎng)絡(luò)模型進行綜合評價,空間復(fù)雜度即為網(wǎng)絡(luò)中參數(shù)量的多少。CNN中的參數(shù)量由眾多卷積核的權(quán)重和對應(yīng)的偏置組成,在統(tǒng)計時有相對明確值。時間復(fù)雜度則可以用浮點運算次數(shù)(floating point of operations,FLOPs)[23]來進行衡量,其值可以由下式得到:
{FLOPs=FLOPsfully+FLOPsconv
FLOPsconv=Cin·Cout·K2·Hout·Wout
FLOPsfully=I·O
(1)
式中:FLOPs由卷積層和全連接層兩部分的計算量組成;I代表全連接層的輸入節(jié)點數(shù);O代表全連接層的輸出節(jié)點數(shù);Cin代表卷積層的輸入通道數(shù)量;Cout代表卷積層的輸出通道數(shù)量,假設(shè)卷積核為方形;K代表其大小;Hout代表輸出特征圖的高;Wout代表輸出特征圖的寬。由于偏置項對于總的FLOPs而言影響不大,在計算時一般將其忽略。在設(shè)計輕量化網(wǎng)絡(luò)時,通常使用FLOPs的大小衡量模型復(fù)雜度,但是浮點運算量只是一個理論性的指標,模型的運算速度還受到內(nèi)存訪問成本(memory access cost, MAC)的重大影響,同時在文獻[36]中指出,端側(cè)平臺會為一些特殊的操作,如3×3的卷積,專門設(shè)計推理加速庫,進而也會影響模型實際的運算速度。因此,本文在設(shè)計輕量化目標檢測網(wǎng)絡(luò)時,將綜合考慮理論指標FLOPs和模型在設(shè)備上的推理運行速度,使得網(wǎng)絡(luò)更加適用于真實場景部署。
在過去的工作中[37-38],研究人員已經(jīng)發(fā)現(xiàn),可以使用深度可分離卷積(depthwise separable convolution, DWSConv)來降低卷積操作的運算成本。其中,深度卷積操作如圖5所示,該卷積操作只改變特征圖的大小,不改變其通道數(shù),與卷積核大小為1×1的點卷積組合實現(xiàn)深度可分離卷積。
對于式(1)中的FLOPsconv,使用DWSConv進行替換所需要的計算量為
FLOPsDWS=Cin·K2·Hout·Wout+Cin·Cout·K2
(2)
替換后的卷積操作與原始卷積操作的計算量比為
(3)
實際中,輸入通道數(shù)量Cin往往較大,最終可以節(jié)約的計算量大約與卷積核大小的平方成反比,但是在第2.1節(jié)提到,僅僅通過計算量是不能準確地衡量模型的運行速度快慢的,因為MAC的差異,相同F(xiàn)LOPs的模型在運行速度上并不一定相同。為了更好地得到結(jié)論,定義1×1卷積所需要的內(nèi)存訪問成本MAC1×1,其值可由下式計算得到:
MAC1×1=Hout·Wout·(Cin+Cout)+Cin·Cout
(4)
在均值不等式中,幾何平均數(shù)不超過算數(shù)平均數(shù),即對于非負實數(shù)a,b:
(5)
始終成立,并且僅當a=b時,可以取到等號。
由式(4)和式(5)可以得到,MAC1×1存在下限:
(6)
式中:B1×1=Cin·Cout·Hout·Wout,代表1×1卷積操作所需要的浮點計算量,固定其數(shù)值得到Cout=B1×1/(HoutWout·Cin),則當且僅當Cin=Cout,即輸入通道等于輸出通道數(shù)時,式(6)MAC1×1可以取到等號,即最小值。
YOLOv5中使用了大量的CSP模塊,使得輸入和輸出通道數(shù)量不一致,這與上述結(jié)論相違背。對ShuffleNet V2網(wǎng)絡(luò)進行構(gòu)建時,在基礎(chǔ)單元中對輸入特征圖執(zhí)行一個通道切分操作,將特征圖分為兩個分支,通道數(shù)量分別為C′和Cin-C′?;谑?6)的分析,為使得總體MAC最小化,實驗中設(shè)置C′=Cin-C′,最后通過通道合并操作將兩個分支的通道進行整合,保證了輸入通道等于輸出通道。在構(gòu)建網(wǎng)絡(luò)時也應(yīng)減少使用YOLOv5中的信息相加操作,因為這種元素級的操作對MAC的影響也是巨大的[24]。同時,為了避免某個通道的輸出僅僅來自于原始特征圖的某一小部分通道,網(wǎng)絡(luò)在通道合并之后又使用了圖6(a)所示的通道隨機混合模塊,以實現(xiàn)不同分支間的信息交流。最終,在圖4的網(wǎng)絡(luò)搭建中所使用的ShuffleNet V2模塊是由圖6(b)所示的兩種ShuffleNet V2單元組合而成,通過傳入的步長參數(shù)控制是否進行下采樣操作。
原始的ShuffleNet V2網(wǎng)絡(luò)在搭建時,第一層由普通的卷積運算、BN層、ReLU非線性激活函數(shù)和最大值池化構(gòu)成,提取圖像特征的能力有限。圖7所示的Stem模塊可以通過兩個分支提取不同的圖像特征,在不引入過多額外開銷的基礎(chǔ)上提升了網(wǎng)絡(luò)的表征能力。因此,使用Stem模塊對網(wǎng)絡(luò)第一層進行替換,并通過實驗驗證了其有效性。
如圖3所示,基礎(chǔ)的YOLOv5骨干網(wǎng)絡(luò)由大量的卷積模塊Conv、CSPNet構(gòu)成的瓶頸模塊和SPP模塊堆疊組合而成。除了SPP模塊不涉及復(fù)雜的卷積乘加操作,其他兩個模塊中存在大量浮點運算,造成龐大的參數(shù)量和計算量,而CSP模塊中殘差結(jié)構(gòu)的引入需要更多的內(nèi)存以保存新的特征圖,網(wǎng)絡(luò)在實際使用時對內(nèi)存的消耗極大。基于以上討論,ShuffleNet V2模塊在降低網(wǎng)絡(luò)參數(shù)量和計算量的同時,進一步減少了網(wǎng)絡(luò)的內(nèi)存訪問成本,因此可以將圖6所示的兩個ShuffleNet V2單元堆疊組合以重構(gòu)原始YOLOv5s的骨干網(wǎng)絡(luò),而為了彌補由骨干網(wǎng)變小帶來的特征提取能力的損失,使用上文提到的Stem模塊替換ShuffleNet V2網(wǎng)絡(luò)的第一層,得到一個輕量化目標檢測模型YOLOv5-ShuffleS。
基本的卷積操作,每次都是針對卷積核四周矩形范圍內(nèi)的像素點進行計算,無論網(wǎng)絡(luò)的深度和寬度如何變化,網(wǎng)絡(luò)中的感受野始終是矩形,但是在現(xiàn)實場景下,各種物體的位置和形狀往往會發(fā)生改變,通過一些仿射變換的數(shù)據(jù)增強操作不足以模擬各種場景。
因此,直接從卷積操作入手,使得卷積核能夠?qū)D像中物體的幾何變換具備良好的適應(yīng)性,對于目標檢測這種視覺任務(wù)有很好的提升效果。
可變形卷積的操作都是在二維空間域中進行,輸入的通道維度保持不變,所以這里假設(shè)卷積核的采樣網(wǎng)格點為R,R={(-1,1),(-1,0),…,(0,1),(1,1)}。對于輸出特征圖中的每個元素p0,有
(7)
式中:x為輸入特征圖;pn表示枚舉R中的第n個位置;w(pn)表示該位置的權(quán)重。在可變形卷積中,對每一個采樣網(wǎng)格額外加上一個偏移量{Δpn|n=1,2,…,N},其中N=|R|。因此,式(7)可擴展為
(8)
因為偏移量Δpn是一個微小的浮點型偏移量,對于x(p0+pn+Δpn),在計算時可以通過雙線性插值得到:
(9)
式中:p=p0+pn+Δpn表示任意位置;q為枚舉輸入特征圖中的空間位置;G是二維的雙線性插值卷積核,可被分解為兩個一維核:
G(q,p)=g(qx,px)·g(qy,py)
(10)
其中,g(a,b)=max(0,1-|a-b|)。
實現(xiàn)可變形卷積的基礎(chǔ)結(jié)構(gòu)與普通卷積網(wǎng)絡(luò)類似,只是需要一個額外的卷積層學(xué)習(xí)輸入特征圖的偏移量,再通過雙線性插值得到最終的輸出特征圖,網(wǎng)絡(luò)需要同時學(xué)習(xí)用于生成輸出特征和偏移量的卷積核,可變形卷積計算流程如圖8所示。
本文采用的可變形卷積模塊為DCN V2[27],其在原始的可變形卷積基礎(chǔ)上進一步對權(quán)重和偏移都進行了學(xué)習(xí),可變形效果更好且性能更佳。圖9展示了可變形卷積特征點感受野對比,可以看到可變形卷積自適應(yīng)的學(xué)習(xí)感受野,其采樣點更符合真實物體的位置和形狀,對特征提取更有利。
可變形卷積的引入會造成額外的參數(shù)量和計算量,為了在保持網(wǎng)絡(luò)模型輕量化的同時提升目標檢測的性能,本文僅對第2.2節(jié)中YOLOv5-ShuffleS模型的特征提取頭部進行操作,將其中的基本卷積操作模塊替換為可變形卷積模塊(圖4中的DCN模塊),為了保持特征維度的相同,在最后兩個可變形卷積模塊之后均加入一個最近鄰插值的下采樣模塊,最終得到圖4所示的YOLOv5-ShuffleS-DCN輕量化目標檢測模型。
本文實驗平臺的操作系統(tǒng)為ubuntu18.04,硬件配置為Inter XeonE5-2630處理器,顯卡為Nvidia2080Ti,使用Pytorch1.7.1深度學(xué)習(xí)框架,CUDA 10.1,Cudnn 7.6.3。
實驗中用到了開源數(shù)據(jù)集PASCAL VOC、COCO和真實場景中的監(jiān)控道路數(shù)據(jù)集,對于開源數(shù)據(jù)集PASCAL VOC,該數(shù)據(jù)集共有20個類別,使用文獻[39-40]等文中最常使用的07+12訓(xùn)練測試數(shù)據(jù)切分模式,最終訓(xùn)練集共包含16 551張圖像,測試集共包含4 952張圖像。COCO[44]是微軟開源的一個從日常復(fù)雜場景中截取的圖像庫,本文使用COCO2017目標檢測數(shù)據(jù)集,其中訓(xùn)練集包含人、汽車、飛機、網(wǎng)球拍等80個類別共118 287張圖像,驗證集和測試集分別包含5 000和40 670張圖像,監(jiān)控道路數(shù)據(jù)集共有包含人、小汽車、巴士在內(nèi)的7個類別,共包含16 683張圖像,具體樣本類別數(shù)量見表1。
表1 道路監(jiān)控數(shù)據(jù)集Table 1 Road monitoring data set
檢測模型使用平均精度均值(mean average precision, mAP)作為模型性能的評價指標,并綜合分析了模型的參數(shù)量、計算量和同一設(shè)備的推理速度,以驗證模型的有效性。
遵循YOLOv5中對于實驗超參數(shù)的設(shè)計,在訓(xùn)練監(jiān)控道路數(shù)據(jù)集/COCO時,初始學(xué)習(xí)率設(shè)置為0.01,動量和權(quán)重衰減設(shè)置為0.937和0.000 5,批次大小設(shè)置為16/256。對于PASCAL VOC數(shù)據(jù)集,初始學(xué)習(xí)率設(shè)置為0.010 7,動量和權(quán)重衰減設(shè)置為0.98和0.000 22,批次大小設(shè)置為48,使用統(tǒng)一的圖像翻轉(zhuǎn)、裁剪、顏色域曝光及飽和度變換和馬賽克數(shù)據(jù)混淆[41]等操作進行數(shù)據(jù)增強,在相同的實驗設(shè)備上進行多次訓(xùn)練以得到最終結(jié)果。
將提出的YOLOv5-ShuffleS-DCN模型與目前各種高性能目標檢測模型在開源數(shù)據(jù)集VOC上進行對比,結(jié)果見表2。由于網(wǎng)絡(luò)維度限制,輸入尺寸必須滿足32倍采樣,實驗中分別對3種不同的輸入尺寸進行測試驗證,表2中“-”表示未在公開資料中找到相應(yīng)數(shù)據(jù)。
表2 VOC數(shù)據(jù)集實驗結(jié)果Table 2 VOC dataset experiment results
從表2可以看出,本文提出的模型在計算量、模型大小和檢測精度之間取得了更好的平衡。Tiny-YOLO是在YOLOv3基礎(chǔ)上改進的輕量化模型,在輸入特征圖大小條件下,本文提出的模型與其相比在FLOPs、模型大小和mAP 3個方面都有著更好的表現(xiàn)。為了提高檢測的精度,可以提高輸入特征圖大小,但這會造成更多的計算開銷,但即便將模型的輸入特征圖大小提高到416×416甚至512×512,與FLOPs類似的MobileNet-SSD和Pelee-SSD相比,模型大小進一步壓縮且精度差異不大,同時與專門針對嵌入式平臺Nvidia Nano設(shè)計的YOLO-Nano相比,本文模型在計算量和模型大小更優(yōu)的前提下,取得了相當?shù)臋z測精度,并且本文提出的模型不依賴于特殊硬件。經(jīng)分析可知,因為網(wǎng)絡(luò)使用了輕量化骨干網(wǎng)絡(luò)和龐大的原始檢測頭,兩者的能力不匹配,導(dǎo)致模型與基礎(chǔ)的YOLOv5s、PP-YOLO和基于mmdetection實現(xiàn)的ThunderNet相比,在檢測精度上存在一定差距,但是模型尺寸得到了極致化壓縮,大小僅有1.32 MB。
為了進一步驗證方案的有效性,在更為復(fù)雜和龐大的COCO數(shù)據(jù)集上進行了訓(xùn)練和測試,同時考慮到Y(jié)OLO算法在學(xué)術(shù)和工業(yè)界的廣泛應(yīng)用,將所提出的算法模型與目前公開的各種參考YOLO而改進的輕量化模型進行對比,實驗結(jié)果見表3。表中模型輸入尺寸為416×416,APval表示在COCO2017驗證集上mAP交并比(intersection over union, IOU)的結(jié)果,其中IOU為0.5∶0.95。從表3可以看出,本文所提出的輕量化模型除了與基礎(chǔ)的YOLOv5s(640×640)模型和今年提出的YOLOX方案在精度上有一定差距以外,與目前公開的學(xué)術(shù)和工業(yè)界最先進的方案相比在精度方面均有一定競爭力,但本文所提出的方案在模型尺寸和浮點計算量方面有著更優(yōu)的表現(xiàn)。經(jīng)總結(jié),本文所提出的YOLOv5-ShuffleS-DCN模型對計算資源和硬件存儲的消耗進一步降低,同時在各種數(shù)據(jù)集上依舊有著較高的精度表現(xiàn),更有利于模型的遷移和應(yīng)用。
表3 COCO數(shù)據(jù)集實驗結(jié)果Table 3 COCO dataset experiment results
在本地道路監(jiān)控數(shù)據(jù)集上進行消融實驗。將YOLOv5系列中深度和寬度最小的YOLOv5s作為基準網(wǎng)絡(luò),對由YOLOv5s替換骨干網(wǎng)絡(luò)而得到的YOLOv5-Shuffle,添加Stem模塊的YOLOv5-ShuffleS和最終模型分別進行訓(xùn)練和測試驗證,所有訓(xùn)練均不加載預(yù)先在大規(guī)模數(shù)據(jù)集[4]中訓(xùn)練好的模型,以證明調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)后也能很快在新數(shù)據(jù)集上達到收斂。同時,針對第1.1節(jié)中提到的模型剪枝策略,對YOLOv5s使用文獻[31]中的方法進行壓縮加速,得到Y(jié)OLOv5s-prune,并在相同數(shù)據(jù)集上進行測試。測試時使用本地一塊顯存為6G的GTX1060顯卡,對于416×416的輸入圖像,計算不同模型的FLOPs、16精度模型推理和非極大值抑制(non maximum suppression, nms)總時間,以及mAP值,所有置信度閾值和nms閾值均相同。表中mAP@:.5表示在IOU=0.5時,計算每一類圖像的平均精度,再求所有種類的平均精度均值,最終實驗結(jié)果如表4所示。本方案是專門針對硬件資源有限的邊緣端設(shè)備設(shè)計的,進一步在Jetson Nano上進行了圖像速度推理測試,Jetson Nano是NVIDIA在2019年發(fā)布的一款開發(fā)套件,可以在緊湊、易用的平臺上提供現(xiàn)代AI的強大功能及完整的軟件可編程性,采用四核64位ARM CPU和128核集成NVIDIA GPU,具有5 W/10 W功率模式,并且價格低廉,適合在各種邊緣端環(huán)境進行部署。
表4 本地數(shù)據(jù)集實驗結(jié)果Table 4 Local dataset experiment results
從表4可以看出,替換骨干網(wǎng)絡(luò)可以大幅地減少模型的尺寸和FLOPs,但是會導(dǎo)致檢測精度的較大損失,而Stem模塊在幾乎不引入額外參數(shù)量和計算量的情況下,使網(wǎng)絡(luò)相比于YOLOv5-Shuffle模型檢測精度提高了約1.2個百分點。雖然引入DCN模塊需要額外的卷積來計算偏移量,導(dǎo)致參數(shù)量和計算量有所增加,但是最終模型參數(shù)量減少90%,模型尺寸降低約80%,計算量和檢測速度均優(yōu)于原始YOLOv5s,達到了與原始模型可比的檢測精度。與采用剪枝得到的模型相比,本文提出的輕量化模型在檢測精度、檢測速度、模型尺寸各個方面均優(yōu)于YOLOv5s-prune。在低功耗的Jetson Nano設(shè)備上測試結(jié)果如圖10所示,測試了1 000張輸入大小為416×416的圖像的推理延遲并取均值作為最終數(shù)值??梢钥闯?本文所提出的最終模型在YOLOv5s的基礎(chǔ)上進一步實現(xiàn)了加速,可以實現(xiàn)單張圖像90~100 ms的推理延遲,足以適用于大多數(shù)非實時性要求場景,而如果對實時性要求較高,可以在犧牲一定精度的條件下,使用YOLOv5-ShuffleS模型,該模型在Jetson Nano設(shè)備上實現(xiàn)了50 ms(每秒20幀)的推理速度,基本達到了監(jiān)控攝像機的采集幀率。
實驗驗證了本文提出的YOLOv5-ShuffleS-DCN模型的有效性,可以在大幅度減少模型尺寸、降低參數(shù)量和計算量的同時,實現(xiàn)更快的檢測速度,并達到可信賴的檢測精度。圖11展示了最終模型在本地數(shù)據(jù)集上的檢測效果。
本文對YOLOv5目標檢測CNN進行壓縮和加速,參考ShuffleNet V2模塊構(gòu)建思想,融合可變形卷積和快速特征提取操作對原始網(wǎng)絡(luò)進行重構(gòu),實現(xiàn)了網(wǎng)絡(luò)模型的輕量化。通過在開源數(shù)據(jù)集VOC、COCO和本地道路監(jiān)控數(shù)據(jù)集上進行實驗驗證,所提出的模型在尺寸大小、參數(shù)量和計算量大幅度降低的情況下依舊保持了較高的檢測精度。
本文的下一步安排,分析使用輕量化網(wǎng)絡(luò)帶來的精度損失,在保證模型輕量化的前提下,進一步提高模型的檢測精度。針對特定環(huán)境,對提出的網(wǎng)絡(luò)模型進行優(yōu)化改進,并且結(jié)合分解、量化等技術(shù)將算法移植部署到移動端,實現(xiàn)實際場景應(yīng)用。