楊輝躍,容易圣,簡鈺洪,賈軼鈞
(陸軍勤務(wù)學(xué)院, 重慶 401331)
近年來,隨著相關(guān)技術(shù)不斷進(jìn)步,無人機(jī)體積小、價(jià)格低、靈活度高、操作簡便等特點(diǎn)越來越顯著,在航拍、植保、救援、物流各領(lǐng)域都有了廣泛的應(yīng)用。但是,也正由于這些特點(diǎn),導(dǎo)致無人機(jī)在“黑飛”“濫飛”,以及他國非法軍事行動(dòng)等方面問題較為普遍,對(duì)國家安全、人身安全、個(gè)人隱私等造成了巨大隱患。因此,對(duì)無人機(jī)進(jìn)行快速而高效的實(shí)時(shí)檢測(cè)至關(guān)重要。
反無人機(jī)監(jiān)測(cè)主要有雷達(dá)探測(cè)、射頻探測(cè)、聲波探測(cè)及視覺探測(cè)等方式[1-2]。雷達(dá)探測(cè)方法主要利用回波的多普勒頻移信息,但由于電磁波傳播特性、微小型無人機(jī)回波信號(hào)微弱等原因,雷達(dá)探測(cè)一般存在低空盲區(qū)、近距盲區(qū)等。在低空/超低空域,環(huán)境噪聲對(duì)聲波探測(cè)影響較大。射頻探測(cè)主要利用無人機(jī)與控制中心之間的通信信號(hào),然而通信協(xié)議的不明確限制了射頻探測(cè)準(zhǔn)確性。視覺探測(cè)利用攝像機(jī)獲取監(jiān)控區(qū)域的視頻,通過圖像特征進(jìn)行實(shí)時(shí)處理實(shí)現(xiàn)對(duì)無人機(jī)的監(jiān)測(cè)。相較而言,視覺探測(cè)雖然難以實(shí)現(xiàn)精準(zhǔn)定位,受光線及環(huán)境遮擋影響大,但其系統(tǒng)成本低、探測(cè)速度快、探測(cè)精度高、監(jiān)控區(qū)域大、適用場(chǎng)景廣,通過合理布設(shè),能夠滿足日間復(fù)雜環(huán)境下低空域無人機(jī)實(shí)時(shí)監(jiān)控[3-4]。
實(shí)現(xiàn)視覺目標(biāo)檢測(cè)主要有傳統(tǒng)目標(biāo)檢測(cè)和深度學(xué)習(xí)目標(biāo)檢測(cè)等2類算法。傳統(tǒng)目標(biāo)檢測(cè)方法根據(jù)需求提取識(shí)別特征,而后通過訓(xùn)練淺層分類器對(duì)目標(biāo)進(jìn)行檢測(cè)識(shí)別,此類方法在形態(tài)多樣、姿態(tài)多變的目標(biāo)檢測(cè)中效果不佳。深度學(xué)習(xí)的目標(biāo)檢測(cè)算法主要分為2類:一類是基于候選區(qū)的二階目標(biāo)檢測(cè)算法(Two-Stage),二階段深度學(xué)習(xí)算法將目標(biāo)檢測(cè)劃分為候選區(qū)域生成、候選區(qū)域分類與邊界框調(diào)整2個(gè)階段,代表有RCNN,Fast-RCNN,Faster-RCNN,以及Mask RCNN算法等[5-9],二階算法的檢測(cè)精度較高,但是檢測(cè)速度較慢,難以做到實(shí)時(shí)檢測(cè);另一類是基于回歸的一階目標(biāo)檢測(cè)算法(one-stage),該算法不需要先產(chǎn)生目標(biāo)候選區(qū),而是將圖像中的所有位置均視作潛在目標(biāo),通過神經(jīng)網(wǎng)絡(luò)直接產(chǎn)生目標(biāo)的類別與位置,主要代表有Anguelov等[10]提出的SSD,Redomn等[11-12]提出的YOLO算法,這類算法檢測(cè)速度快,但檢測(cè)的精度相較于Two-Stage算法稍有缺陷。其中Glen Jocher基于YOLOv3算法進(jìn)行了優(yōu)化,提出了YOLOv5算法,引入近年來新的優(yōu)秀算法對(duì)網(wǎng)絡(luò)結(jié)構(gòu)各部分進(jìn)行了優(yōu)化,進(jìn)一步提高了預(yù)測(cè)的精確度和速度。因YOLO算法在目標(biāo)檢測(cè)方面的優(yōu)勢(shì),已在低空無人機(jī)探測(cè)中得到初步應(yīng)用和關(guān)注[13-18]。
然而,在實(shí)際應(yīng)用中,不僅要考慮算法的精測(cè)精度,還需要考慮計(jì)算的實(shí)時(shí)性,以及嵌入式平臺(tái)的儲(chǔ)存空間等問題。為此,本文中針對(duì)上述問題,提出了一種低空無人機(jī)實(shí)時(shí)探測(cè)的GCB-YOLOv5s算法。
YOLOv5算法有YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x等5種網(wǎng)絡(luò)結(jié)構(gòu),大小依次遞增。本文根據(jù)實(shí)時(shí)性和精確性需求,選擇對(duì)YOLOv5s的Bacnkbone及Neck部分進(jìn)行改進(jìn),即使用Ghostnet[9]輕量級(jí)網(wǎng)絡(luò)代替YOLOv5backbone部分原有的CBL結(jié)構(gòu),以減少卷積層數(shù),提高運(yùn)算速度;在YOLO算法backbone部分引入了CA注意力機(jī)制,提升模型無人機(jī)檢測(cè)準(zhǔn)確性;使用加權(quán)雙向金字塔網(wǎng)絡(luò)BiFPN,代替neck部分的PANet結(jié)構(gòu),更加合理應(yīng)用不同分辨率特征,提升不同距離無人機(jī)檢測(cè)效果。改進(jìn)后形成GCB-YOLOv5s算法(G表示Ghostnet、C表示CA注意力機(jī)制、B表示BiFPN),網(wǎng)絡(luò)結(jié)構(gòu)仍然分為輸入端、backbone、Neck和Prediction等4個(gè)部分,如圖1所示。
圖1 GCB-YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)
GCB-YOLOv5s算法用Ghost Conv替換了原網(wǎng)絡(luò)的組件CBL(Conv為卷積層,BN為批歸一化層,Leaky relu為激活函數(shù)),并使用以此改進(jìn)原網(wǎng)絡(luò)的CSP網(wǎng)絡(luò)結(jié)構(gòu),得到的C3Ghost_X組件。較大地減少了網(wǎng)絡(luò)的參數(shù)量和計(jì)算量。
Backbone部分使用了改進(jìn)的C3Ghost_X組件,并在尾部引入了CA注意力機(jī)制。網(wǎng)絡(luò)結(jié)構(gòu)由Conv卷積、GCSP組件、CA注意力機(jī)制模塊及SPP模塊構(gòu)成。第一個(gè)Conv卷積用于下采樣,將輸入的608*608*3原始圖像先變?yōu)?04*304*32的特征圖,能夠減少加算量以加快網(wǎng)絡(luò)速度。C3Ghost_X在backbone中共有4個(gè),其中X代表GB組件個(gè)數(shù),作用是防止在卷積過程中產(chǎn)生梯度爆炸和網(wǎng)絡(luò)退化等問題。CA注意力機(jī)制模塊對(duì)前期所得特征張量進(jìn)行轉(zhuǎn)化。SPP模塊采用1×1、5×5、9×9、13×13最大池化的方式,對(duì)所得特征圖像進(jìn)行多尺度融合。CA注意力機(jī)制及SPP均主要旨在增強(qiáng)網(wǎng)絡(luò)的特征表達(dá)能力。
Neck部分用BiFPN替換YOLOv5的PANet特征圖像金字塔,進(jìn)一步加強(qiáng)了不同層次的特征信息融合。BiFPN中不同分辨率的特征信息融合前會(huì)先進(jìn)行加權(quán)處理。使用C3Ghost_X組件進(jìn)行特征信息融合。C3Ghost_X組件前面的Ghost Conv2組件步長為2,相當(dāng)于下采樣操作。圖像經(jīng)過YOLOv5網(wǎng)絡(luò)處理后,得到3種不同尺寸的輸出,分別預(yù)測(cè)不同尺寸的目標(biāo)。
在深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)中,有許多特征層之間是相似的,這些相似特征層能夠全面表達(dá)輸入數(shù)據(jù),但正因?yàn)橄嗨?所以沒必要用過多的FLOPs和參數(shù)去生成,不用全部都去卷積,直接拿出一部分作為相似特征層。其原理如圖2所示。使用Ghost結(jié)構(gòu)不影響結(jié)果的通道數(shù),運(yùn)算分3步:第1步,進(jìn)行少量卷積(卷積核數(shù)量為原先的1/s);第2步,將少量卷積結(jié)果再進(jìn)行一次卷積;第3步,將前2步所得進(jìn)行Concat。
圖2 GhostNet原理圖
比較兩者性能,使用普通卷積:
param=k2×c×n
(1)
cost=h′×w′×n×k2×c
(2)
而使用GhostNet:
式(1)—(4)中:param為參數(shù)量;cost為計(jì)算量;k為卷積核尺寸;c為輸入特征層通道數(shù);h′、w′、n分別為輸出特征層高、寬和通道數(shù)??傻贸?GhostNet的參數(shù)量和計(jì)算量均為普通卷積的1/s。利用Ghost模塊優(yōu)勢(shì)設(shè)計(jì)的Ghost bottleneck網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 Ghost bottleneck網(wǎng)絡(luò)結(jié)構(gòu)
本文結(jié)合實(shí)際需求將Ghost網(wǎng)絡(luò)參數(shù)s設(shè)置為2,設(shè)計(jì)了Ghost Conv和C3Ghost組件,大幅減少了參數(shù)量,加快了運(yùn)算速度。
CA(coordinate attention)機(jī)制是一種高效注意力機(jī)制,它將神經(jīng)網(wǎng)絡(luò)中任意特征張量X=[x1,x2,…,x3]∈RH×W×C進(jìn)行轉(zhuǎn)換后輸出同樣尺寸的特征張量,其過程在對(duì)張量不同卷積通道的特征信息加權(quán)時(shí),沿著另一個(gè)空間方向精確保留了位置信息,實(shí)現(xiàn)了通道和空間的融合,并且計(jì)算開銷較小,能夠用于輕量級(jí)網(wǎng)絡(luò)中。其實(shí)現(xiàn)過程如圖4所示。
圖4 CA機(jī)制實(shí)現(xiàn)流程
輸入特征張量通道數(shù)為C,寬度為W,高度為H。將輸入特征圖分為寬度和高度2個(gè)方向分別進(jìn)行全局平均池化,分別獲得在寬度和高度2個(gè)方向的特征圖,計(jì)算公式為:
接著將獲得的寬度和高度2個(gè)方向的特征圖拼接在一起,將所有通道拼接所得特征圖進(jìn)行卷積,卷積核參數(shù)為[C/r,1,1],然后將經(jīng)過批量歸一化處理的特征圖F1送入Sigmoid激活函數(shù)得到形如1×(W+H)×C/r的特征圖f,計(jì)算公式為:
f=δ(F1([zh,zw]))
(7)
接著將特征圖f按照原高度和寬度進(jìn)行切割,而后進(jìn)行卷積運(yùn)算,卷積核參數(shù)為[C/r,1,1],分別得到通道數(shù)與原來一樣的特征圖Fh和Fw,經(jīng)過Sigmoid激活函數(shù)后分別得到特征圖在高度和寬度上的注意力權(quán)重gh和gw,計(jì)算公式為:
gh=σ(Fh(fh))
(8)
gw=σ(Fw(fw))
(9)
最后將原始圖像進(jìn)行乘法加權(quán)計(jì)算,得到在高度和寬度上帶有注意力權(quán)重的特征圖。
在backbone末端引入CA機(jī)制對(duì)特征圖進(jìn)行處理,以提高檢測(cè)準(zhǔn)確率。輸入特征張量的通道數(shù)為1 024,寬度為19,高度為19,通過試驗(yàn),參數(shù)r取32。
用FPN特征金字塔進(jìn)行特征融合時(shí),平等地對(duì)待每個(gè)輸入特征圖,忽視了不同分辨率輸入特征對(duì)特征融合貢獻(xiàn)的不平等性。BiFPN特征金字塔網(wǎng)絡(luò)引入了可學(xué)習(xí)的權(quán)重參數(shù),能夠?qū)W習(xí)不同輸入特征的重要性,同時(shí)還在同一尺度輸入和輸出節(jié)點(diǎn)間增加了跳躍連接,形成了一種殘差結(jié)構(gòu),進(jìn)一步加強(qiáng)了特征融合效果。
BiFPN特征金字塔網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。藍(lán)色箭頭為自頂向下的通路,傳遞的是高層特征的語義信息;紅色部分表示自底向上的通路,傳遞的是低層特征的位置信息;紫色箭頭是上述第2點(diǎn)提到的同一層在輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)間新加的一條邊。
圖5 BiFPN特征金字塔結(jié)構(gòu)
本文將YOLOv5算法neck部分的PANet特征金子塔用BiFPN結(jié)構(gòu)進(jìn)行優(yōu)化。步驟如圖6所示,將只有一個(gè)輸入邊并且沒有特征融合的節(jié)點(diǎn)刪除;而后在同一級(jí)別的原始輸入與輸出節(jié)點(diǎn)添加一條額外的路徑連接;最后對(duì)每條路徑新增了權(quán)重參數(shù)w。加權(quán)融合方式采取快速歸一化融合,即
圖6 YOLOv5 PANet結(jié)構(gòu)轉(zhuǎn)換示意圖
式中:wi為大于0的學(xué)習(xí)權(quán)重;ε=0.000 1為一個(gè)很小的值來避免數(shù)值不穩(wěn)定。
與經(jīng)典YOLOv5算法相比,經(jīng)過改進(jìn)后GCB-YOLOv5s算法的網(wǎng)絡(luò)結(jié)構(gòu)在參數(shù)量、浮點(diǎn)計(jì)算量上均有較大減少,如表1所示,參數(shù)量減少了39%,浮點(diǎn)數(shù)計(jì)算量減少了44%。
表1 YOLOv5與GCB-YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比
數(shù)據(jù)集構(gòu)建采用網(wǎng)絡(luò)公開數(shù)據(jù)Drone Dataset (UAV)和現(xiàn)地采集的方式,數(shù)據(jù)集規(guī)模為3 361張,數(shù)據(jù)集中無人機(jī)以常見的多旋翼、固定翼無人機(jī)為主體,共3 058張,補(bǔ)充鳥類、飛行昆蟲為相似干擾物,共303張。設(shè)置建筑、云層、樹木、陰暗條件等4類復(fù)雜背景條件,以及弱小目標(biāo)檢測(cè)及相似物干擾2種常見情況,確保數(shù)據(jù)完備性。基礎(chǔ)數(shù)據(jù)情況如圖7所示。
圖7 基礎(chǔ)數(shù)據(jù)集片段
在實(shí)際檢測(cè)中,大部分無人機(jī)在捕獲圖像中為弱小目標(biāo),而其相似物體開源圖像中大多為特寫,全部自主拍攝又難以滿足數(shù)據(jù)豐富性要求,因此將部分特寫圖片中的目標(biāo)進(jìn)行縮小處理,以符合實(shí)際特征情況,增加數(shù)據(jù)集的豐富性。算法輸入圖像大小為640像素*640像素,圖像縮小后空白區(qū)域以純色填充,如圖8所示。
圖8 基礎(chǔ)數(shù)據(jù)變換情況
利用Labelimg圖像目標(biāo)標(biāo)注軟件對(duì)圖片進(jìn)行人工標(biāo)注。采用旋轉(zhuǎn)的方法擴(kuò)增樣本數(shù)量,單次旋轉(zhuǎn)角度為90°,擴(kuò)增后,得到樣本數(shù)量13 444張。而后按照8∶2的比例,隨機(jī)劃分為訓(xùn)練集和測(cè)試集。
實(shí)驗(yàn)平臺(tái):操作系統(tǒng)linuxubuntu,處理器AMD EPYC 7543 32-Core Processor,內(nèi)存30G,顯卡RTX A5000,顯存16G;實(shí)驗(yàn)軟件為PyCharm 2020,Pytorch1.11,Python 3.9。
實(shí)驗(yàn)數(shù)據(jù)采用無人機(jī)目標(biāo)數(shù)據(jù)集,按8∶2比例隨機(jī)劃分訓(xùn)練集和驗(yàn)證集。在訓(xùn)練中使用Mosaic數(shù)據(jù)增強(qiáng),即將4張訓(xùn)練圖像進(jìn)行隨機(jī)縮放、裁剪,并進(jìn)行隨機(jī)排布拼接作為輸入,如圖9所示,以此豐富圖片的背景,變相提高訓(xùn)練Batch Size,提升小目標(biāo)檢測(cè)的準(zhǔn)確性和魯棒性;學(xué)習(xí)率采用余弦退火方式調(diào)節(jié),確保學(xué)習(xí)率兩端低、中間高,兼顧學(xué)習(xí)效果與速度。
圖9 數(shù)據(jù)增強(qiáng)圖例
采取消融實(shí)驗(yàn)的方式對(duì)比算法結(jié)構(gòu)更改效果,對(duì)無人機(jī)檢測(cè)模型使用精確率Pp(precision)、召回率Pr(recall)、F1進(jìn)行評(píng)估,表示式為:
Pp=NTP/(NTP+NFP)
(12)
Pr=NTP/(NTP+NFN)
(13)
F1=2×Pr×Pp/(Pr+Pp)
(14)
式(12)—(14)中:NTP表示實(shí)例為正預(yù)測(cè)也為正的數(shù)量;NFP表示實(shí)例為負(fù)預(yù)測(cè)為正的數(shù)量;NFN表示實(shí)例為負(fù)預(yù)測(cè)也為負(fù)的數(shù)量。
通過驗(yàn)證集對(duì)訓(xùn)練的網(wǎng)絡(luò)模型檢測(cè)效果進(jìn)行驗(yàn)證。GCB-YOLOv5s迭代訓(xùn)練至曲線收斂,其準(zhǔn)確率和召回率增長情況如圖10所示。
圖10 GCB-YOLOv5s訓(xùn)練過程
圖11給出了GCB-YOLOv5s網(wǎng)絡(luò)在復(fù)雜條件下目標(biāo)檢測(cè)結(jié)果(為便于觀察,本文按照3∶1邊長比例裁剪出圖像的部分內(nèi)容)。針對(duì)復(fù)雜背景遠(yuǎn)距離小目標(biāo)無人機(jī),算法檢測(cè)的平均置信度在建筑物背景下為0.81,樹木背景0.86,云層背景0.78,陰暗背景0.76,可見GCB-YOLOv5s能夠準(zhǔn)確實(shí)現(xiàn)無人機(jī)檢測(cè),并且在肉眼較難分辨的復(fù)雜條件下具有良好的魯棒性。
圖11 GCB-YOLOv5s檢測(cè)結(jié)果例圖
在消融實(shí)驗(yàn)中,對(duì)比的網(wǎng)絡(luò)模型分別為:YOLOv5s、YOLOv5s+Ghostnet(G-YOLOv5s)、YOLOv5s+Ghostnet+CA(GC-YOLOv5s)、YOLOv5+Ghostnet+CA+BiFPN(GCB-YOLOv5s)。在迭代訓(xùn)練中,選取F1指標(biāo)最優(yōu)結(jié)果進(jìn)行對(duì)比,其結(jié)果如表2所示。
表2 消融實(shí)驗(yàn)結(jié)果
消融實(shí)驗(yàn)對(duì)比結(jié)果表明,在無人機(jī)目標(biāo)較小、背景環(huán)境復(fù)雜、飛鳥等物體干擾的條件下,用GhostNet替換普通卷積,引入CA注意力機(jī)制模塊,BiFPN加權(quán)特征金子塔替換PANet,相較于Yolov5s算法,本文中提出的無人機(jī)檢測(cè)GCB-YOLOv5s算法在保持較高精度的同時(shí),在實(shí)時(shí)性上也有了較大的提升。在CPU(12th Gen Intel Core i5-12600KF)上,YOLOv5s算法的fps(Frame per second,畫面每秒傳輸幀數(shù))為4.4,GCB-YOLOv5s算法為4.6;在GPU(NVIDIA GeForce RTX 3070)上,YOLOv5s算法的fps為48.38,GCB-YOLOv5s算法為53.97。說明GCB- YOLOv5s是一種兼顧檢測(cè)速率與精度的算法模型,適用于無人機(jī)的高清視頻監(jiān)控。
本文中提出的低空無人機(jī)實(shí)時(shí)探測(cè)的GCB-YOLOv5s算法,能有效提高低空無人機(jī)探測(cè)的準(zhǔn)確性和實(shí)時(shí)性。
1) 使用Ghostnet輕量級(jí)網(wǎng)絡(luò)代替YOLOv5backbone部分原有的CBL結(jié)構(gòu)以減少卷積層數(shù),提高運(yùn)算速度。
2) 在YOLO算法backbone部分引入了CA注意力機(jī)制,提升模型無人機(jī)檢測(cè)準(zhǔn)確性。
3) 使用加權(quán)雙向金字塔網(wǎng)絡(luò)BiFPN[11],代替neck部分的PANet結(jié)構(gòu),更加合理應(yīng)用不同分辨率特征,提升不同距離無人機(jī)檢測(cè)效果。
4) 通過現(xiàn)地拍攝和公開數(shù)據(jù),構(gòu)建了包括在建筑、云層、樹木、陰暗等不同復(fù)雜背景下的無人機(jī)飛行姿態(tài)實(shí)驗(yàn)數(shù)據(jù)集,訓(xùn)練和測(cè)試結(jié)果表明:GCB-YOLOv5s在參數(shù)量和浮點(diǎn)數(shù)計(jì)算量上均減少了近40%,且可達(dá)96.7%的精確率、96.4%的召回率和97.5%的平均精度。