張佳奇,郭 宣,李魏然,王勝科
(1.中國海洋大學 信息科學與技術(shù)學院,山東 青島 266100;2.青島第九中學,山東 青島,266000)
近年來,隨著無人機技術(shù)快速發(fā)展,無人機低空遙感成為了衛(wèi)星遙感數(shù)據(jù)的重要補充,被廣泛應用于農(nóng)業(yè)、安防、交通和戰(zhàn)場等領(lǐng)域。相較于衛(wèi)星遙感圖像,無人機圖像獨特的優(yōu)勢主要體現(xiàn)在便攜性好、成本較低及能實現(xiàn)多角度拍攝等方面。
目前,無人機目標檢測任務(wù)通常通過離線處理無人機拍攝的圖像或?qū)D像傳輸至服務(wù)器進行處理。然而,第一種方式并未充分利用無人機實時檢測分析的優(yōu)勢;第二種方式則依賴于網(wǎng)絡(luò),既需要考慮數(shù)據(jù)傳輸過程中的隱私保護問題,還需要承擔較高成本。此外,由于無人機圖像具有高分辨率特點,在實際應用場景中對自然場景的檢測算法效果不佳,無法直接應用于工業(yè)應用中。因此,改進現(xiàn)有目標檢測算法,在無人機上搭載的邊緣智能設(shè)備,實現(xiàn)在線分析高分辨率圖像這一功能是目前一大挑戰(zhàn),也具有重要的實際應用價值。
本文主要對無人機高分辨率圖像下的目標檢測算法與模型壓縮方法進行研究,結(jié)合具體硬件平臺進行模型部署實驗。主要工作如下:①通過分組卷積和通道混洗策略對目標檢測算法的主干網(wǎng)絡(luò)進行輕量化設(shè)計,結(jié)合通道注意力機制提升網(wǎng)絡(luò)精度;②在網(wǎng)絡(luò)剪枝層面,結(jié)合具體數(shù)據(jù)集對目標檢測模型進行通道剪枝;③針對無人機單類別檢測任務(wù)中目標實例尺寸相對固定的特點,對輸出部分進行優(yōu)化,最多可減少30%的參數(shù)量。
通過實驗與在實際硬件上的運行情況可知,本文方法相較于YOLOv5 算法,在無人機數(shù)據(jù)集VisDrone 和自建數(shù)據(jù)集OUC-UAV-DET 上的精度分別提升2%、4%,在英偉達硬件(Xavier)上推理速度約減1 ms。通過通道剪枝方法,能在保持算法精度的同時減少2 ms 的推理速度;對無人機單類別檢測任務(wù)中輸出部分進行相關(guān)優(yōu)化后,推理時間最多能減少2 ms。
通過對目標檢測算法的發(fā)展歷史進行研究后,將其劃分為傳統(tǒng)算法階段和深度學習階段。2012 年前,傳統(tǒng)目標檢測階段主要采用手工提取特征的方法。通過滑窗遍歷技術(shù),從整張圖像中提取有價值的特征,并利用支持向量機算法[1]或AdaBoost 分類方法[2]分類提取特征。此外,通過對整個圖像進行特征提取,能將目標檢測看作為回歸問題,從而實現(xiàn)快速預測。這兩種方法可看作為兩個階段目標檢測算法和單階段目標檢測算法的雛形。
早期,將卷積神經(jīng)網(wǎng)絡(luò)用到目標檢測領(lǐng)域的是Over-Feat[3],在此之前卷積神經(jīng)網(wǎng)絡(luò)已在圖像分類任務(wù)中取得了一定的成果。隨后,目標檢測主要分為以R-CNN 系列[4-6]為代表的兩階段目標檢測算法和以YOLO 系列為代表的單階段目標檢測算法。其中,R-CNN 系列算法通過劃分區(qū)域來檢測對象,并非同時檢測整張圖像。這種方式具有兩個特點:算法需要多次計算才能提取所有對象;在算法執(zhí)行過程中不同系統(tǒng)接替工作。因此,R-CNN 系列算法屬于兩階段算法。
單階段目標檢測算法(You Only Look Once,YOLO)的誕生是目標檢測領(lǐng)域的一次突破,即僅用單個神經(jīng)網(wǎng)絡(luò)預測圖像的類別概率和邊界框坐標[7]。由于算法自身只有一個神經(jīng)網(wǎng)絡(luò)可實現(xiàn)端到端優(yōu)化,這種端到端的統(tǒng)一檢測設(shè)計使得YOLO 架構(gòu)在推理過程中訓練更快,實現(xiàn)實時訓練,也保證了接近兩階段目標檢測算法的高平均精度。目前,最具代表性的YOLO 框架YOLOv5 已可滿足一般使用場景,但在無人機高分辨率圖像的場景下,邊緣設(shè)備上的推理速度無法滿足實際應用需求,其網(wǎng)絡(luò)結(jié)構(gòu)仍有壓縮和優(yōu)化空間。
2016 年來,由于實際應用需要,輕量化的卷積神經(jīng)網(wǎng)絡(luò)研究開始逐漸浮現(xiàn),為視覺深度學習模型在邊緣智能設(shè)備上的應用提供了可能性。其中,輕量級研究較為經(jīng)典的工作包括基于深度可分離卷積的MobileNet 系列[8-10]。在ShuffleNetv2[11]中,從內(nèi)存訪問代價和顯卡并行性方向分析了如何設(shè)計卷積神經(jīng)網(wǎng)絡(luò),才能進一步減少運行時間,并提出輕量化網(wǎng)絡(luò)設(shè)計的4 條準則及CSPNet[12]、VoVNet[13]、RepVGG[14]、GhostNet[15]等 輕量化網(wǎng)絡(luò) 結(jié)構(gòu)。此外,模型壓縮方式還包含神經(jīng)網(wǎng)絡(luò)剪枝、知識蒸餾等從大模型中產(chǎn)生小模型的方法。
綜上,本文使用分組卷積與通道混洗策略對檢測算法YOLOv5 的主干網(wǎng)絡(luò)進行輕量化設(shè)計,既使用通道注意力機制提升網(wǎng)絡(luò)精度,又在網(wǎng)絡(luò)剪枝層面結(jié)合具體數(shù)據(jù)集對檢測模型進行通道剪枝。此外,對于無人機單類別檢測任務(wù),針對其目標實例尺寸相對固定的特點優(yōu)化了模型的輸出部分。
本文對YOLOv5 的主干網(wǎng)絡(luò)進行改進,主要基于分組卷積通道混洗策略和深度可分離卷積。圖1 展示了網(wǎng)絡(luò)的整體結(jié)構(gòu),該網(wǎng)絡(luò)去除了Fcous 結(jié)構(gòu),使用S1、S2 模塊替代YOLOv5 中的C3 模塊,在頸部采用更簡單的直接相加方式進行特征融合。
Fig.1 Overall structure of the network圖1 網(wǎng)絡(luò)整體結(jié)構(gòu)
YOLOv5 在輸入層后引入一種名為Focus 的結(jié)構(gòu),如圖2 所示。該結(jié)構(gòu)對特征圖進行間隔取樣得到4 個圖像,并將它們連接起來以使通道數(shù)量增加4 倍;然后通過卷積操作生成新的特征圖,以便在下采樣后保留所有空間信息。實際上,在淺層網(wǎng)絡(luò)中該結(jié)構(gòu)的效果并不顯著,主要從減少計算量和參數(shù)量角度所設(shè)計。
Fig.2 Fcous module圖2 Fcous模塊
為此,本文使用3×3 的卷積網(wǎng)絡(luò)替代Focus 結(jié)構(gòu),盡管Focus 結(jié)構(gòu)的設(shè)計初衷是為了減少計算量和參數(shù)量,但實驗證明使用卷積替代Focus 可獲得更好的效果。特別是,對于不含GPU 和NPU 加速的芯片,頻繁的切片操作會增加緩存占用、加重計算負擔,導致在部署時,許多推理框架無法高效適配Focus的高性能算子。
本文使用3×3 卷積網(wǎng)絡(luò)在改造目標檢測網(wǎng)絡(luò)時,充分考慮了網(wǎng)絡(luò)輕量化設(shè)計的4 個準則[11]:①使用相同的通道尺寸可最小化內(nèi)存訪問量;②避免過度使用分組卷積;③避免網(wǎng)絡(luò)過于碎片化;④不能忽略元素間的操作(例如shortcut、Add)。
YOLOv5 的主干網(wǎng)絡(luò)主要由C3 層組成,該層是CSP 結(jié)構(gòu)改進后的版本,在與CSP 近乎相似的損耗上能取得更好的結(jié)果。然而,YOLOv5 因多次使用高通道數(shù)通道的C3層,將導致中間層通道之間的階躍差距較大。根據(jù)準則①可知,高通道數(shù)的C3 層對CPU 性能并不友好。為了解決這個問題,本文將整個特征圖按通道分為c'、c -c'兩個部分,主要有以下優(yōu)點:將整個特征圖分為兩組,這種分組方式與分組卷積不同,不會增加卷積時的組數(shù),符合準則②;經(jīng)過特征圖分組后,將c'組通過短連接通道,而c -c'組經(jīng)過一系列卷積層后,使輸入輸出通道數(shù)保持一致,符合準則①。
在特征融合部分,本文依然采用特征金字塔網(wǎng)絡(luò)和路徑聚合結(jié)構(gòu)。為了滿足準則①中的最優(yōu)化內(nèi)存訪問和使用,在路徑聚合結(jié)構(gòu)采用相同的通道數(shù)進行特征圖融合,使用特征圖直接相加的方式實現(xiàn)特征圖融合。
注意力機制在深度神經(jīng)網(wǎng)絡(luò)中可被看作是一個對象選擇過程。SENet[16]開創(chuàng)了通道注意力的先河,核心是一個用來收集全局信息的壓縮和激勵模塊。
首先,全局空間信息通過全局平均池化層匯集到壓縮模塊中,激勵模塊使用全連接層和非線性激活函數(shù)獲得注意力向量;然后,輸入特征的每個通道通過乘以注意力向量進行加權(quán)。此外,SE 模塊能起到強調(diào)重要通道并抑制噪音的作用,缺點是在壓縮模塊中,全局平均池化無法很好的提取復雜的全局信息。同時,在激勵模塊中,兩個全連接層增加了模型復雜性。
對于本文而言,通道注意力機制的重要作用是降低模型的復雜性。為了在被分割后的混洗通道中恢復被打亂的通道信息,促進通道間信息的交流,提升模型檢測性能。本文受SENet 啟發(fā),在S1 與S2 模塊中添加通道注意力eSE模塊,如圖3 所示。同時,為了提升SE 模塊的執(zhí)行效率,本文將SENet 中兩個全連接層替換為一個點卷積,以降低模型的復雜性,提升執(zhí)行效率。由特征圖的可視化(見圖4,彩圖掃OSID 可見,下同)可見,注意力機制對模型存在積極影響。
Fig.3 eSE module圖3 eSE 模塊
Fig.4 Visualization results of feature maps圖4 特征圖可視化結(jié)果
剪枝技術(shù)可分為結(jié)構(gòu)化剪枝和非結(jié)構(gòu)化剪枝。其中,非結(jié)構(gòu)化剪枝技術(shù)可有效平衡參數(shù)數(shù)量和模型性能,但由于網(wǎng)絡(luò)拓撲結(jié)構(gòu)的變化,需要特殊硬件設(shè)備支持其正確運行。相比之下,結(jié)構(gòu)化剪枝技術(shù)可顯著減少網(wǎng)絡(luò)中濾波器組和特征通道數(shù)量,使模型高效運行,無需復雜的算法設(shè)計和特殊的硬件。為此,本文采用批量歸一化層系數(shù)評估每個通道網(wǎng)絡(luò)參數(shù)的重要性,以實現(xiàn)對網(wǎng)絡(luò)的結(jié)構(gòu)化剪枝。
批量歸一化可將每個層的神經(jīng)元輸出標準化,以維持激活值的分布穩(wěn)定,從而加快模型訓練速度,有效抑制過擬合現(xiàn)象發(fā)生。批量歸一化的主要優(yōu)點之一是有助于穩(wěn)定深度神經(jīng)網(wǎng)絡(luò)訓練。深度神經(jīng)網(wǎng)絡(luò)對權(quán)重的初始化非常敏感,不良的初始權(quán)重會導致訓練難以收斂,而批量歸一化可減少神經(jīng)網(wǎng)絡(luò)對權(quán)重初始化的敏感性,使訓練過程更穩(wěn)定。此外,通過批量歸一化還可有效改善神經(jīng)網(wǎng)絡(luò)的性能。在訓練過程中,由于輸入分布的變化,網(wǎng)絡(luò)可能產(chǎn)生不準確的預測結(jié)果,而批量歸一化可有效減少內(nèi)部協(xié)變量偏移,從而提升神經(jīng)網(wǎng)絡(luò)預測的準確性。
批量歸一化層的計算公式如式(1)所示,每個通道的輸出值zout與系數(shù)γ呈正相關(guān),在γ接近于0 時激活值非常小。本文假設(shè)去掉γ趨于0 的通道,對于模型的影響不大,并且實際實驗結(jié)果也符合預想。
由于不同數(shù)據(jù)集批量歸一化層系數(shù)分布的規(guī)律不同,可通過增加約束方法使其符合要求。在OUC-UAV-DET數(shù)據(jù)集上訓練發(fā)現(xiàn),批量歸一化層的系數(shù)呈正態(tài)分布,但其期望并不在0 附近,無法直接根據(jù)γ進行剪枝。因此,本文在損失函數(shù)中添加L1 正則約束,嘗試將批量歸一化層的系數(shù)分布期望調(diào)整到0附近。
其中:第一項是正常訓練的損失函數(shù);第二項是正則化約束;g(s)=|s|;λ為正則系數(shù)。
在反向傳播時,損失函數(shù)的導數(shù)由式(3)所示。
在添加正則項后,隨著訓練進行,批量歸一化層參數(shù)正態(tài)分布的期望趨向于0,此時可進行剪枝操作。在設(shè)定γ閾值時,應不能大于任何通道批量歸一化層的最大γ,通過該閾值可有效剪除低于閾值的通道。通常情況下,剪枝結(jié)束后還需要重新訓練模型以恢復模型精度。
YOLOv5 結(jié)構(gòu)在網(wǎng)絡(luò)的3 個或4 個不同階段輸出檢測結(jié)果。其中,3 個輸出層對應的輸出由上至下分別通過P3、P4 和P5 進行表示,第4 個輸出根據(jù)具體情況可能會由P2 或P6 進行表示。當輸入圖像大小為640×640 時,經(jīng)過8倍下采樣的P3 檢測層特征圖大小為80×80,特征圖中每個像素點可檢測原始大小在8×8 像素以上的目標。以此類推,P4 經(jīng)過16 倍下采樣負責檢測16×16 以上的目標,P5 經(jīng)過32 倍下采樣負責檢測16×16 以上的目標。圖5 為對原始的YOLOv5輸出層剪枝后的輸出結(jié)構(gòu)。
在VisDrone 數(shù)據(jù)集、OUC-UAV-DET 數(shù)據(jù)集中,某些類別的樣本尺寸相對固定。本文認為在檢測尺寸相對固定的類別時,對多個尺度的特征進行融合并不能提升模型性能。為此,本文針對YOLO 的輸出層進行剪枝,表1 為YOLOv5s 模型通過裁剪掉輸出層對參數(shù)量和計算量的影響。
本文使用的數(shù)據(jù)集包括VisDrone 數(shù)據(jù)集和中國海洋大學無人機目標檢測(OUC-UAV-DET)數(shù)據(jù)集。
VisDrone 航拍小目標數(shù)據(jù)于2018 年提出,旨在為無人機應用場景下的物體檢測提供一個相對通用和全面的大規(guī)模數(shù)據(jù)集。該數(shù)據(jù)集包含10 209 張靜態(tài)圖像(6 471 張用于訓練,548 張用于驗證,1 610 張用于測試及1 580 張未標注的圖像),主要關(guān)注人類和車輛,并定義了直立行人、非站立狀態(tài)的人、小汽車、貨車、公共汽車、卡車、面包車、自行車、遮陽蓬三輪車和三輪車共10 個感興趣的對象類別。
中國海洋大學無人機目標檢測(OUC-UAV-DET)數(shù)據(jù)集由中國海洋大學視覺實驗室采集和標注。該數(shù)據(jù)集主要在校園、海灘和街道等人車密集的場所拍攝,采用大疆無人機作為圖像采集設(shè)備。目前,該數(shù)據(jù)集包括2 071張高分辨率的靜態(tài)圖像,包括人、自行車、汽車、面包車、貨車、自行車、公共汽車、摩托車和船共9類目標。
本文訓練的GPU 為2080Ti(顯存12 GB),部署時使用英偉達的Jetson AGX Xavier 平臺,算力為30 Tops,最大功耗為30 W。實驗的操作系統(tǒng)為Ubuntu18.4,安裝了包括TensorRT 8.5.2、cuDNN 8.6.0、CUDA 11.4.19、OpenCV 4.5.4等軟件庫的JetPack5.1軟件包。
在目標檢測中,平均值(Average Precision,AP)、均值平均精度(mean Average Percision,mAP)是兩個重要的衡量指標[17,18],mAP 為AP 值除以類別數(shù),由式(1)所示。mAP@50 值指交并比閾值為0.5 的mAP,mAP@50∶95 指交并比閾值分別在0.5 與0.95 之間每隔0.05 的mAP 的平均值,AP 為準確率—召回率曲線下的面積。
PR 曲線由改變IOU 閾值產(chǎn)生的多組準確率與召回率,在平面坐標系下對應的點連接而成。目前,主流計算PR 曲線下面積(即AP)的方式有VOC 數(shù)據(jù)集和COCO 數(shù)據(jù)集的計算方式。本文使用COCO 方式進行AP 計算,實驗時延指推理時間與非極大值抑制耗時的總和。
表2 為本文方法與原始YOLOv5 的比較結(jié)果。由此可知,本文方法相較于YOLOv5n 及其他模型精度更高,推理速度更快,更適用于無人機實時檢測場景,體現(xiàn)了本文設(shè)計網(wǎng)絡(luò)的優(yōu)越性。表3 的消融實驗證明,添加高效的注意力模塊(eSE)和使用ADD 進行特征融合,能有效提升模型的mAP,降低時延。表4 為使用批量歸一化層的通道剪枝方法后,YOLOv5s 在OUC-UAV-DET 數(shù)據(jù)集上的測試結(jié)果。由此可知,當閾值為0.65 時模型精度大幅下跌,且速度提升已不明顯,因此本文選用0.6為剪枝閾值。
Table 2 Model evaluation on the VisDrone dataset表2 VisDrone數(shù)據(jù)集模型評估
Table 3 Ablation experiments表 3 消融實驗
Table 4 Channel pruning results on the OUC-UAV-DET dataset表4 OUC-UAV-DET 數(shù)據(jù)集通道剪枝結(jié)果
由表5 可知,單類目標的YOLO 輸出層剪枝在Vis-Drone 數(shù)據(jù)集和OUC-UAV-DET 數(shù)據(jù)集上的可行性,在只保留P3 層的情況下模型精度并未下降,只在P3 層輸出時的檢測效果甚至更好,證實了在檢測尺寸相對固定的類別時,對多個尺度的特征進行融合并不能提升模型性能。
Table 5 Comparison of vehicle detection using different output layers表5 車輛檢測使用不同輸出層比較
模型轉(zhuǎn)換后,模型精度略微下降,可能是由于單精度(fp32)浮點數(shù)轉(zhuǎn)半精度(fp16)浮點數(shù)所帶來的損失。表6為各模型在邊緣設(shè)備Xavier 上的性能,結(jié)果與表2 類似。由此可知,本文改進的輕量化目標檢測模型在VisDrone 與OUC-UAV-DET 數(shù)據(jù)集上的表現(xiàn)優(yōu)于YOLOv5、YOLOv6及YOLOv7 的輕量版本。表7 展示了推理一張高分辨率的4 000×2 250 圖像,從端到端所消耗的時間及幀率。由此可知,本文方法理論上可達到6.1 FPS的預測速度。
Table 6 Model performance on Jetson platform表6 Jetson 平臺模型性能
Table 7 Inference speed of the model on Jetson platform(high-resolution image cropping)表7 Jetson 平臺模型推理速度(高分辨率圖像切圖)
本文從輕量化網(wǎng)絡(luò)設(shè)計與模型剪枝方向出發(fā),對Vis-Drone 數(shù)據(jù)集與OUC-UAV-DET 全類別和特定類別進行優(yōu)化,從模型與算法層面提升了無人機目標檢測算法的性能。通過輕量化改造YOLOv5 的主干網(wǎng)絡(luò),引入了一種更高效的通道注意力機制提升網(wǎng)絡(luò)精度。實驗證明,該方法在公開無人機數(shù)據(jù)集VisDrone 和自建數(shù)據(jù)集OUC-UAVDET 上,能在保持較高精度的基礎(chǔ)上具備更快的推理速度。
同時,本文針對無人機單類別檢測任務(wù)中目標實例尺寸相對固定的特點,采用網(wǎng)絡(luò)剪枝方法減少網(wǎng)絡(luò)輸出層,結(jié)合OUC-UAV-DET 數(shù)據(jù)集中批量歸一化層系數(shù)服從正態(tài)分布的規(guī)律,在損失函數(shù)中添加正則項,逐漸將批量歸一化層系數(shù)分布的期望值趨于0。然后,根據(jù)批量歸一化層的系數(shù)絕對值大小,評估網(wǎng)絡(luò)中各通道的重要性,并根據(jù)閾值對不重要通道進行裁剪。實驗證明,兩種剪枝方式在相關(guān)數(shù)據(jù)集上取得了良好的成效。
此外,本文在英偉達Jetson 平臺上對模型進行部署和測試,結(jié)果表明在邊緣智能設(shè)備上,本文設(shè)計的輕量化目標檢測模型和剪枝方法均取得了一定成效?;诖舜窝芯?,能使人們深入理解和掌握無人機目標檢測算法和應用,為無人機目標檢測應用提供重要的技術(shù)支持。未來,將進一步擴充高分辨率航拍圖像的數(shù)據(jù)量,通過更多實際場景數(shù)據(jù)提升模型的泛化性,以應對在不同場景的實際檢測過程中可能遇到的問題。