郭明鎮(zhèn),汪 威,申紅婷,候紅濤,劉 寬,羅子江
貴州財(cái)經(jīng)大學(xué) 信息學(xué)院,貴陽 550025
隨著卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的發(fā)展,YOLO[1](you only look once)系列算法檢測憑借速度較快、準(zhǔn)確率較高的特點(diǎn),成為當(dāng)下主流的目標(biāo)檢測算法,在智慧交通、智能監(jiān)控、軍事目標(biāo)檢測等方面[2]具有廣泛的應(yīng)用價(jià)值。目標(biāo)檢測的發(fā)展趨勢要求檢測算法具備精良的準(zhǔn)確性和優(yōu)異的實(shí)時(shí)性,同時(shí)要求算法所占內(nèi)存較小,便于部署在移動(dòng)端。
目前,以輕量性為設(shè)計(jì)理念而提出的YOLOv4-tiny[3]算法,在實(shí)時(shí)檢測任務(wù)中取得良好的檢測性能。王長清等人[4]基于YOLOv4-tiny在主干網(wǎng)絡(luò)引入大尺度特征圖優(yōu)化策略和金字塔池化模型,從而提高特征圖的多尺度融合效率,豐富邊緣細(xì)節(jié)信息,且檢測精度方面也有所提升。朱杰等人[5]在YOLOV4-tiny 中增加SPP[6](spatial pyramid pooling)模塊和PAN[7](path aggregation network)模塊,引入標(biāo)簽平滑策略[8],從而提高模型在復(fù)雜場景下對(duì)小目標(biāo)和遮擋目標(biāo)的適應(yīng)能力。盧迪等人[9]通過SPP模塊將全局和局部特征進(jìn)行融合,豐富特征圖的表達(dá)能力,減少網(wǎng)絡(luò)參數(shù),提升YOLOv4-tiny網(wǎng)絡(luò)的處理速度。以上的YOLOv4-tiny 算法雖然在檢測精度與速度方面有所提升,但也存在以下不足:(1)主干網(wǎng)絡(luò)的特征圖在傳遞過程中所需算力較大,且卷積核的選擇方案不完善,從而導(dǎo)致特征提取的速度和效率不足;(2)特征圖的多尺度融合效率較低,邊緣細(xì)節(jié)信息損失程度較大;(3)主要的計(jì)算模塊算力較大,不易部署在RK3288 開發(fā)板一類的嵌入式設(shè)備上;(4)Mosaic[10]數(shù)據(jù)增強(qiáng)方法會(huì)隨機(jī)截取無目標(biāo)或者目標(biāo)過小的圖像塊,從而導(dǎo)致樣本數(shù)據(jù)的浪費(fèi)問題。
針對(duì)以上不足之處,本文提出一種基于CSPRDWConv模塊的輕量級(jí)網(wǎng)絡(luò)CSPRDW,相關(guān)工作如下:(1)借鑒CNN 在ImageNet 數(shù)據(jù)集[11]中的特征提取器,選用兩個(gè)殘差塊替代YOLOv4-tiny 基準(zhǔn)網(wǎng)絡(luò)中計(jì)算塊的特征提取器,從而設(shè)計(jì)出快速有效的主干網(wǎng)絡(luò),大幅提升算法在計(jì)算資源受限的RK3288開發(fā)板上的推理速度;(2)對(duì)附帶標(biāo)簽的圖像樣本進(jìn)行改進(jìn)的Mosaic 數(shù)據(jù)增強(qiáng),以便截選更多的目標(biāo)物體,過濾掉過小的目標(biāo)物體,從而提升檢測精度;(3)通過NEON 指令對(duì)訓(xùn)練后的檢測模型進(jìn)行優(yōu)化,并將卷積層與BN 層[12](batch normalization,BN)融合,減少BN層的推理時(shí)間,加快檢測模型的推理進(jìn)程。
實(shí)驗(yàn)證明,本算法在1080Ti 硬件上達(dá)到1 308 FPS的實(shí)時(shí)檢測速度,在RK3288 開發(fā)板上的推理時(shí)間縮減至150.6 ms,檢測速度是YOLOv4-tiny 基準(zhǔn)網(wǎng)絡(luò)的近4倍,mAP達(dá)到22.31%,相比于基準(zhǔn)網(wǎng)絡(luò)提升0.61個(gè)百分點(diǎn)。對(duì)比已有的算法并通過大量的實(shí)驗(yàn)驗(yàn)證,結(jié)果表明本文改進(jìn)的YOLOv4-tiny 算法在嵌入式設(shè)備的檢測中更為流暢和高效,整體性能和效率優(yōu)于已有的算法,具有較強(qiáng)的可移植性、實(shí)時(shí)性、魯棒性以及較高的實(shí)用價(jià)值。
2020 年,Bochkovskiy 等人[13]提出YOLOv4,如圖1所示的YOLOv4 中:(1)CSPDarknet53 模塊增強(qiáng)網(wǎng)絡(luò)學(xué)習(xí)能力,降低計(jì)算量和所占內(nèi)存大??;(2)SPP模塊增大感受野的同時(shí)分離出價(jià)值度最高、代表性最強(qiáng)的特征;(3)PAN 模塊代替YOLOv3 中的特征金字塔網(wǎng)絡(luò)[14](feature pyramid networks,F(xiàn)PN)作為多尺度融合模塊,加快頂層信息與底層信息的匯合進(jìn)程。YOLOv4 實(shí)現(xiàn)檢測速度和檢測精度的最佳權(quán)衡,但是YOLOv4算法檢測過程復(fù)雜、算力較大,對(duì)設(shè)備的性能要求過高,不適用于嵌入式系統(tǒng)。
圖1 YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Network structure of YOLOv4
2020 年,Bochkovskiy 團(tuán)隊(duì)[3]正式發(fā)布YOLOv4-tiny,YOLOv4-tiny 是為嵌入式系統(tǒng)設(shè)計(jì)的輕量化架構(gòu)。如圖2 所示的YOLOv4-tiny 設(shè)計(jì)思路為:(1)選用CSPDark net53-Tiny 進(jìn)行特征提??;(2)FPN 模塊代替SPP 模塊和PAN 模塊;(3)使用兩種尺度預(yù)測網(wǎng)絡(luò)對(duì)目標(biāo)進(jìn)行分類和回歸預(yù)測。YOLOv4-tiny 犧牲一定程度的檢測精度以換取檢測速度的大幅提升,速度由62 FPS提升至371 FPS,但移植到RK3288 開發(fā)板上其速度僅為1.8 FPS。
圖2 YOLOv4-tiny的網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of YOLOv4-tiny
改進(jìn)的YOLOv4-tiny網(wǎng)絡(luò),即YOLOv4-tiny-CSPRDWConv(YOLOv4-tiny-cross stage partial residual depthwise convolution),包括預(yù)訓(xùn)練階段的分類網(wǎng)絡(luò)和訓(xùn)練階段的檢測網(wǎng)絡(luò),整個(gè)學(xué)習(xí)階段被分為共性學(xué)習(xí)階段和特性學(xué)習(xí)階段。如圖3 所示的分類神經(jīng)網(wǎng)絡(luò)為基于ImageNet數(shù)據(jù)集的預(yù)訓(xùn)練網(wǎng)絡(luò),包含大小為224×224×3 的輸入端、3個(gè)CSPRDWConv模塊、5個(gè)下采樣模塊、全局平均池化層以及softmax層,最后輸出圖像的類別判定結(jié)果。分類網(wǎng)絡(luò)的結(jié)構(gòu)組成如表1 所示,其中Conv2d 表示卷積操作,DownSample為含3×3小卷積核的下采樣模塊,B-DownSample 為含5×5 大卷積核的下采樣模塊,t表示膨脹因子(可按需調(diào)整t的大?。nA(yù)訓(xùn)練模型使得檢測網(wǎng)絡(luò)學(xué)習(xí)類別特征信息,為后面的檢測模型做準(zhǔn)備,預(yù)訓(xùn)練后的模型參數(shù)不再是隨機(jī)初始化所得而是基于共性特征信息,從而減輕模型在檢測任務(wù)中的學(xué)習(xí)負(fù)擔(dān)。
表1 分類神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)Table 1 Structure of classification neural network
圖3 分類網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 Classification network structure diagram
如圖4所示,基于COCO數(shù)據(jù)集的檢測網(wǎng)絡(luò)由輸入端、主干網(wǎng)絡(luò)、Neck部分和檢測頭四部分組成:(1)輸入端中圖像大小為416×416;(2)主干網(wǎng)絡(luò)選用預(yù)訓(xùn)練后的分類神經(jīng)網(wǎng)絡(luò)的特征提取部分;(3)Neck 部分中,將FPN 結(jié)構(gòu)替換為YOLOv4 的PAN 結(jié)構(gòu)并增加弱SPP模塊,將原SPP 模塊的四分支結(jié)構(gòu)改造為三分支結(jié)構(gòu);(4)檢測頭為YOLOv4-tiny基準(zhǔn)網(wǎng)絡(luò)的檢測頭;(5)通過NEON指令對(duì)訓(xùn)練后的檢測模型進(jìn)行優(yōu)化,并將卷積層和BN層融合。分類網(wǎng)絡(luò)與檢測網(wǎng)絡(luò)輸入大小相異,故在預(yù)訓(xùn)練階段使用{224,320,416}不同輸入大小的圖片進(jìn)行交替訓(xùn)練,使檢測模型適應(yīng)不同尺度的輸入。
圖4 檢測網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Detection network structure diagram
如圖5(a)所示,原YOLOv4-tiny計(jì)算模塊使用PCB架構(gòu)的CSPOSANet構(gòu)成主干網(wǎng)絡(luò)[3],該計(jì)算模塊與同輸入同輸出的標(biāo)準(zhǔn)卷積的Flops 比較公式如式(1)所示。式(1)中c′ 表示該輸出通道數(shù),k表示卷積核的大小,w′和h′分別表示輸出特征圖的寬和高。
圖5 主干網(wǎng)絡(luò)改進(jìn)模塊Fig.5 Backbone network improvement module
YOLOv4-tiny在1080Ti GPU上的檢測速度可達(dá)到371 FPS,但移植到RK3288 開發(fā)板上速度僅為1.8 FPS。故針對(duì)YOLOv4-tiny中的計(jì)算塊算力較大、特征提取效率較低以及在RK3288開發(fā)板上的運(yùn)行速度較慢的問題進(jìn)行改進(jìn),從而設(shè)計(jì)出CSPRDWConv模塊。CSPRDWConv模塊也通過CSPNet[15](cross stage partial net)進(jìn)行跨階段連接以加快網(wǎng)絡(luò)的推理速度,如圖5(b)所示;但在改進(jìn)模塊中使用殘差塊和3×3 深度可分離卷積(depthwise separable convolution,DWConv)進(jìn)行空間映射,然后連接無非線性激活函數(shù)參與的BN層,以免特征圖信息受損。
圖5(b)中,輸入特征圖被Slice 層切分為通道數(shù)相等的兩部分,其中一半進(jìn)行特征映射;另一半與特征映射的輸出特征圖拼接后,通過1×1的標(biāo)準(zhǔn)卷積層得到整個(gè)模塊的輸出特征圖。CSPRDWConv模塊在保持相同精度的前提下,進(jìn)一步加快模型的檢測速度,CSPRDWConv 模塊與同輸入同輸出的標(biāo)準(zhǔn)卷積的Flops 比較公式如式(2)所示:
首先從支撐補(bǔ)償重力的角度,研制了一種“杠桿+配重”結(jié)構(gòu)形式的新型重力補(bǔ)償裝置。該裝置利用靜力平衡原理消除重力影響,在不同工況下可以通過調(diào)節(jié)配重的位置來調(diào)節(jié)補(bǔ)償力的大小,從而更好滿足重力補(bǔ)償?shù)囊?。通過分析伸桿支撐組件支撐力精度以及試驗(yàn),證明了該補(bǔ)償裝置的有效性和合理性。
式(2)中,c′、w′、h′分別為該模塊的輸出特征圖的通道數(shù)、寬和高,k表示卷積核的大小。該模塊的算力是YOLOv4-tiny計(jì)算模塊的3/k2倍(k≥3),適當(dāng)縮減算力規(guī)模可使得整個(gè)模塊在保持精度的同時(shí)大幅提升推理速度。
大小超過1×1的卷積核才能體現(xiàn)感受野的作用,且卷積核越大感受野越大,所獲得的全局特征越完整,但卷積核過大會(huì)降低檢測速度。雖然大卷積核可以由連續(xù)的小卷積核代替,以增大網(wǎng)絡(luò)深度可以學(xué)到更多的特征(例如1 個(gè)7×7 的卷積核可以由3 個(gè)3×3 的卷積核代替),但同時(shí)也增加梯度消失和過擬合的風(fēng)險(xiǎn)。
本文在選擇卷積核時(shí),考慮精度與速度的性能平衡,避免算力和深度過大帶來的問題。如圖6 所示,在MobileNetv1[16]和MobileNetv2[17]上使用不同尺寸的卷積核進(jìn)行性能測試,初階段中卷積核越大模型精度越高,但當(dāng)卷積核的尺寸超過某一值后,模型的準(zhǔn)確率開始下降,因此選用的大卷積核應(yīng)設(shè)有尺寸上限。
圖6 不同大小的卷積核對(duì)模型精度的影響Fig.6 Effect of different sizes of convolution kernels on model accuracy
過多的大卷積核不利于算法在嵌入式設(shè)備上運(yùn)行,PP-YOLO[18]的卷積層均選用小卷積核,只在尾部使用5×5 的大卷積核,這與全局使用大卷積核的效果近似。基于以上分析,本文在主干網(wǎng)絡(luò)的尾部,最后一次壓縮特征圖時(shí)使用5×5的DWConv,而其他的卷積層皆為小卷積核,以確保模型低延遲和高準(zhǔn)確度的特性。依照此思想構(gòu)造的B-DownSample模塊使得分類模型的Acc提升0.07個(gè)百分點(diǎn),檢測模型的mAP提升0.11個(gè)百分點(diǎn)。
SPP 可在同一特征圖的不同尺度上提取特征并進(jìn)行池化操作,將任意尺寸的輸入圖像轉(zhuǎn)換為相同尺度的輸出。與YOLOv4-tiny基準(zhǔn)網(wǎng)絡(luò)不同,本文的改進(jìn)算法保留SPP 模塊,圖7(a)為多支路SPP 模塊,其中conv為卷積層,max 為最大池化層,n×n代表池化核大??;圖7(b)為YOLOv4 中的SPP 模塊,包含4 個(gè)支路,分別是3 個(gè)核大小不同的最大池化模塊和1 個(gè)跳躍連接,池化核大小分別為{5,9,13},該模塊將四個(gè)分支的特征圖進(jìn)行concat操作,然后傳至下一層;為使得YOLOv4-tiny算法更適合部署在嵌入式設(shè)備,構(gòu)建如圖7(c)所示的弱SPP模塊。弱SPP模塊融合多重感受野,利用局部特征和全局特征來提高目標(biāo)檢測的精度,在提升模型精度的同時(shí),(與YOLOv4中的SPP相比)節(jié)省約30%的算力。
圖7 SPP結(jié)構(gòu)對(duì)比圖Fig.7 SPP structure comparison diagram
本文的目標(biāo)檢測模型針對(duì)資源有限的嵌入式設(shè)備,實(shí)驗(yàn)平臺(tái)為RK3288開發(fā)板,其GPU為ARM Mail-T764,可連接USB攝像頭。使用caffe深度學(xué)習(xí)框架。通過Eclipse交叉編譯器、NEON指令、WinSCP和PUTTY軟件,實(shí)現(xiàn)模型從Windows操作系統(tǒng)到RK3288開發(fā)板的部署工作。
本文基于ImageNet數(shù)據(jù)集所搭建的分類網(wǎng)絡(luò)的初始學(xué)習(xí)率為0.1、權(quán)重衰減系數(shù)0.000 04、動(dòng)量為0.9、power為0.5;在訓(xùn)練過程中前1 000迭代次數(shù)使用warm-up機(jī)制,選擇性能最優(yōu)的模型作為目標(biāo)檢測的預(yù)訓(xùn)練模型?;贑OCO 數(shù)據(jù)集所搭建的檢測網(wǎng)絡(luò)的初始學(xué)習(xí)率為0.01、權(quán)重衰減系數(shù)為0.000 5、動(dòng)量為0.9,power為0.5;在訓(xùn)練過程中前1 000迭代次數(shù)使用warm-up機(jī)制,且前1 000 迭代次數(shù)特征提取部分的卷積全部設(shè)為不學(xué)習(xí),之后再放開學(xué)習(xí)。
YOLOv4中使用的Mosaic數(shù)據(jù)增強(qiáng)分為4個(gè)步驟:(1)每次從數(shù)據(jù)集中隨機(jī)讀取4 張圖像;(2)分別對(duì)4 張圖像隨機(jī)進(jìn)行翻轉(zhuǎn)、縮放、色域變化等操作;(3)將4 張圖像按順時(shí)針排放,然后利用矩陣的方式截取4張圖像的固定區(qū)域;(4)將截取區(qū)域拼接為一張新的圖像樣本,并變換對(duì)應(yīng)的標(biāo)簽。
原有的Mosaic 先將4 張圖像進(jìn)行普通的數(shù)據(jù)增強(qiáng)操作,然后將操作后的圖像拼接在一起,這導(dǎo)致模型的訓(xùn)練速度降低。原有的Mosaic利用隨機(jī)剪裁操作選定固定區(qū)域,但裁剪圖像時(shí)并未統(tǒng)計(jì)圖像中真實(shí)框(ground truth,GT)中心坐標(biāo)的均值,從而裁剪出殘缺的GT;并且會(huì)隨機(jī)截取出8(a)中無目標(biāo)或者圖8(c)中目標(biāo)過小的圖像塊,造成數(shù)據(jù)樣本的浪費(fèi),從而導(dǎo)致模型無法充分利用樣本,擬合數(shù)據(jù)時(shí)模型精度會(huì)有所損失。
圖8 改進(jìn)的Mosaic流程示意圖Fig.8 Schematic diagram of improved Mosaic process
為彌補(bǔ)原有Mosaic 數(shù)據(jù)增強(qiáng)的不足之處,本文對(duì)Mosaic數(shù)據(jù)增強(qiáng)進(jìn)行改進(jìn),改進(jìn)的Mosaic的流程如圖8所示,通過GT 和標(biāo)簽防止隨機(jī)截取出無目標(biāo)或者目標(biāo)過小的圖像塊;并且先不對(duì)圖像進(jìn)行普通數(shù)據(jù)增強(qiáng)等操作,而是Mosaic 之后再進(jìn)行翻轉(zhuǎn)、縮放、色域變化等操作。改進(jìn)的Mosaic效果圖如圖9所示,圖9(a)右下方的塔尖中并不包含檢測目標(biāo),而經(jīng)過改進(jìn)的Mosaic后,圖9(b)中每個(gè)圖像塊都包含有效的目標(biāo);圖9(c)左上方和左下方的目標(biāo)過小,而圖9(d)中篩選掉過小的目標(biāo)。改進(jìn)的Mosaic節(jié)省數(shù)據(jù)增強(qiáng)進(jìn)程的時(shí)間,且充分利用每個(gè)圖像塊以及過濾物體過小的目標(biāo),使得模型更易于訓(xùn)練。
圖9 改進(jìn)的Mosaic數(shù)據(jù)增強(qiáng)Fig.9 Improved Mosaic data augmentation
本次實(shí)驗(yàn)以準(zhǔn)確率(accuracy,Acc)、平均精度均值(mean average precision,mAP)和每秒傳輸幀數(shù)(frames per second,F(xiàn)PS)作為檢測模型的性能評(píng)價(jià)指標(biāo)。相關(guān)評(píng)價(jià)指標(biāo)的含義與計(jì)算公式如表2所示,mAP為平均精度(average precision,AP)的均值。在圖像的分類任務(wù)中,Acc常被用作衡量模型分類能力的指標(biāo),Acc值越大意味著模型的分類器越優(yōu)良;FPS指每秒處理圖像的數(shù)量,體現(xiàn)模型的運(yùn)算能力,F(xiàn)PS 值越大則模型的運(yùn)算能力越強(qiáng)大;mAP 是衡量模型的分類和檢測能力最直觀的指標(biāo),在很大程度上能夠同時(shí)體現(xiàn)模型的定位和分類能力,mAP值越大則說明模型性能更為優(yōu)異。
表2 相關(guān)評(píng)價(jià)指標(biāo)Table 2 Related evaluation indicators
本文的消融實(shí)驗(yàn)以YOLOv4-tiny為基準(zhǔn),驗(yàn)證改進(jìn)模塊分別在預(yù)訓(xùn)練階段和訓(xùn)練階段中的優(yōu)化作用。不同因素對(duì)分類網(wǎng)絡(luò)訓(xùn)練的影響結(jié)果如表3所列,每項(xiàng)改進(jìn)模塊均對(duì)分類模型有著不同程度的貢獻(xiàn),其中改進(jìn)模塊2引入的改進(jìn)Mosaic對(duì)網(wǎng)絡(luò)的貢獻(xiàn)略高于改進(jìn)模塊2的Mosaic。YOLOv4-tiny-CSPRDWConv 選用改進(jìn)的Mosaic、CSPRDWConv 計(jì)算模塊、B-DownSample 模塊(5×5 大卷積核的下采樣模塊),使得Acc 值較初始YOLOv4-tiny提高了0.87個(gè)百分點(diǎn)。
表3 分類網(wǎng)絡(luò)的消融實(shí)驗(yàn)結(jié)果Table 3 Results of ablation experiments for classification network
不同因素對(duì)檢測網(wǎng)絡(luò)的影響結(jié)果如表4,觀察mAP可知,表中所列的因素對(duì)檢測模型的影響均為正。YOLOv4-tiny-CSPRDWConv 引入改進(jìn)的Mosaic、CSPRDWConv 計(jì)算模塊、B-DownSample 模塊和弱SPP模塊,使得平均精度較YOLOv4-tiny基準(zhǔn)網(wǎng)絡(luò)增加0.94個(gè)百分點(diǎn)。將改進(jìn)模塊4的SPP替換為改進(jìn)模塊5的弱SPP 后,雖然平均精度下降了0.03 個(gè)百分點(diǎn),但運(yùn)算速度卻提升0.4 倍,犧牲微乎其微的精度來換取速度的大幅提升,以此達(dá)到精度與速度的最佳平衡。
表4 檢測網(wǎng)絡(luò)的消融實(shí)驗(yàn)結(jié)果Table 4 Results of ablation experiments for detection network
表4中,SPP模塊的池化核大小為{k=1,5,9,13},4條支路并行;弱SPP 模塊池化核的大小為{k=1,5,9},3條支路并行。
為更加具體、清晰地體現(xiàn)本文算法的速度優(yōu)勢,將改進(jìn)的YOLOv4-tiny模型與YOLOv3-tiny、YOLOv4-tiny以及YOLOv5n 等模型進(jìn)行對(duì)比實(shí)驗(yàn),模型使用相同的COCO數(shù)據(jù)集來進(jìn)行訓(xùn)練、驗(yàn)證。不同算法的性能對(duì)比結(jié)果如表5 所示,大型網(wǎng)絡(luò)算法(例如YOLOv4)的檢測精度明顯優(yōu)于輕量級(jí)網(wǎng)絡(luò)算法(例如ThunderS146 和YOLOv4-tiny);但是大型網(wǎng)絡(luò)算法的檢測速度較低,且模型體積過大,無法流暢地在嵌入式設(shè)備上運(yùn)行。本文提出的檢測模型在保證檢測精度的前提下,其檢測速度皆明顯快于當(dāng)下的主流檢測器。當(dāng)輸入大小為224×224時(shí),本文的模型抽取三個(gè)不同階段(7、14、28)的特征層進(jìn)行檢測,檢測精度提升0.61 個(gè)百分點(diǎn),檢測速度更是達(dá)到1 308 FPS,為YOLOv4-tiny的近4倍。引入改進(jìn)的Mosaic 較無Mosaic 時(shí)提升了0.91 個(gè)百分點(diǎn),這說明改進(jìn)的Mosaic適用于該輕量級(jí)網(wǎng)絡(luò)。
表5 GPU上的實(shí)驗(yàn)對(duì)比結(jié)果Table 5 Analysis of experimental results
將不同模型移植在RK3288 開發(fā)板上,得到如表6所列的性能結(jié)果對(duì)比,YOLOv4-tiny-CSPRDWConv網(wǎng)絡(luò)將卷積層和BN層融合在一起,并通過NEON指令將速度提高3倍;卷積層和BN層未融合時(shí),模型的推理時(shí)間為145.6 ms,融合之后的推理時(shí)間縮減至130.1 ms。YOLOv4-tiny-CSPRDWConv網(wǎng)絡(luò)的輸入大小為224×224時(shí),其平均精度比YOLOv3-tiny 增加4.8 個(gè)百分點(diǎn),檢測速度提升7 倍之多;相比于YOLOv4-tiny 網(wǎng)絡(luò),YOLOv4-tiny-CSPRDWConv網(wǎng)絡(luò)在平均精度提升0.61個(gè)百分點(diǎn)的基礎(chǔ)上,算力不及原有算力的三分之一,檢測速度加快四倍之多,該對(duì)比實(shí)驗(yàn)結(jié)果驗(yàn)證了本文改進(jìn)方法的有效性。
表6 檢測模型移植后的速度對(duì)比Table 6 Speed comparison after porting detection model
為進(jìn)一步驗(yàn)證本文模型在不同場景中的檢測能力,建立包含辦公室、酒店、電梯、戶外4 個(gè)場景的測試集。圖10 展示了不同場景下的實(shí)驗(yàn)效果,將收集到的圖像進(jìn)行目標(biāo)檢測,檢測結(jié)果圖則通過不同顏色的邊框加以區(qū)分。測試結(jié)果表明本模型適用于大目標(biāo)、小目標(biāo)、多目標(biāo)、交叉密集目標(biāo)以及多種復(fù)雜場景的目標(biāo)檢測,表現(xiàn)出優(yōu)良的泛化和精準(zhǔn)的定位能力,具有較高的實(shí)用價(jià)值。
圖10 目標(biāo)檢測結(jié)果圖Fig.10 Graph of target detection results
為使得可部署在嵌入式設(shè)備的YOLOv4-tiny算法更為輕量、快速、高效和精準(zhǔn),本文在原有的YOLOv4-tiny算法之上,提出一種基于CSPRDWConv 模塊的輕量級(jí)網(wǎng)絡(luò),并使用改進(jìn)的Mosaic 數(shù)據(jù)增強(qiáng)來提升檢測精度。除此之外,本文還在主干網(wǎng)絡(luò)的尾部即最后一次壓縮特征圖時(shí)使用5×5的深度可分離卷積(其他的卷積層皆為小卷積核);Neck中加入弱SPP模塊;并通過NEON指令對(duì)訓(xùn)練后的檢測模型進(jìn)行優(yōu)化,將卷積層與BN層融合。上述改進(jìn)技巧在保證檢測精度的同時(shí),大幅加快檢測模型的推理進(jìn)程。
實(shí)驗(yàn)表明,本算法在1080Ti的硬件上達(dá)到1 308 FPS的實(shí)時(shí)檢測速度,檢測速度為YOLOv4-tiny基準(zhǔn)網(wǎng)絡(luò)的近4 倍,mAP 達(dá)到22.31%,相比于基準(zhǔn)網(wǎng)絡(luò)提升了0.61個(gè)百分點(diǎn)。在RK3288開發(fā)板上的檢測速度約為8 FPS,mAP 為22.28%。雖然本文的改進(jìn)算法在RK3288 開發(fā)板上的檢測中,較其他相關(guān)目標(biāo)檢測算法更為流暢和高效,但對(duì)于一些性能更低的嵌入式設(shè)備本算法仍有待改進(jìn);且在小目標(biāo)檢測以及大面積遮擋檢測中,本文的改進(jìn)算法還存在一定的提升空間。下一步會(huì)將關(guān)注點(diǎn)集中在數(shù)據(jù)增強(qiáng)和強(qiáng)化學(xué)習(xí),并將實(shí)時(shí)的目標(biāo)檢測的面向?qū)ο笸茝V至更低端的邊緣嵌入式設(shè)備,從而開發(fā)出可部署在嵌入式系統(tǒng)的、性能更為優(yōu)良的輕量級(jí)目標(biāo)檢測算法。