劉愛東,郭智超,徐君明,叢林虎
(海軍航空大學(xué), 山東 煙臺 264001)
小型旋翼無人機由于其目標(biāo)小、操作方便、成本低等優(yōu)勢,在軍事滲透、軍事運輸、擾亂敵方基地、戰(zhàn)場環(huán)境偵查等軍事應(yīng)用方面起著至關(guān)重要的作用[1]。隨之而來其帶來的安全隱患和威脅也逐漸增多,如何快速高效地探測到無人機已成為國內(nèi)外許多專家學(xué)者研究的重點議題。
在無人機探測方法中較為常用的有雷達探測方式、聲紋探測方式、無線電探測方式及光電探測方式。由于存在反射面小、噪聲較小、所處環(huán)境復(fù)雜等因素,傳統(tǒng)探測方式在小型無人機探測方面存在較大缺陷[2]。近些年來隨著深度學(xué)習(xí)技術(shù)的成熟發(fā)展,研究者們已不斷將基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)應(yīng)用在對無人機的光電探測中,以便于達到對其精準(zhǔn)實時探測。
基于深度學(xué)習(xí)的目標(biāo)檢測算法主要分為兩類。一類是基于候選框的檢測算法,如Girshick提出的RCNN,以及后期改進的Fast R-CNN[3],何凱明團隊分別在2016年與2017年提出性能更優(yōu)的Faster R-CNN模型[4]和Mask R-CNN模型[5]。這些算法在檢測精度方面性能較優(yōu),但實時性較差,常被用于如醫(yī)療影像等主要針對檢測精度的領(lǐng)域,對于處于飛行中的無人機則無法滿足探測要求。另一類是基于回歸的檢測算法,如Redomn等提出的YOLO和YOLOv2算法[6-7],以及2018年提出的YOLOv3算法[8],雖然其檢測速率較快,但檢測精度仍有很大進步空間,Anguelov等提出的SSD算法在小目標(biāo)檢測時又存在較大不足[9]。Bochkovskiy等在YOLOv3的基礎(chǔ)上對其全面優(yōu)化升級,提出了精度更高、實時性更好的YOLOv4算法[10]。
但在實際的無人機光電探測系統(tǒng)中,需要以嵌入式平臺為檢測模型的運行平臺,并將其部署至探測系統(tǒng)中。相對于臺式計算機,嵌入式設(shè)備具有算力有限、存儲容量小等劣勢,且無人機所處環(huán)境復(fù)雜,YOLOv4模型參數(shù)量較高,將其部署至嵌入式設(shè)備將面臨加載時間長、運行速率慢等問題[11]。針對檢測模型在嵌入式設(shè)備難部署的問題,嚴(yán)開忠等使用深度可分離卷積代替模型的普通卷積運算進而達到降低模型參數(shù)量的目的[12];常飛翔等通過模型剪枝壓縮與裁剪大尺度檢測分支的方式達到了減少參數(shù)量的目的[13]。
本文為了解決在無人機目標(biāo)檢測中所面臨的問題,使視覺探測技術(shù)更好地部署在反無人機應(yīng)用領(lǐng)域,提出一種全新的YOLOv4改進模型。該模型創(chuàng)新點如下:為了提升模型效率,使用Mobilenetv3輕量級網(wǎng)絡(luò)作為YOLOv4特征提取網(wǎng)絡(luò);在PANet特征加強網(wǎng)絡(luò)中通過深度可分離卷積代替普通卷積;使用TensorRT優(yōu)化器通過后訓(xùn)練量化方式對模型進行int8位量化進而降低網(wǎng)絡(luò)參數(shù)量;采用K-means++算法代替K-means算法來提高聚類效果,同時降低聚類代價函數(shù)。最終將經(jīng)過優(yōu)化好的模型部署至JetsonTX2平臺上實現(xiàn)對無人機目標(biāo)的實時檢測。
YOLOv4是YOLOv3模型的改進版本。YOLOv4以CSPDarknet 53為基礎(chǔ)網(wǎng)絡(luò)對圖像進行初步特征提取,基礎(chǔ)網(wǎng)絡(luò)中通過引入CSPNet(跨階段局部網(wǎng)絡(luò))[14]來減少模型推理計算,增強CNN的學(xué)習(xí)能力。
采用SPP(空間金字塔池化)來增加網(wǎng)絡(luò)感受野[15],通過對layer107分別進行5×5、9×9、13×13的最大池化,分別得到layer108、layer110和layer112,將其進行concate融合操作得到layer 113,最后通過1×1降維得到512個通道的layer 114。
YOLOv4以PANet作為網(wǎng)絡(luò)的特征融合模塊[16],創(chuàng)建了一條自底向上的路徑增強,通過shortcut連接縮短路徑;同時采用自適應(yīng)特征池化技術(shù),將所有特征層級的特征融合至每個建議區(qū)域中,避免了任意分配的結(jié)果;最后通過全連接融合對原有的分割支路引入一個前景二分類的全連接支路,通過融合這兩條支路的輸出得到更加精確的分割結(jié)果,進而提供更準(zhǔn)確的mask預(yù)測。
YOLOv4的YOLO Head(即網(wǎng)絡(luò)預(yù)測部分)則沿用YOLOv3算法的磁頭,以基于錨的檢測步驟和3個檢測粒度級別進行檢測。圖1為YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)框圖。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)框圖
YOLOv4損失函數(shù)由邊界框損失、置信度損失和分類損失3部分組成。相較于YOLOv3算法,YOLOv4在邊界框損失函數(shù)上做出了創(chuàng)新,用CIoU損失函數(shù)代替了MSE。傳統(tǒng)的MSE函數(shù)采用對目標(biāo)的長寬開根號的方式降低尺度對回歸準(zhǔn)確性的影響,但在進行目標(biāo)框的回歸時有時候并不能將不同質(zhì)量的預(yù)測結(jié)果區(qū)分開來,同時對目標(biāo)的尺度相當(dāng)敏感。CIoU考慮到了重疊面積、中心點距離、長寬比3個因素[17]。
YOLOv4檢測模型的損失函數(shù)定義如下:
1) 邊界框損失函數(shù)(LCIoU):
(1)
(2)
(3)
其中:ωgt和hgt為真實框的寬高,ω和h為預(yù)測框的寬高,α是用作trade-off的參數(shù),ν是用來衡量長寬比一致性的參數(shù),主要用來衡量候選框和目標(biāo)框的一致性。ρ表示歐式距離的計算,c是預(yù)測框與真實框的包圍最小框的對角線長度,b,bgt分別代表預(yù)測框與真實框的中心點。
2) 置信度損失函數(shù)(Lconf):
(4)
3) 分類損失函數(shù)(Lcla):
(5)
3.1.1主干網(wǎng)絡(luò)優(yōu)化
盡管CSPDarknet相對于Darknet性能有所提升,但其仍屬于重量級網(wǎng)絡(luò),無法滿足嵌入式平臺低算力低存儲的條件限制,所以本文使用輕量級Mobilenetv3網(wǎng)絡(luò)結(jié)構(gòu)(如表1所示)代替CSPDarknet網(wǎng)絡(luò)作為YOLOv4模型的特征提取網(wǎng)絡(luò)。
其中在該列表中自左至右分別表示:每個特征層的尺度大小、每次特征層即將經(jīng)歷的block結(jié)構(gòu)、bneck內(nèi)逆殘差結(jié)構(gòu)上升后的通道數(shù)、輸入bneck時特征層的通道數(shù)、是否在該網(wǎng)絡(luò)層引入注意力機制、激活函數(shù)的種類、每一次block結(jié)構(gòu)所用的步長。
表1 Mobilenetv3網(wǎng)絡(luò)結(jié)構(gòu)Table 1 Mobilenetv3 network structure
Mobilenetv 3結(jié)合了“深度可分離卷積”、“逆殘差結(jié)構(gòu)”、“squeeze and excitation結(jié)構(gòu)的輕量級注意力模型”3種思想,將最后一個卷積層刪除并前移最后一個平均池化層,同時該網(wǎng)絡(luò)在結(jié)構(gòu)中使用了h-swish激活函數(shù),代替swish函數(shù)。將Mobilenetv3作為YOLOv4特征提取網(wǎng)絡(luò),不僅能減少運算量和模型參數(shù)量,還可提高網(wǎng)絡(luò)的計算效率[18-19]。圖2為改進YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)框圖。
3.1.2PANet特征加強網(wǎng)絡(luò)優(yōu)化
PANet為YOLOv4檢測模型的特征加強網(wǎng)絡(luò),通過使用自底向上的路徑增強、自適應(yīng)特征池化、全連接融合等方式準(zhǔn)確地保存空間信息,正確定位像素點。
深度可分離卷積由Chollet F于2017年提出,可以在較小影響精度的同時減小網(wǎng)絡(luò)參數(shù)量和計算量[20]。該方式將普通的卷積操作分解為2個過程,首先將一個卷積核分裂成兩個獨立的核,而后對于不同的輸入通道采取不同的卷積核進行卷積,分別被稱為逐通道卷積和逐點卷積,該方式同時考慮到了通道和區(qū)域改變,實現(xiàn)了通道與區(qū)域的分離。圖3和圖4分別表示普通卷積與深度可分離卷積的工作方式。
圖2 改進YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)框圖
圖3 普通卷積工作方式示意圖
圖4 深度可分離卷積工作方式示意圖
對于普通卷積方式,假設(shè)有N×H×W×C的輸入,同時有k個3×3的卷積核,如果設(shè)置pad=1且stride=1,則其輸出為N×H×W×k。對于深度可分離卷積,Depthwise是將N×H×W×C的輸入劃分為Group=C組,然后每一組做3×3卷積,相當(dāng)于提取了每個通道的空間特征;Pointwise表示對N×H×W×C的輸入做個普通的1×1卷積,相當(dāng)于搜集了每個點的特征。普通卷積的參數(shù)量為N×3×3×k,計算量為C×W×H×3×3×k;深度了分離卷積的參數(shù)量為N×3×3+N×1×1×k,計算量為H×W×C×3×3+H×W×C×k。
計算量代價比如下:
(6)
參數(shù)量代價比如下:
(7)
PANet網(wǎng)絡(luò)的參數(shù)量主要集中在其3×3普通卷積運算中,本文中我們將使用效率更高的深度可分離卷積代替PANet中的普通卷積來進一步降低參數(shù)量與計算量,進而提升YOLOv4的運行效率。
目標(biāo)檢測中,為了讓預(yù)測框與真實框取得更好的IOU值以便于更精準(zhǔn)地定位目標(biāo),需要提前標(biāo)定錨點框?qū)δ繕?biāo)進行聚類。傳統(tǒng)YOLOv4算法使用K-means聚類算法對訓(xùn)練集中的目標(biāo)進行聚類,其衡量相似度的指標(biāo)為每一個對象與聚類中心歐氏距離,把對象點歸到最相似的類中,再計算每個類的聚類中心,重復(fù)此過程直至結(jié)果不再改變。聚類結(jié)果通過對象和聚類中心的距離公式來評價,其公式如下:
(8)
其中:boxi為第i個樣本的預(yù)測框,centroidj為第j個聚類中心,d為表示二者之間的距離。
K-means算法原理,應(yīng)用廣泛,但也存在諸多局限性,如:收斂較慢、時間復(fù)雜度高、需要事先確定超參數(shù)K、不能保證全局最優(yōu)等。由于拍攝的無人機圖像的復(fù)雜性和特殊性,本文將采用聚類效果更優(yōu)的K-means++算法對原K-means算法隨機初始化質(zhì)心的方法進行優(yōu)化,其思想為:初始聚類中心間的距離要盡可能遠(yuǎn)。K-means++算法具體如下:
1) 從輸入的數(shù)據(jù)點集合中隨機選擇一個點作為第一個聚類中心。
2) 對于數(shù)據(jù)集中的每一個點x,計算它與已選擇的最近的聚類中心的距離D(x)。
4) 重復(fù)第2步知道選擇出K個聚類中心。
5) 利用這k個質(zhì)心來作為初始化質(zhì)心去運行標(biāo)準(zhǔn)的K-Means算法。
針對本文自建無人機數(shù)據(jù)集,將K-means++算法K值設(shè)為9,實驗所得錨框的尺度分別為(8,9.7)、(10.8,14.5)、(13.5,17.5)、(14,25.4)、(16,21.1)、(19.6,21,5)、(21.1,28.7)、(30,39)、(46.8,62.2),最終錨框聚類精度可從81.27%提升至84.59%。圖5為本實驗K-means++聚類效果圖。
常用的模型壓縮方法包括:網(wǎng)絡(luò)剪枝、知識蒸餾和模型量化,由于將YOLOv4模型基礎(chǔ)網(wǎng)絡(luò)替換為了輕量級的 Mobilenetv 3網(wǎng)絡(luò),若繼續(xù)對其模型剪枝則極有可能破壞模型完整度,進而對檢測精度造成較大影響,所以本文將采用模型量化的方式降低檢測模型的參數(shù)量與規(guī)模大小[21]。
圖5 K-means++聚類效果圖
量化方式共有2種:后訓(xùn)練量化(PTQ)與量化感知訓(xùn)練(QAT)。而后訓(xùn)練量化方式分為混合量化、8位整型量化、半精度浮點量化。PTQ直接對普通訓(xùn)練后的模型進行量化,過程簡單,不需要在訓(xùn)練階段考慮量化問題,對于參數(shù)冗余量高的大模型精度損失較小,對于參數(shù)冗余量低的小模型精度損失較高低;而QAT需要在訓(xùn)練階段就對量化誤差進行建模,這種方法一般能夠獲得較低的精度損失,但應(yīng)用復(fù)雜,缺少統(tǒng)一的規(guī)范,支持的框架較少。
經(jīng)綜合考慮,本文將使用pytorch1.14.0深度學(xué)習(xí)框架和TensorRT加速引擎采用后訓(xùn)練量化方法將模型權(quán)重float32型的YOLOv4.weights從轉(zhuǎn)為int8型的YOLOv4-int8-608.trt,并通過張量融合、內(nèi)核調(diào)整、多流執(zhí)行等一系列操作對模型進行整體優(yōu)化。
圖6為TensorRT整體優(yōu)化結(jié)構(gòu)框圖。
圖6 TensorRT優(yōu)化結(jié)構(gòu)框圖
1) 精度校準(zhǔn):通過將模型量化為INT8,同時保持準(zhǔn)確性,將吞吐量最大化。
2) 層/張量融合:通過融合內(nèi)核中的節(jié)點優(yōu)化GPU內(nèi)存和帶寬的使用。
3) 內(nèi)核自動調(diào)整:基于目標(biāo)GPU平臺選擇最佳數(shù)據(jù)層和算法。
4) 動態(tài)張量內(nèi)存:最小化內(nèi)存占用并有效地重新使用張量的內(nèi)存。
5) 多流執(zhí)行:并行處理多個輸入流的可擴展設(shè)計。
本檢測模型訓(xùn)練所需計算機配置有intel第九代酷睿i7-9700處理器,32GB RAM的服務(wù)器,外配有1080Ti顯卡。測試所需嵌入式設(shè)備采用NVIDIA公司推出的邊緣計算設(shè)備JetsonTX2,除了高性能NVIDIA PascalTM顯卡,還配有HMP Dual Denver 2/2MB L2+Quad ARM A57/2MB L2處理器,8GB RAM,59.7 GB/s 的顯存帶寬。
模型訓(xùn)練的PC機上所需的軟件環(huán)境包括Ubuntu18.04操作系統(tǒng)、 PyCharm編譯軟件、python3.6.3編程語言、pytorch1.12.0深度學(xué)習(xí)框架、CUDA10.0以及Cudnn7.4.1、OPENCV軟件包等。測試平臺JetsonTX2上的軟件環(huán)境包括:Ubuntu18.04操作系統(tǒng)、python3.6.3編程語言、pytorch1.14.0深度學(xué)習(xí)框架、各種資源軟件包等。
該無人機數(shù)據(jù)集為自建數(shù)據(jù)集,無人機圖像由GigE工業(yè)相機拍攝,共1 036張,按照4∶1∶1的比例劃分為訓(xùn)練集、測試集與驗證集。為了提升訓(xùn)練效果,在數(shù)據(jù)集中添加少量負(fù)樣本,并選取了包含了不同天氣條件、不同距離、不同角度、不同背景環(huán)境下拍攝的圖像。使用labelimg工具將挑選的圖片手動加以標(biāo)注并以VOC格式存儲,Annotations文件夾中的xml文件負(fù)責(zé)記錄檢測目標(biāo)的類別信息和位置信息,JPEGImages文件負(fù)責(zé)存儲檢測目標(biāo)的圖像。圖7為數(shù)據(jù)集樣本示例圖。
圖7 數(shù)據(jù)集樣本示例圖
本模型及前期預(yù)處理在搭載1080Ti顯卡的高性能PC機上訓(xùn)練,其訓(xùn)練參數(shù)設(shè)置:Batch Size(批處理大小)設(shè)置為8,Learning Rate(學(xué)習(xí)率)設(shè)為學(xué)習(xí)率,Match Threshold(置信度閾值)設(shè)為0.5,Weight Delay(權(quán)重衰減值)設(shè)為0.000 5,Momentum(動量值)設(shè)為0.9,并進行1 000的迭代訓(xùn)練,并得到最終的訓(xùn)練權(quán)重文件。將訓(xùn)練好的文件加以測試,最后以Map(平均精度)、FPS(檢測速率)、參數(shù)量為評價指標(biāo)。
為了更好地驗證實驗效果,將改進YOLOv4模型在PC機上訓(xùn)練好后部署JetonTX2平臺上,選取不同復(fù)雜條件下的無人機圖像進行測試,測試效果如圖8。
由圖8~圖11的檢測效果對比圖可知,改進后的YOLOv4算法部署至JetsonTX2后,對于小無人機目標(biāo)檢測效果很好,精度高達98%;對于模糊圖像與復(fù)雜背景圖像中的無人機檢測處于較高水平,分別為83%與85%;該模型對于夜間無人機檢測效果最差,精度為76%,仍有極大的提升空間,也表明光線條件對無人機目標(biāo)檢測影響最大。
圖8 無人機小目標(biāo)圖像檢測效果圖
圖9 模糊無人機圖像檢測效果圖
圖10 夜間無人機圖像檢測效果圖
圖11 復(fù)雜背景無人機圖像檢測效果圖
為了對模型進行直面與客觀的分析,分別將原YOLOv4、改進YOLOv4、YOLOv4-tiny算法在PC機上使用相同的訓(xùn)練集和訓(xùn)練方法進行訓(xùn)練,從中選取100張測試集分別在PC機和JetsonTX2上進行測試,每種模型進行10次測試后取其平均值,最后通過模型參數(shù)量、平均精度mAP、檢測速率進行性能對比,結(jié)果如表2所示。
表2 模型性能參數(shù)對照表Table 2 Model performance comparisonTable
由性能對照表可知:改進后的YOLOv4模型相對于原YOLOv4模型,參數(shù)量有了極大地下降,從61.38 M下降到了11.19 M;而在檢測速率有了極大的提升,在JetsonTX2上檢測速率從3.5 FPS提升至23.9 FPS;同時保持了較高的檢測精度,達到了87.1%。和YOLOv4-tiny相比,改進YOLOv4雖然檢測速率略低,但由于YOLOv4-tiny檢測精度太低,在JetsonTX2平臺上只有68.2%的精準(zhǔn)度,無法滿足實際需求。所以經(jīng)綜合性能對比,改進YOLOv4模型的性能滿足實際需求。
本文設(shè)計了一種基于JetsonTX2與改進YOLOv4的無人機實時目標(biāo)檢測方法,解決了傳統(tǒng)YOLOv4模型部署到嵌入式平臺后對無人機探測中存在的實時性差、加載速率慢、效率低下等問題。針對模型參數(shù)量和計算量較大的問題,首先采用了Mobilenetv3輕量級視覺網(wǎng)絡(luò)代替YOLOv4基礎(chǔ)網(wǎng)絡(luò)CSPDarknet,而后在YOLOv4的加強特征網(wǎng)絡(luò)PANet中引入深度可分離卷積,最后通過TensorRT工具將訓(xùn)練好的模型的權(quán)重量化為int8型并對模型優(yōu)化。為了使目標(biāo)點取得更好地聚類效果,以便于對無人機跟精準(zhǔn)地定位,采用K-means++聚類算法得到最優(yōu)錨框尺度。最后在JetsonTX2上的測試結(jié)果顯示,對無人機的檢測精度可達89.9%,檢測速率從改進前的3.5 FPS提升至24.9 FPS。和原YOLOv4模型相比,改進的YOLOv4模型極大地減小了模型參數(shù)量,提高了模型加載速度,在檢測速率上有了較大提升,同時又能對無人機保持較高的檢測精度。在模糊圖像條件下或光線較差的情況下對無人機的檢測效果還有待提升,下一步將嘗試引入支持并行計算的transformer注意力機制,同時對模型進行量化感知訓(xùn)練,進一步提升嵌入式平臺目標(biāo)檢測模型的效率。