趙永輝, 呂 勇, 劉雪妍, 萬曉玉, 郭淳宇, 劉淑玉
(東北林業(yè)大學(xué)信息與計算機工程學(xué)院,哈爾濱 150000)
目標(biāo)檢測一直是圖像處理以及計算機視覺領(lǐng)域的熱門研究方向,隨著航空遙感技術(shù)的發(fā)展,遙感圖像目標(biāo)檢測已經(jīng)廣泛應(yīng)用于社會安全、林業(yè)工程、防災(zāi)救災(zāi)、地表水監(jiān)測、軍事國防[1]等諸多領(lǐng)域。由此可見,遙感圖像目標(biāo)檢測具有重大的研究意義以及廣闊的應(yīng)用前景。
遙感圖像目標(biāo)檢測研究在目標(biāo)檢測領(lǐng)域一直備受關(guān)注。2021年,蘭旭婷等[2]提出了以ResNet50為特征提取的SSD網(wǎng)絡(luò)模型,并在此基礎(chǔ)上加入CBAM注意力機制模塊以及特征融合模塊,達到了更加有效的檢測效果;2022年,馬梁等[3]提出一種動態(tài)選擇機制的特征提取網(wǎng)絡(luò),并且融合自適應(yīng)加權(quán)的FPN模塊,在遙感圖像小目標(biāo)檢測方面取得了很好的檢測效果;同年,王成龍等[4]提出了一種基于深度可分離卷積的遙感圖像目標(biāo)檢測算法,通過采用輕量級網(wǎng)絡(luò)作為主干提取網(wǎng)絡(luò),并設(shè)計深度可分離卷積PANet模塊,有效減少了模型的參數(shù)量,提高檢測速度。
目前深度學(xué)習(xí)主要通過GPU進行訓(xùn)練和推理,達到硬件加速的效果,但GPU存在功耗較大的問題。以Tesla V100為例,其功耗為250 W,若選擇GPU進行模型推理,雖然可以達到實時檢測的效果,但難以部署到無人機、衛(wèi)星這些重量、算力、內(nèi)存和功率受限的平臺[5],因此,需要選擇合適的硬件平臺作為邊緣端部署的平臺。FPGA以其低功耗、高性能、并行運算的特點,成為GPU的替代品,并且相比于專用集成電路(ASIC)有著靈活性高、價格低的特點。
2022年,陳朋等[6]提出一種以SSD為基礎(chǔ),融合深度可分離卷積和通道注意力機制的網(wǎng)絡(luò)模型,并將該網(wǎng)絡(luò)在ZCU 102上完成了優(yōu)化與部署;同年,譚金林等[7]以YOLOv3為網(wǎng)絡(luò)模型提出基于FPGA的軟硬件協(xié)同加速框架實現(xiàn)遙感圖像目標(biāo)檢測,網(wǎng)絡(luò)模型經(jīng)過FPGA推理加速后FPS達到26.8 幀/s。
綜上,本文提出以YOLOv4為基礎(chǔ),采用MobileNetv2作為特征提取網(wǎng)絡(luò),融合深度可分離卷積和CA注意力機制的網(wǎng)絡(luò)模型,并且基于FPGA完成模型部署。在滿足實時性檢測的同時,確保模型檢測精度,降低功耗。
YOLOv4以CSPDarkNet53作為特征提取網(wǎng)絡(luò),該網(wǎng)絡(luò)通過特征金字塔結(jié)構(gòu)預(yù)測不同尺寸目標(biāo)。通過參考ResNet殘差結(jié)構(gòu),在一些特定層之間設(shè)置跳轉(zhuǎn)連接,保持了較好的檢測精度,但是其參數(shù)量和計算量都較大[8]。為了減少模型參數(shù)量,本文選擇對模型的特征提取網(wǎng)絡(luò)進行替換,同時采用深度可分離卷積的PANet[9]結(jié)構(gòu),改進后的模型如圖1所示。
使用MobileNetv2代替CSPDarkNet53作為特征提取網(wǎng)絡(luò),該網(wǎng)絡(luò)是Google公司于2018年推出的一款輕量級卷積神經(jīng)網(wǎng)絡(luò),在嵌入式設(shè)備有著優(yōu)異的性能表現(xiàn)。MobileNetv2通過采用倒殘差結(jié)構(gòu)對輸入特征矩陣的1×1卷積進行升維,增加通道的大小,然后使用3×3的DW(Depth-Wise)卷積核進行卷積處理,最后通過1×1的卷積核進行降維,從而減少模型參數(shù)量。
深度可分離卷積在卷積神經(jīng)網(wǎng)絡(luò)模型中有著廣泛的應(yīng)用,它由逐點卷積和逐通道卷積組成,即插即用、方便部署、簡單高效,可使網(wǎng)絡(luò)模型進一步輕量化[10]。
對于傳統(tǒng)卷積,假設(shè)給定一個尺寸為hi×wi×di的輸入特征圖,其中,hi,wi,di分別為張量的高度、寬度和輸入通道數(shù)。卷積核的大小為K∈Rk×k×di×dj,可以產(chǎn)生一個hi×wi×di的輸出特征圖,它所需要的計算量為hi×wi×di×k×k×dj,而深度可分離卷積僅僅需要hi×wi×di×(k2+dj)的計算量,其中,k為卷積核尺寸,dj為輸出通道數(shù)。由此可見,與傳統(tǒng)卷積相比,深度可分離卷積能夠減少近乎k2的計算量。
神經(jīng)網(wǎng)絡(luò)中的注意力機制是在計算能力有限的情況下,將計算資源分配給更重要的任務(wù),同時解決信息超載問題的一種資源分配方案。眾多研究表明,注意力機制在各類計算機視覺任務(wù)中有著出色的表現(xiàn),常見的注意力機制有SE,CA,CBAM,ECA,SimAM等。
Mobile Network的研究表明,以SE為代表的通道注意力機制雖然能夠顯著提升模型性能,但也存在空間位置信息被忽視的問題,而空間位置信息對于生成空間選擇性注意圖非常重要[11]。CA注意力機制通過將位置信息嵌入到通道注意力中,使MobileNet可以處理大區(qū)域,并且不會帶來大的計算量,CA注意力機制在改進后的模型中的添加位置如圖1所示。CA注意力機制可以被看成是一個旨在增強MobileNet學(xué)習(xí)特征的計算機單元,網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
CA注意力機制主要包含下面兩個步驟。
1) 信息嵌入。
全局池化操作一般用于通道注意力機制中對空間信息進行全局編碼,但它將全局空間信息壓縮在通道描述符中,所以難以保存位置信息,而位置信息對于捕捉視覺任務(wù)中的空間結(jié)構(gòu)極其重要。信息嵌入操作則是對于給定的輸入,使用全局池化對兩個空間范圍(H,1)或(1,W)分別沿水平和垂直坐標(biāo)對通道進行編碼,第c通道在高度h處的輸出可表示為
(1)
第c通道在寬度W處的輸出可以表示為
(2)
2) 注意力生成。
首先,將式(1)、式(2)所生成的特征圖進行拼接,然后,送往1×1的卷積核和激活函數(shù)得到
f=δ(F1([zh,zw]))
(3)
gh=δ(Fh(fh))
(4)
gw=δ(Fw(fw))
(5)
根據(jù)式(4)、式(5)可得gh和gw,對其進行廣播變換得到C×H×W的維度后和輸入特征圖相乘,得到最后輸出的注意力特征
(6)
CA注意力機制通過在生成注意力操作時沿著空間維度對zh和zw進行拼接,一定程度上解決了長距離依賴問題。
數(shù)據(jù)增強是一種用于提高目標(biāo)檢測模型魯棒性的非常重要的手段。針對VisDrone 2019復(fù)雜的檢測背景,本文采取Grid Mask(GM)和Mosaic相結(jié)合的方式進行數(shù)據(jù)增強,提高模型魯棒性。
GM算法屬于信息刪除類的數(shù)據(jù)增強算法,這類算法特別要注意對圖像信息刪除的把握程度。以Cutout算法為例,它只針對圖像某一塊連續(xù)區(qū)域進行刪除,這樣很容易出現(xiàn)刪除整個目標(biāo)或者目標(biāo)完全沒有刪除的情況,如圖3所示。
圖3 Cutout失敗案例
過多刪除圖像信息會導(dǎo)致剩余圖像信息無法表達目標(biāo)信息,成為噪聲數(shù)據(jù);而過少刪除圖像信息會導(dǎo)致目標(biāo)不受影響,這樣無法起到提高模型魯棒性的作用。
針對這類問題,GM算法以原有信息刪除算法為基礎(chǔ),采用均勻分布的正方形區(qū)域?qū)D像信息刪除,這樣就不會對圖像連續(xù)的大區(qū)域進行刪除。Mosaic算法通過隨機的方式選中數(shù)據(jù)集中的4張圖片進行剪裁、縮放、翻轉(zhuǎn),并將它們拼接成一張新的圖片送進模型進行訓(xùn)練,從而達到提高模型魯棒性的效果。對VisDrone 2019數(shù)據(jù)集部分圖片進行GM-Mosaic數(shù)據(jù)增強的效果如圖4所示。
圖4 數(shù)據(jù)增強
如圖5所示,Vitis AI開發(fā)環(huán)境可以在Xilinx的硬件平臺上實現(xiàn)AI網(wǎng)絡(luò)模型的推理加速。開發(fā)環(huán)境包含IP核、Vitis AI工具庫、AI網(wǎng)絡(luò)模型和設(shè)計示例。Vitis AI以其高效性和易用性為核心,旨在通過Xilinx的FPGA和自適應(yīng)加速卡來釋放AI網(wǎng)絡(luò)模型加速的全部潛力。為解決遙感圖像目標(biāo)檢測模型部署困難的問題,本文采用FPGA和ARM結(jié)合的加速平臺Xilinx Zynq UltraScale+MPSoC實現(xiàn)模型的邊緣端部署。
1.4.1 DPU架構(gòu)
深度學(xué)習(xí)處理器(DPU)是針對神經(jīng)網(wǎng)絡(luò)模型優(yōu)化的可編程加速器,由眾多IP核組成,這些IP核可以通過硬件編程實現(xiàn),無需布局布線。DPU支持深度學(xué)習(xí)的眾多基本操作,如卷積、池化、全連接、激活等。Vitis AI為Xilinx的Kria KV260、Versal卡、Alveo卡等提供一系列的DPU,可以根據(jù)應(yīng)用對DPU的參數(shù)進行配置,DPU架構(gòu)參數(shù)如表1所示。結(jié)合KV260的邏輯資源和網(wǎng)絡(luò)模型的參數(shù),選取B4096作為DPU架構(gòu)內(nèi)核。
表1 DPU參數(shù)
1.4.2 模型量化
訓(xùn)練得到的權(quán)重和激活值為浮點數(shù),不利于FPGA運算,所以需要進行量化處理。選擇Vitis AI對網(wǎng)絡(luò)進行量化,量化器流程如圖6所示。采用Int8定點量化對算法模型進行優(yōu)化,將32位的浮點數(shù)轉(zhuǎn)為8位整數(shù)的格式。
在Vitis AI量化器中,TensorFlow2 量化器支持使用訓(xùn)練后量化(PTQ)和量化感知訓(xùn)練(QAT) 兩種不同方案來量化深度學(xué)習(xí)模型。選取PTQ方案進行模型量化實驗,PTQ 是一種將預(yù)訓(xùn)練的浮點模型轉(zhuǎn)換為量化模型的技術(shù),將1000幅圖像作為校準(zhǔn)的代表性校準(zhǔn)數(shù)據(jù)集對浮點模型運行幾批次進行推斷,以獲得激活的分布。
圖6 Vitis AI量化流程
1.4.3 模型編譯與部署
Vitis AI套件中的編譯器可以執(zhí)行量化后網(wǎng)絡(luò)的編譯操作,其中包含解析器、優(yōu)化器和代碼生成器。圖7顯示了Vitis AI編譯器(VAL_C)的簡單框架,對經(jīng)過優(yōu)化和量化的輸入模型的拓撲結(jié)構(gòu)進行解析后,VAL_C會構(gòu)建內(nèi)部計算圖作為中間表示(Intermediate Representation,IR)形式,同時會以此為基礎(chǔ)進行控制流和數(shù)據(jù)流的構(gòu)建,接著會以計算圖為基礎(chǔ)進行編譯和優(yōu)化操作。
最后,代碼生成器會將優(yōu)化后的計算圖映射為包含網(wǎng)絡(luò)模型、模型權(quán)重、模型參數(shù)信息的DPU指令流文件,該文件即可部署到KV 260上。
圖7 Vitis AI編譯器框架
實驗采用VisDrone 2019作為數(shù)據(jù)集,基于Ubuntu16.04操作系統(tǒng),集成開發(fā)環(huán)境為PyCharm專業(yè)版,Python版本為3.8,深度學(xué)習(xí)框架為TensorFlow2,Vitis AI版本為Vitis AI 2.5,硬件平臺GPU為Tesla V100和RTX 2060,CPU為AMD R7-4800H,FPGA選用Xilinx Kria K260。輸入圖像尺寸為416×416(單位:像素),batch-size為16,采用GM算法和Mosaic算法進行數(shù)據(jù)增強,初始學(xué)習(xí)率設(shè)為0.0005,優(yōu)化器為SGD,通過余弦退火策略進行學(xué)習(xí)率的動態(tài)調(diào)整。
本文采用平均精度均值(mAP)對目標(biāo)檢測效果進行評測,mAP是平均精度(AP)的平均值,模型檢測的所有類別都可以由精確率(P)和召回率(R)繪制出一條曲線,這條曲線與坐標(biāo)軸所圍成的面積就是AP;采用參數(shù)量來衡量模型大小;采用FPS對檢測速度進行評測;采用平均功耗對功耗指標(biāo)進行評測。相關(guān)算式為
(7)
(8)
(9)
(10)
(11)
其中:n為檢測圖片的張數(shù);T為檢測消耗的時間;FFPS為單位時間內(nèi)檢測到圖片數(shù),FPS越高,檢測速度越快;FP為假樣本,是目標(biāo)檢測任務(wù)中檢測到的目標(biāo)類別與真實類別不一致的樣本;TP為真樣本,表示檢測到的目標(biāo)類別與真實類別一致的樣本;FN為假負樣本,表示實際存在但卻未被檢測到的樣本;PAP為平均精度;PmAP為平均精度均值;N為檢測類別數(shù)量。
2.3.1 消融實驗結(jié)果分析
為驗證模型優(yōu)化的效果,對實驗中的特征提取網(wǎng)絡(luò)、卷積模塊、注意力機制、數(shù)據(jù)增強進行消融實驗,實驗結(jié)果如表2所示,表中,“√”和“×”分別表示采用和未采用該改進方法。
表2 消融實驗結(jié)果
由表2中數(shù)據(jù)可知,在進行特征提取網(wǎng)絡(luò)的替換以及采用深度可分離卷積的操作后,模型精度出現(xiàn)了下降,模型參數(shù)量也得到了大幅的減少,對比原模型參數(shù)量減少83.61%。添加注意力機制后,檢測精度得到了一定的提高,對比只進行特征提取網(wǎng)絡(luò)更換和采用深度可分離卷積的模型提高了3.18個百分點,并且參數(shù)量并未有明顯的增加。最后,在進行數(shù)據(jù)增強操作后,模型檢測精度進一步得到了提高。本文算法同時使用4種改進方案,檢測精度達到15.36%,相比于原YOLOv4模型有所下降,但是參數(shù)量僅為10.53×106,減少了83.56%。可以清楚地看到,每一個改進方案都起到了重要的作用,它們相輔相成,最終在模型參數(shù)量和檢測精度指標(biāo)上表現(xiàn)優(yōu)異。
圖8為改進前后的部分遙感圖像目標(biāo)檢測結(jié)果對比圖。
圖8 YOLOv4改進前后檢測效果對比
由圖8可以看出,原YOLOv4模型對于非完整目標(biāo)檢測效果一般,部分小目標(biāo)出現(xiàn)漏檢情況,如圖8(a)中的motor類別;而改進后的網(wǎng)絡(luò)對于被遮蔽目標(biāo)的檢測效果有明顯提高,如圖8(b)所示。由此證明了本文改進算法的有效性。
2.3.2 目標(biāo)檢測算法實驗對比
為驗證本文設(shè)計方案的優(yōu)越性,選取目前主流的目標(biāo)檢測算法(SSD,Faster R-CNN,RetinaNet,Centernet,YOLOv3)與本文改進的模型進行實驗對比,實驗結(jié)果如表3所示。
表3 模型對比實驗結(jié)果
在Tesla V100上,本文算法的mAP為15.36%,參數(shù)量為10.53×106,檢測速度為112.13幀/s。與SSD,Retina-Net,Centernet,YOLOv3相比,精度分別提高6.28個百分點、3.91個百分點、2.15個百分點、3.31個百分點,參數(shù)量分別減少了57.57%、70.82%、67.82%、82.91%,檢測速度分別提高了9.61%、15.94%、19.95%、105.55%。與兩步檢測法Faster R-CNN相比,本文算法的mAP雖然降低了1.15個百分點,但是參數(shù)量卻減少了92.3%,同時檢測速度提高了63.67%。本文算法雖然沒有取得最好的檢測效果,但是在參數(shù)量和檢測速度指標(biāo)上均取得了最好的表現(xiàn),這對于在嵌入式設(shè)備端完成網(wǎng)絡(luò)模型的部署且達到實時檢測的要求十分重要。
2.3.3 硬件平臺對比
本文改進的模型部署到KV 260后推理的精度為14.79%,對比部署前的模型略有下降,這是由量化和編譯過程導(dǎo)致的,部署前后檢測效果對比如圖9所示。
圖9 部署前后檢測效果
本文分別對GPU,CPU和FPGA 3種硬件平臺進行對比實驗,實驗結(jié)果如表4所示。
表4 硬件平臺對比
通過實驗對比發(fā)現(xiàn),本文的設(shè)計方案功耗比Tesla V100降低96.8%,比RTX 2060降低93%,比AMD R7- 4800H降低80%;檢測速度達到46.78幀/s,比RTX 2060提高1.87%,比AMD R7- 4800H提高375.4%,遠高于人眼視覺暫留24幀/s的水平。滿足目標(biāo)檢測實時性的要求。
GPU和FPGA平臺各具優(yōu)勢,在實際工程應(yīng)用中,可以根據(jù)應(yīng)用場景和需求對硬件平臺進行靈活的選擇。在硬件平臺不受限制的情景下,選用的網(wǎng)絡(luò)模型參數(shù)量大、計算復(fù)雜度高時,可以采用高性能的GPU作為硬件部署平臺,從而更好地發(fā)揮出模型的檢測性能。在設(shè)備面臨內(nèi)存、功耗和重量受限的應(yīng)用場景時,可以選用FPGA作為硬件平臺,同時搭配輕量級網(wǎng)絡(luò)模型進行部署。
針對目前遙感圖像目標(biāo)檢測算法在GPU上存在參數(shù)量大、檢測實時性差、功耗大的情況,以YOLOv4為基礎(chǔ),提出了一種基于FPGA的遙感圖像實時目標(biāo)檢測方案。實驗結(jié)果表明,本文的設(shè)計滿足遙感圖像目標(biāo)檢測實時處理,相對于GPU較大的功耗和體積,更適合部署在體積、重量、功耗受限的無人機及衛(wèi)星等設(shè)備。本文方案仍存在可以改進的部分,例如,可以對頸部特征融合網(wǎng)絡(luò)進行更深入的改進優(yōu)化,提升感受野,提取更精準(zhǔn)的目標(biāo)特征,從而進一步提高模型檢測精度。此外,還可以對模型進行剪枝操作,進一步減少模型參數(shù)量,提高檢測速度。