史 濤,崔 杰,李 松
1.天津理工大學(xué)電氣工程與自動(dòng)化學(xué)院,天津 300384
2.華北理工大學(xué)電氣工程學(xué)院,河北 唐山 063210
無人機(jī)車輛檢測任務(wù)是利用無人機(jī)技術(shù)監(jiān)測和識(shí)別地面車輛。它可以為交通監(jiān)管、安全防護(hù)、突發(fā)事件處理和城市規(guī)劃等方面提高管理效率,為監(jiān)測周邊車輛情況、提供實(shí)時(shí)交通情況和為城市規(guī)劃等方面提供數(shù)據(jù)支持。無人機(jī)車輛檢測任務(wù)對(duì)于提高社會(huì)管理效率和城市運(yùn)行效率具有重要的應(yīng)用價(jià)值。
無人機(jī)車輛檢測算法是利用無人機(jī)拍攝的圖像或視頻進(jìn)行車輛識(shí)別和定位的技術(shù)。目前主流的無人機(jī)車輛檢測算法包括傳統(tǒng)的基于圖像處理和特征提取的方法,以及基于深度學(xué)習(xí)的方法。傳統(tǒng)的基于圖像處理和特征提取的方法包括Haar特征、HOG特征等,這些方法通過提取圖像中的局部特征并利用分類器進(jìn)行車輛檢測。例如,關(guān)曉斌等[1]提出結(jié)合使用HOG 特征與SIFT 特征作為車輛檢測的特征提取算法。張凱等[2]基于梯度分布直方圖(HOG)和支持向量機(jī)(SVM),開發(fā)了一種視頻車輛識(shí)別算法。然而,這些方法需要大量手工設(shè)計(jì)特征,難以提取圖像中的高級(jí)抽象特征。僅僅依靠低級(jí)特征識(shí)別效果有限。最近幾年,隨著深度學(xué)習(xí)在計(jì)算機(jī)視覺領(lǐng)域的廣泛應(yīng)用,目標(biāo)檢測技術(shù)取得長足進(jìn)步。目標(biāo)檢測算法分為多階段和單階段兩大類。常用的多階段算法包括R-CNN、Fast R-CNN、Faster R-CNN、U-net 等。魏相站等[3]在特征提取網(wǎng)絡(luò)中嵌入卷積模塊的注意力機(jī)制模塊結(jié)構(gòu),提出了一種基于改進(jìn)Faster RCNN 模型的檢測方法,曹磊等[4]基于VGG-16 網(wǎng)絡(luò)提取出圖片的多層特征,提出一種基于改進(jìn)RPN的Faster-RCNN 網(wǎng)絡(luò)SAR 圖像車輛目標(biāo)檢測方法。另一類是單階段檢測方法,采用回歸和分類分支預(yù)測邊界框和類別,實(shí)現(xiàn)快速端到端的檢測。代表性的單階段目標(biāo)檢測算法包括YOLO(you only look once)和SSD(single shot multibox detector)等。對(duì)于無人機(jī)車輛檢測任務(wù)實(shí)時(shí)性的要求,單階段算法相比較于多階段算法因其快速的檢測速度而更受關(guān)注。趙宇航等[5]提出了一種基于YOLO V3 深度卷積神經(jīng)網(wǎng)絡(luò)的車輛檢測方法,通過構(gòu)建一個(gè)基于殘差網(wǎng)絡(luò)的卷積神經(jīng)網(wǎng)絡(luò)提取每幀視頻的深度特征,提高了車輛檢測過程中的目標(biāo)置信度,降低了漏檢率。宋世奇等[6]提出的改進(jìn)SSD 車輛檢測算法利用K-means++聚類算法獲取適應(yīng)航拍車輛目標(biāo)的默認(rèn)候選框參數(shù)信息,并在特征提取網(wǎng)絡(luò)骨架中加入了具有抗混疊效應(yīng)的可學(xué)習(xí)低通濾波層提高了小尺度目標(biāo)車輛特征的有效傳遞提取。范江霞等[7]提出的改進(jìn)YOLOv5s 算法對(duì)錨框尺寸進(jìn)行修正,并通過增加注意力機(jī)制網(wǎng)絡(luò),提升了模型識(shí)別車輛的速度和準(zhǔn)確性。
近段時(shí)間,針對(duì)無人機(jī)車輛檢測算法精度低、易受背景環(huán)境干擾、難以檢測微小目標(biāo)車輛等問題,趙倩等[8]提出一種基于多重金字塔和多尺度注意力的輕量級(jí)YOLOv5算法。在主干網(wǎng)絡(luò)中減少下采樣次數(shù),提高了小目標(biāo)檢測能力。張利豐等[9]提出了一種改進(jìn)YOLOv8的車輛目標(biāo)檢測算法RBT-YOLO,使用SoftNMS(soft non maximum suppression)替換原有NMS,使模型對(duì)候選框的處理方式更為溫和,增強(qiáng)了模型對(duì)目標(biāo)的檢測能力。孫慶[10]提出了一種基于深度學(xué)習(xí)的車輛檢測算法,在特征融合部分使用深度可分離卷積(depthwise separable convolution,DSConv)替代BiFPN 網(wǎng)絡(luò)中的普通卷積,深度可分離卷積能夠提高特征融合效率,進(jìn)而減少背景環(huán)境對(duì)于車輛特征的干擾。張河山等[11]提出一種改進(jìn)的YOLOX 網(wǎng)絡(luò)用于無人機(jī)航拍圖像的檢測。在特征融合部分引入自適應(yīng)空間特征融合(adaptively spatial feature fusion,ASFF)模塊增強(qiáng)網(wǎng)絡(luò)的特征學(xué)習(xí)能力,將二元交叉熵?fù)p失(BCE loss)函數(shù)替換為變焦距損失(varifocal loss)函數(shù)來加強(qiáng)網(wǎng)絡(luò)對(duì)正樣本的學(xué)習(xí)。但上述作者的研究只局限于增強(qiáng)小目標(biāo)車輛的提取效果或者減少環(huán)境背景對(duì)于車輛特征提取的干擾等方面的一種,且提升改進(jìn)效果有限。
自從單階段目標(biāo)檢測算法YOLO面世以來,研究人員就在不斷對(duì)其進(jìn)行改進(jìn)。Ultralytics團(tuán)隊(duì)作為該算法的主要開發(fā)者,他們在2023 年提出了YOLO 的最新的版本YOLOv8,算法在滿足實(shí)時(shí)性的同時(shí),還具備了較高的檢測精度與魯棒性,適合運(yùn)用于對(duì)無人機(jī)目標(biāo)車輛的檢測進(jìn)行針對(duì)性改進(jìn)。因此,本文基于YOLOv8n 對(duì)模型進(jìn)行優(yōu)化,提出了一種基于YOLOv8n 的無人機(jī)實(shí)時(shí)車輛檢測算法YOLOv8-CX,本文的主要工作如下:
(1)引入Deformable ConvNets v1-3[12-14]改進(jìn)C2f模塊,針對(duì)不同尺寸大小的車輛,更加靈活地提取其特征。
(2)將large separable kernel attention[15]與YOLOv8中SPPF模塊結(jié)合,通過捕獲長程依賴性和適應(yīng)性,來減少復(fù)雜背景對(duì)車輛檢測的干擾。
(3)在YOLOv8 頸部網(wǎng)絡(luò)采用(ment network for tiny object deteciton,CF-FPN)[16]特征融合結(jié)構(gòu)以增強(qiáng)對(duì)小目標(biāo)車輛的檢測效果,CF-FPN 結(jié)構(gòu)能夠有效地結(jié)合上下文信息,并抑制不同尺度特征之間的沖突信息。
(4)將YOLOv8 頭部替換為Dynamic Head[17]檢測頭,通過結(jié)合尺度、空間和任務(wù)三種注意力函數(shù),使得模型在上述三種改進(jìn)下的性能效果進(jìn)一步提升。
YOLO是一種實(shí)時(shí)目標(biāo)檢測算法,它將圖像劃分為網(wǎng)格單元,并在每個(gè)單元內(nèi)同時(shí)預(yù)測目標(biāo)的邊界框和類別,以實(shí)現(xiàn)快速準(zhǔn)確的目標(biāo)檢測。YOLOv1[18]是首個(gè)版本,采用單一尺度的全卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測,具有實(shí)時(shí)性和高效性的特點(diǎn)。YOLOv2[19]在YOLOv1的基礎(chǔ)上引入了多尺度特征圖和Anchor Boxes,提高了檢測精度和魯棒性。YOLOv3[20]進(jìn)一步改進(jìn)了網(wǎng)絡(luò)結(jié)構(gòu),采用了更深的Darknet-53作為特征提取網(wǎng)絡(luò),并引入了多尺度預(yù)測和跨尺度連接,提高了檢測速度和準(zhǔn)確性。YOLOv4[21]在YOLOv3 的基礎(chǔ)上引入了CSPDarknet53和SPP結(jié)構(gòu),進(jìn)一步提高了檢測性能和速度。YOLOv5[22]通過引入更輕量級(jí)的網(wǎng)絡(luò)結(jié)構(gòu)和多尺度訓(xùn)練,提高了檢測速度和魯棒性。而YOLOv7[23]則引入了可擴(kuò)展的高效層聚合網(wǎng)絡(luò)E-ELAN、創(chuàng)新的過渡模塊和重參數(shù)化結(jié)構(gòu)等策略,以增強(qiáng)特征提取和語義信息表達(dá)的能力,進(jìn)一步優(yōu)化了目標(biāo)檢測效果。
YOLO算法[24-26]歷經(jīng)迭代,目前已經(jīng)升級(jí)到Y(jié)OLOv8,且基于縮放系數(shù)提供了N/S/M/L/X 尺度的不同大小模型。YOLOv8 算法結(jié)構(gòu)參考了YOLOv7 ELAN 的設(shè)計(jì)思想,在骨干和頸部網(wǎng)絡(luò)中采用了YOLOv5 的C2f 結(jié)構(gòu),以獲得更豐富的梯度流。在頭部網(wǎng)絡(luò)中,YOLOv8采用了解耦頭結(jié)構(gòu),將分類和檢測頭分離。此外,YOLOv8采用了TaskAlignedAssigner 正樣本分配策略,并引入了Distribution Focal Loss 作為回歸損失。圖1 展示了YOLOv8算法結(jié)構(gòu)。通過這些改進(jìn),YOLOv8在損失計(jì)算和網(wǎng)絡(luò)結(jié)構(gòu)方面取得了顯著的進(jìn)展。
圖1 YOLOv8網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 YOLOv8 network structure
考慮到無人機(jī)設(shè)備有限的硬件性能,本文采用權(quán)值與參數(shù)量最小的YOLOv8n 作為算法模型。但在實(shí)際的檢測過程中,YOLOv8n算法存在一些問題。首先,YOLOv8n算法采用的標(biāo)準(zhǔn)卷積在提取不同尺度大小車輛的特征時(shí),效果不是很好。其次,在檢測任務(wù)中,檢測背景環(huán)境的復(fù)雜性對(duì)車輛檢測造成了很大的干擾,特別是對(duì)于小目標(biāo)車輛的檢測有很大的挑戰(zhàn)。但YOLOv8n算法在這種情況下,對(duì)車輛和小目標(biāo)車輛的檢測結(jié)果并不理想,容易出現(xiàn)誤檢以及漏檢的情況。
為了解決YOLOv8n 算法存在的問題,提出了一種改進(jìn)YOLOv8n 的檢測網(wǎng)絡(luò)模型YOLOv8-CX。圖2 為改進(jìn)后的YOLOv8n 結(jié)構(gòu)示意圖,首先在YOLOv8n 的骨干網(wǎng)絡(luò),采用C2f-DCN 模塊替換第八層的C2f 模塊,SPPF-LSKA 模塊替換SPPF 模塊。其次在YOLOv8n的頸部網(wǎng)絡(luò)使用CF-FPN 結(jié)構(gòu)進(jìn)行特征融合。最后將YOLOv8n 的頭部網(wǎng)絡(luò)更換為DyHead 模塊進(jìn)行預(yù)測輸出。C2f-DCN 模塊增強(qiáng)了對(duì)不同尺度車輛特征的提取能力。SPPF-LSKA模塊目的是減少無關(guān)背景特征對(duì)車輛檢測的干擾,提高模型在復(fù)雜環(huán)境的準(zhǔn)確率。而CFFPN特征融合結(jié)構(gòu)通過結(jié)合上下文信息,提高了對(duì)小目標(biāo)車輛的檢測能力。DyHead 模塊則通過結(jié)合尺度、空間和任務(wù)三種注意力機(jī)制,使模型在識(shí)別不同尺度、復(fù)雜背景和微小目標(biāo)車輛情況下的性能進(jìn)一步提升。
圖2 YOLOv8-CX網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 YOLOv8-CX network structure
2.1.1 可變形卷積DCN
傳統(tǒng)卷積的優(yōu)點(diǎn)是在處理一些靜態(tài)或較為規(guī)則的低復(fù)雜度目標(biāo)時(shí)具有良好的性能,但無人機(jī)車輛檢測往往是動(dòng)態(tài)任務(wù),且不同類別的車輛尺寸差異較大,傳統(tǒng)卷積可能無法很好地適應(yīng)這些尺寸變化。而可變形卷積(DCN)可以根據(jù)目標(biāo)的空間和形狀位置進(jìn)行動(dòng)態(tài)調(diào)整,更好地捕捉目標(biāo)特征來適應(yīng)不同車輛動(dòng)態(tài)尺寸的變化。在可變形卷積(DCN)中,采樣位置不再局限于規(guī)則的網(wǎng)格位置,而是通過引入一個(gè)偏移量(offset)來自由采樣。過程如圖3所示。圖片左側(cè)代表輸入特征,右側(cè)代表輸出特征。首先卷積(Conv)對(duì)輸入特征進(jìn)行預(yù)處理,生成偏移量和調(diào)制量,然后利用這些偏移量將規(guī)則分布的3×3像素點(diǎn)(黑色)轉(zhuǎn)換為不規(guī)則任意分布的9個(gè)像素點(diǎn)(虛線連接的像素點(diǎn))。接著,利用生成的新像素點(diǎn)對(duì)輸入圖像進(jìn)行采樣,得到采樣后的特征圖。最后,將采樣后的特征圖與卷積核進(jìn)行逐元素相乘,并進(jìn)行求和操作,得到最終的卷積結(jié)果。
圖3 可變形卷積過程Fig.3 Deformable convolution process
2.1.2 可變形RoI池化
池化層是卷積神經(jīng)網(wǎng)絡(luò)中常見的層級(jí)結(jié)構(gòu),用作降低輸入數(shù)據(jù)的維度,減少模型參數(shù)和計(jì)算量,同時(shí)提取數(shù)據(jù)中的關(guān)鍵特征。傳統(tǒng)的池化層是在固定大小的窗口內(nèi)進(jìn)行最大值或平均值的操作,以降低特征圖的尺寸。相比之下,可變形RoI(region of interest)池化層是一種針對(duì)目標(biāo)檢測任務(wù)設(shè)計(jì)的池化層,它可以根據(jù)目標(biāo)的形狀和大小來動(dòng)態(tài)調(diào)整池化窗口的形狀和大小,從而更好地適應(yīng)不同尺寸變化目標(biāo)的特征??勺冃蜶oI 池化過程如圖4所示。首先,針對(duì)輸入特征圖,可變形RoI池化會(huì)生成對(duì)應(yīng)的感興趣區(qū)域,并將其劃分為K×K個(gè)子區(qū)域。其次,針對(duì)每一個(gè)子區(qū)域的位置,計(jì)算其各自對(duì)應(yīng)的偏移量,對(duì)于每個(gè)子區(qū)域,根據(jù)偏移量調(diào)整采樣位置,并得到調(diào)整采樣位置后新子區(qū)域的特征值。接著,對(duì)每個(gè)新子區(qū)域的采樣特征值進(jìn)行自適應(yīng)最大池化操作,以獲得固定大小的輸出。最后將所有新子區(qū)域的池化結(jié)果按照一定的順序拼接在一起,形成最終的可變形RoI池化結(jié)果。與可變形卷積DCN不同的是,可變形RoI池化的偏移量是通過全連接(fc)層得到的。
圖4 可變形RoI池化過程Fig.4 Deformable RoI pooling process
2.1.3 C2f-DCN結(jié)構(gòu)
提升多尺度特征提取能力C2f 模塊需要整合不同尺度的特征圖。Deformable ConvNets可以學(xué)習(xí)非線性的變形field,更好捕捉特征點(diǎn)在不同尺度間的對(duì)應(yīng)關(guān)系。這有利于提取多尺度特征的上下文信息。強(qiáng)化特征點(diǎn)對(duì)應(yīng)關(guān)系學(xué)習(xí)Deformable ConvNets通過變形卷積核可以建立特征點(diǎn)在不同尺度間更復(fù)雜的對(duì)應(yīng)關(guān)系。這比普通卷積更適用于C2f模塊學(xué)習(xí)跨尺度特征點(diǎn)的變換。
在深層網(wǎng)絡(luò)中,目標(biāo)的形變特征往往更加復(fù)雜,因此,本文僅對(duì)YOLOv8 骨干網(wǎng)絡(luò)中第八層的C2f 結(jié)構(gòu)進(jìn)行改進(jìn),將C2f 結(jié)構(gòu)中Bottleneck結(jié)構(gòu)的常規(guī)卷積改為可變形卷積并融入可變形RoI池化層。改進(jìn)后的C2f-DCN結(jié)構(gòu)如圖5所示。
圖5 C2f-DCN結(jié)構(gòu)Fig.5 Structure of C2f-DCN
在改進(jìn)的Bottleneck結(jié)構(gòu)中,引入兩層可變形卷積,使模型能夠自由地對(duì)輸入特征圖進(jìn)行采樣,從而更好地學(xué)習(xí)到目標(biāo)物體的尺度、背景、和形變等信息。經(jīng)過卷積層后,利用殘差連接將輸出特征圖與輸入特征圖進(jìn)行融合。最后,采用可變形RoI 池化,通過學(xué)習(xí)來自前面特征映射和RoI 池化的偏移量,擴(kuò)大模型的感受野,提取更復(fù)雜的特征。這樣一來,改進(jìn)后的模塊能夠自適應(yīng)學(xué)習(xí)不同尺寸大小的物體,更好地理解學(xué)習(xí)不同尺寸下的車輛特征,具有更強(qiáng)的魯棒性和泛化能力。
由于無人機(jī)檢測的車輛所處環(huán)境復(fù)雜多變,為了提高模型對(duì)車輛關(guān)鍵特征的提取能力,在YOLOv8 骨干網(wǎng)絡(luò)中的SPPF 模塊引入LSKA(large separable kernel attention)注意力機(jī)制,網(wǎng)絡(luò)忽略無關(guān)背景信息干擾,注意到更多有效車輛特征信息。以往的注意力機(jī)制selfattention 與large kernel attention(LKA)等存在許多不足,self-attention 注意力具有較強(qiáng)的長程依賴性和適應(yīng)性,但忽略了圖像的二維結(jié)構(gòu)。LSA注意力解決了selfattention 注意力忽略圖像二維結(jié)構(gòu)的問題,但其在處理大尺寸卷積核時(shí)計(jì)算量過大。本文引入的LSKA 注意力機(jī)制很好地解決了LSA 注意力在處理大尺寸卷積核時(shí)計(jì)算量過大的問題,以較小的計(jì)算成本實(shí)現(xiàn)了較高的性能。
LSKA是一種創(chuàng)新的大型可分離核注意力模塊,它通過對(duì)大核卷積操作進(jìn)行分解來捕獲長程依賴性和適應(yīng)性,同時(shí)又將分解得到的2D 卷積核再次分解為串聯(lián)的1D 核,降低了計(jì)算復(fù)雜度和內(nèi)存需求。其過程結(jié)構(gòu)如圖6所示。首先將一個(gè)K×K的卷積分解為(2d-1)×(2d-1)深度卷積、K/d×K/d深度擴(kuò)張卷積和1×1 卷積,其次將2D 的深度卷積核與深度擴(kuò)張卷積核繼續(xù)分解為1D 的水平(橫向)卷積核與垂直(縱向)卷積核,最后將分解后的卷積核依次串聯(lián)。
圖6 LSKA注意力結(jié)構(gòu)Fig.6 LSKA attention structure
改進(jìn)后的SPPF-LSKA結(jié)構(gòu)如圖7所示。
圖7 SPPF-LSKA模塊結(jié)構(gòu)Fig.7 SPPF-LSKA modular structure
在無人機(jī)車輛檢測任務(wù)中,由于小目標(biāo)車輛分辨率低、體積小,所以小目標(biāo)車輛通常比大目標(biāo)車輛更加難以檢測。YOLOv8 中的頸部網(wǎng)絡(luò)通過采用PANet 結(jié)構(gòu)融合不同尺度特征之間的信息,提高了對(duì)小目標(biāo)車輛的檢測能力。但這種特征融合的結(jié)構(gòu)忽略了不同尺度特征之間沖突信息的存在,同時(shí)缺乏上下文信息,尤其是對(duì)于微小物體,它們很容易被沖突信息淹沒。為了解決YOLOv8頸部網(wǎng)絡(luò)中存在的問題,本文采用了將上下文增強(qiáng)和特征細(xì)化相結(jié)合的CF-FPN特征融合結(jié)構(gòu)來替代PANet結(jié)構(gòu)。CF-FPN整體結(jié)構(gòu)如圖8所示。
圖8 CF-FPN結(jié)構(gòu)Fig.8 CF-FPN structure
CEM模塊采用不同膨脹率的空洞卷積來獲取不同感受野的上下文信息,并從上到下注入FPN中以豐富上下文信息。CEM 模塊結(jié)構(gòu)如圖9 所示。其中圖片左側(cè)是CEM 模塊的整體結(jié)構(gòu),右側(cè)是Fusion 融合的三種操作方法。由于串聯(lián)融合能夠更加靈活地融合兩個(gè)張量的信息,所以本文采用串聯(lián)融合(concatenation fusion)操作方式。
圖9 CEM模塊結(jié)構(gòu)Fig.9 CEM module structure
FPM模塊用來過濾沖突信息,減少語義差異。它通過自適應(yīng)融合不同層間的特征,消除層間的沖突信息,以防止小目標(biāo)消失在沖突信息中。FPM 模塊結(jié)構(gòu)如圖10 所示。其中圖(a)為FPM 模塊整體框架,圖(b)為圖(a)中虛線代表的結(jié)構(gòu)。
圖10 FPM模塊結(jié)構(gòu)Fig.10 FPM module structure
通過替換特征融合模塊,頸部網(wǎng)絡(luò)得到了優(yōu)化。新的CF-FPN特征融合模塊將CEM模塊與FPM模塊相結(jié)合,不僅獲得了豐富的上下文信息,還抑制了沖突信息對(duì)小物體的干擾。因此,模型在小目標(biāo)車輛識(shí)別方面的能力得到了增強(qiáng),從而提高了模型的精度和性能。
YOLOv8 原有的檢測頭部存在一些局限性,例如(1)采用的傳統(tǒng)單尺度預(yù)測結(jié)構(gòu),無法很好地處理多尺度目標(biāo)。它僅從特征圖的一個(gè)尺度上進(jìn)行預(yù)測,忽略了其他尺度特征對(duì)檢測的貢獻(xiàn)。(2)預(yù)測頭部沒有考慮上下文信息,每個(gè)預(yù)測位置的預(yù)測都獨(dú)立進(jìn)行,缺乏全局視野。(3)預(yù)測頭部參數(shù)量少,表達(dá)能力有限。難以深度挖掘特征中的空間結(jié)構(gòu)信息。所以總體來說,YOLOv8原有頭部的單尺度預(yù)測結(jié)構(gòu)和缺乏動(dòng)態(tài)學(xué)習(xí)能力,給目標(biāo)檢測尤其是多尺度目標(biāo)檢測帶來一定限制。而Dynamic Head 采用動(dòng)態(tài)路由機(jī)制,可以更好地融合上下文信息,識(shí)別多尺度目標(biāo)。它可以動(dòng)態(tài)調(diào)整不同特征層的權(quán)重,有利于提取多尺度特征。
為進(jìn)一步提升模型在識(shí)別不同尺度、復(fù)雜背景和小目標(biāo)車輛時(shí)的性能,本文在YOLOv8 頭部網(wǎng)絡(luò)引入DyHead(Dynamic Head)模塊。DyHead 模塊通過利用自我注意力機(jī)制在尺度感知注意力、空間感知注意力與任務(wù)感知注意力三者上實(shí)現(xiàn)了統(tǒng)一。其中,在檢測層上給定三維特征張量F∈RL×S×C,該注意力計(jì)算公式(1)如下所示:
其中,F(xiàn)代表一個(gè)輸入的三維張量L×S×C,πL(·)、πS(·)和πC(·)分別為尺度感知注意力模塊、空間感知注意力模塊與任務(wù)感知注意力模塊。并分別只作用到三維張量F的L、S和C維度上。πL(·)、πS(·)和πC(·)注意力模塊以及DyHead結(jié)構(gòu)如圖11所示。
圖11 DyHead模塊結(jié)構(gòu)圖Fig.11 DyHead module structure diagram
圖11 中,圖(a)表示了πL(·)、πS(·)與πC(·)三種注意力模塊的內(nèi)部結(jié)構(gòu)及三者串聯(lián)構(gòu)成的單個(gè)DyHead 結(jié)構(gòu),這三種注意力模塊應(yīng)用與檢測頭部,可以多次堆疊使用。圖(b)則表示多個(gè)DyHead 模塊疊加使用的過程??紤]到計(jì)算開銷和模型性能等多方面因素,本文只使用一個(gè)DyHead模塊。
Mapsai 數(shù)據(jù)集是由Spoon Kutlery 2023 年7 月在Roboflow 平臺(tái)上發(fā)布的公開汽車數(shù)據(jù)集。該數(shù)據(jù)集將被檢測車輛分為小型貨車、野營車、汽車、摩托車、小型卡車、大型卡車、拖拉機(jī)、大型貨車與其他車等九個(gè)類別,共有9 357 張圖像。其中8 085 張圖像作為訓(xùn)練集,774張圖像作為驗(yàn)證集,398張圖像作為測試集。
本模型所有實(shí)驗(yàn)環(huán)境都是在基于ubuntu20.04 系統(tǒng)下進(jìn)行的,硬件配置為CPU,14vCPU,Intel?Xeon?Gold 6330 CPU;GPU,RTX 3090,24 GB GPU,編譯環(huán)境為python 3.8.10+pytorch 1.13+cuda 11.3。
在實(shí)驗(yàn)時(shí),將初始學(xué)習(xí)率設(shè)置為0.01,批量大小設(shè)置為32,權(quán)重的衰減率設(shè)置為0.000 5,熱身輪數(shù)設(shè)置為3,色相的增強(qiáng)系數(shù)設(shè)置為0.015,飽和度的增強(qiáng)系數(shù)為0.7,亮度的增強(qiáng)系數(shù)為0.4,訓(xùn)練周期設(shè)置為150。
為了方便評(píng)價(jià)模型改進(jìn)后的性能,本文將準(zhǔn)確率(P)、召回率(R)、平均精度(mAP)、每秒幀數(shù)(FPS)、Giga浮點(diǎn)運(yùn)算每秒(GFLOPs)、權(quán)重文件(MB)大小作為本文的評(píng)價(jià)指標(biāo)。
準(zhǔn)確率(P)為所有預(yù)測為正樣本的結(jié)果中,預(yù)測正確的比率。定義如下:
召回率(R)為是指在所有實(shí)際正例中,模型正確識(shí)別為正例的比例。定義如下:
其中,TP表示檢測結(jié)果中預(yù)測正確的樣本數(shù)量、FP表示檢測結(jié)果中預(yù)測錯(cuò)誤的樣本數(shù)量、FN 表示樣本所有正確目標(biāo)中未被檢測到的數(shù)量。
平均精度(mAP)對(duì)m個(gè)類別的準(zhǔn)確率(P)與召回率(R)綜合考慮,較全面地反應(yīng)網(wǎng)絡(luò)的性能。定義如下:
每秒幀數(shù)(FPS)反映了模型的推理速度,當(dāng)FPS 大于30 時(shí),模型就滿足了實(shí)時(shí)性檢測的要求。Giga 浮點(diǎn)運(yùn)算每秒(GFLOPs)與權(quán)重文件(MB)是度量模型復(fù)雜度的指標(biāo)。GFLOPs 與權(quán)重文件(MB)越小,表示模型所需要的計(jì)算能力就越小。
在CF-FPN 特征融合結(jié)構(gòu)CEM 模塊中支持加權(quán)融合(weighted fusion)、自適應(yīng)融合(adaptive fusion)和串聯(lián)融合(concatenation fusion)三種特征融合方式。為了驗(yàn)證本文使用串聯(lián)融合方式的性能優(yōu)異性,與另外兩種融合方式進(jìn)行了實(shí)驗(yàn)對(duì)比,實(shí)驗(yàn)結(jié)果如表1所示。
表1 不同特征融合方式性能對(duì)比Table 1 Performance comparison of different feature fusion methods
從表1中可以看出,串聯(lián)融合的特征融合方式相比于其他兩種方式,串聯(lián)融合有著更高的檢測精度與檢測速度,且模型所需的計(jì)算能力最小。
DyHead 模塊串聯(lián)的數(shù)量決定著模型檢測的性能。本文對(duì)比了串聯(lián)1~6塊DyHead模塊對(duì)于模型性能的影響。由于串聯(lián)操作增加了模型計(jì)算的復(fù)雜度,所以每添加一塊DyHead 模塊就要多付出0.5 GFLOPs 左右的計(jì)算力。對(duì)比實(shí)驗(yàn)結(jié)果如表2所示。
表2 不同數(shù)量DyHead模塊性能對(duì)比Table 2 Performance comparison of different numbers of DyHead modules
從表2可以看出,并不是串聯(lián)的Dyhead模塊越多性能就會(huì)越好,反而隨著串聯(lián)模塊的增加,模型的性能卻逐漸降低。因此,本文只串聯(lián)1 塊DyHead 模塊進(jìn)行預(yù)測輸出。
為了驗(yàn)證模塊的性能和選擇最佳模塊,本文設(shè)計(jì)了對(duì)SPPF-LSKA和CF-FPN模塊的橫向?qū)Ρ葘?shí)驗(yàn)。通過橫向?qū)Ρ葘?shí)驗(yàn),將SPPF與不同的注意力機(jī)制如DAattention、self-attention、LSA和LSKA進(jìn)行融合。實(shí)驗(yàn)結(jié)果如表3所示。將YOLOv8的頸部網(wǎng)絡(luò)采用EfficientRepBiPAN、AFPN、REPGFPN 和CF-FPN 四種不同的特征融合結(jié)構(gòu)。實(shí)驗(yàn)結(jié)果如表4所示。
表3 SPPF與不同注意力機(jī)制融合橫向?qū)Ρ萒able 3 Horizontal comparison of SPPF fused with different attention mechanisms
表4 頸部網(wǎng)絡(luò)不同特征融合結(jié)構(gòu)橫向?qū)Ρ萒able 4 Horizontal comparison of different feature fusion structures in neck networks
從表3 可以看出,在mAP50 指標(biāo)上,將LSKA 注意力機(jī)制與SPPF 融合后取得了最好的性能為56.7%,表明LSKA是與SPPF融合時(shí)最有效的注意力機(jī)制。在每秒幀數(shù)(FPS)指標(biāo)上,SPPF-DAattention 的速度最快為122.1 FPS,而SPPF-LSA 的速度最慢為111.3 FPS,說明LSA機(jī)制與SPPF融合時(shí)計(jì)算成本最大。在模型大小方面,LSA 注意力機(jī)制最大,其他三者保持相同。綜合考慮mAP50、FPS 和模型大小,SPPF-LSKA 表現(xiàn)最佳,同時(shí)取得最高準(zhǔn)確率和較高速度,證明LSKA 是與SPPF融合時(shí)的最佳選擇。
從表4可以得到,在準(zhǔn)確率mAP50指標(biāo)上,CF-FPN達(dá)到56.4%,高于其他三種結(jié)構(gòu),表明CF-FPN在提取和融合特征的能力上更強(qiáng)。在運(yùn)行效率FPS 指標(biāo)上,CFFPN的126.7 FPS也最高,說明CF-FPN在實(shí)時(shí)性能上優(yōu)于其他結(jié)構(gòu)。在計(jì)算復(fù)雜度GFLOPs 指標(biāo)上,CF-FPN雖然不如RepGFPN低,但比其他兩種結(jié)構(gòu)低,計(jì)算效率較好。在模型大小指標(biāo)權(quán)重文件大小上,CF-FPN 僅為4.4 MB,比其他三種結(jié)構(gòu)更小,部署和應(yīng)用更方便??傮w來說,CF-FPN 特征融合結(jié)構(gòu)在檢測準(zhǔn)確率,運(yùn)行效率,計(jì)算效率和模型大小四個(gè)方面都表現(xiàn)出色,證明其特征提取和融合能力最強(qiáng),是一種優(yōu)秀的實(shí)時(shí)目標(biāo)檢測特征融合結(jié)構(gòu)。
為了更好地驗(yàn)證改進(jìn)的各模塊以及改進(jìn)模塊之間的組合對(duì)于原模型性能提升的影響。本文設(shè)計(jì)了消融實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如表5所示。
表5 消融實(shí)驗(yàn)結(jié)果Table 5 Fusion experiment results
通過表5 實(shí)驗(yàn)結(jié)果證明了隨著各個(gè)改進(jìn)模塊的加入,模型在準(zhǔn)確率(P)、召回率(R)和平均精度(mAP)等方面都有不同程度的提升。C2f-DCN模塊和SPPF-LSKA模塊分別對(duì)模型準(zhǔn)確率和召回率有所提升。加入C2f-DCN模塊可以提升準(zhǔn)確率,但會(huì)降低FPS。SPPF-LSKA模塊可以提高準(zhǔn)確率,但會(huì)增加計(jì)算量和模型大小。CF-FPN 模塊再將GFLOPS 降低0.8 的同時(shí)且對(duì)于模型召回率提升了10個(gè)百分點(diǎn)左右,提升幅度較大,證明了CF-FPN 特征融合結(jié)構(gòu)不僅不會(huì)增加運(yùn)算成本,而且會(huì)降低運(yùn)算成本。且對(duì)于小目標(biāo)車輛的檢測有很好的效果。而DyHead模塊由于三種注意力的統(tǒng)一,在準(zhǔn)確率、召回率和平均精度上都有較為明顯的提升。組合使用多個(gè)模塊(如C2f-DCN、SPPF-LSKA、DyHead)可以進(jìn)一步提升準(zhǔn)確率,但會(huì)影響FPS和模型大小。最后將各個(gè)模塊結(jié)合起來,將它們的優(yōu)勢取長補(bǔ)短。結(jié)合后的模型在準(zhǔn)確率、召回率和平均精度上都達(dá)到了最高,且FPS為72.6仍然滿足實(shí)時(shí)性檢測的需求。
原YOLOv8n 算法在面對(duì)不同尺寸、復(fù)雜背景和小目標(biāo)的車輛時(shí)效果不是很好。為了驗(yàn)證改進(jìn)后YOLOv8-CX 算法在面對(duì)這些條件下的檢測效果,本文挑選了一些具有針對(duì)性的圖片來進(jìn)行測試。YOLOv8-CX算法測試效果如圖12所示。
圖12 YOLOv8-CX檢測效果圖Fig.12 YOLOv8-CX detection rendering
從圖12中可以看出,改進(jìn)后YOLOv8-CX算法在面對(duì)不同背景環(huán)境與不同尺寸的車輛時(shí)都有很好的檢測效果,且能夠有效地檢測到小目標(biāo)車輛。證明改進(jìn)后YOLOv8-CX算法具有較強(qiáng)的魯棒性和準(zhǔn)確性。
為了進(jìn)一步驗(yàn)證算法的性能,且考慮到無人機(jī)車輛檢測任務(wù)實(shí)時(shí)性的要求對(duì)于多階段目標(biāo)檢測算法不適合應(yīng)用,所以本次實(shí)驗(yàn)將YOLOv8-CX算法與當(dāng)前一些主流單階目標(biāo)檢測算法做了對(duì)比,結(jié)果如表6所示。
表6 不同算法對(duì)比結(jié)果Table 6 Comparison of results from different algorithms
與Efficientnet和RT-DETR算法相比較,YOLOv8-CX在更低的GFLOPs 與權(quán)重文件下,準(zhǔn)確率(P)分別提升了13和7個(gè)百分點(diǎn),召回率(R)提升了12.9和14.2個(gè)百分點(diǎn),mAP50 提升了8.6 和12.2 個(gè)百分點(diǎn)。與最新的實(shí)時(shí)目標(biāo)檢測算法RT-DTER-18和華為推出的GOLD-YOLO相比,YOLOv8-CX 仍然具有最高的檢測性能,相較于RT-DTER-18 算法,YOLOv8-CX 在準(zhǔn)確率(P)、召回率(R)和mAP50 分別提升了6.4、4.0 和9.7 個(gè)百分點(diǎn)。相較于GOLD-YOLO算法,YOLOv8-CX在準(zhǔn)確率(P)、召回率(R)和mAP50分別提升了8.0、10.0和5.7個(gè)百分點(diǎn)。而與YOLOv3、YOLOv5、YOLOv6、YOLOv7和YOLOv8等輕量級(jí)YOLO系列算法比較,YOLOv8-CX 算法在仍然滿足實(shí)時(shí)性檢測的情況下,準(zhǔn)確率(P)分別提升了16、12.5、26.7、9 和8.5 個(gè)百分點(diǎn),召回率(R)提升了12.9、15、10.7、6.8和10.2個(gè)百分點(diǎn),mAP50提升了12.2、10.8、16.5、11.2和6.2個(gè)百分點(diǎn)。漲幅明顯。
實(shí)驗(yàn)結(jié)果表明,與其他單階段目標(biāo)檢測算法比較,YOLOv8-CX算法以較低的模型體積實(shí)現(xiàn)了極高的檢測精度。且仍然滿足實(shí)時(shí)性的檢測需求。具有高效性與優(yōu)異性。
本文提出了一種改進(jìn)YOLOv8n的無人機(jī)車輛檢測算法。解決了傳統(tǒng)YOLOv8n算法在無人機(jī)車輛檢測任務(wù)中存在的問題。在骨干網(wǎng)絡(luò),提出C2f-DCN和SPPFLSKA模塊,C2f-DCN模塊增強(qiáng)了模型對(duì)于不同尺寸大小車輛特征的提取能力,SPPF-LSKA 模塊減少了背景環(huán)境對(duì)于車輛特征的干擾。在頸部網(wǎng)絡(luò),引入新的特征融合結(jié)構(gòu)CF-FPN提高了模型對(duì)于小目標(biāo)車輛的檢測能力。在頭部網(wǎng)絡(luò),使用集成了尺度、空間和任務(wù)三種注意力函數(shù)的DyHead 檢測頭進(jìn)一步提升了模型的性能。實(shí)驗(yàn)表明,與現(xiàn)有模型相比,改進(jìn)后的YOLOv8-CX 算法精度更高、對(duì)復(fù)雜環(huán)境和微小目標(biāo)情況下汽車的檢測效果更好,且滿足實(shí)時(shí)性的檢測需求,具有實(shí)際的應(yīng)用價(jià)值。但考慮到成本及硬件資源,未來的研究重點(diǎn)是在保證模型性能不降低的情況下,對(duì)模型進(jìn)行壓縮,以更好地部署到無人機(jī)檢測設(shè)備上。