叢玉華,何 嘯,邢長達,成旭明,唐 鑫,王志勝,歐陽權
(1 南京航空航天大學自動化學院,南京 210006; 2 南京理工大學紫金學院,南京 210023; 3 南京航空航天大學深圳研究院,廣東 深圳 518063)
無人機通過計算機視覺技術進行目標檢測時,因搭載的嵌入式設備性能受限,加上航拍圖像目標一般相對較小、背景復雜、圖像分辨率低,因此,在機載嵌入式設備上如何保證檢測速度和檢測精度是無人機端進行目標檢測的研究重點。一階目標檢測算法在無人機上應用能達到實時性要求,其中YOLO是經典的一階算法,Redmon在2018年提出了YOLOv3算法,選用更深的網絡,使得算法具有了更高的檢測效率和準確率[1]。后續的YOLO版本都是在YOLOv3基礎上對不同側面的改進,因此基于YOLO網絡框架針對實時性和高精度的要求進行改進。
卷積神經網絡(convolutional neural networks,CNN)由多個神經元連接而成,神經元承擔著信息傳遞的任務,能夠有效接收其感受野發送的信號,CNN主要由卷積層、歸一層、激活層、池化層及全連接層組成[2-3]。
1)卷積層
卷積層用于提取圖像的特征,其中的卷積核通過在輸入數據上不斷進行運算得到更深的特征圖。特征層矩陣各個點的計算公式為:
(1)
式中:U=(1,2,…,k);y表示特征層矩陣中單個點的值;t表示當前層級;i和j表示在卷積核及對應感受野中對應的位置坐標;x表示感受野對應的原圖區域;K表示卷積核;b表示偏置。
2)歸一層
使用歸一化對每一層的數據進行處理,將輸入從激活函數的飽和區變到非飽和區,能夠解決梯度消失的問題;在反向傳播的過程中,因為數據均值都在0附近,解決了梯度爆炸的問題。歸一層放在卷積層之后、激活層之前,將每一層的數據分布全部轉換在均值為0、方差為1的狀態下,其過程如式(2)~式(4)所示,使得網絡更加容易收斂,加快網絡的收斂速度。
(2)
(3)
(4)
式中:m表示數據數量;xi表示第i個數據;μ表示數據均值;σ2表示方差;ε是一個用于保證數值穩定的量;zi表示歸一化后的結果。
3)激活層
在卷積后一般有一個激活函數來幫助其表達復雜的特征,主要作用是增加CNN的非線性表達能力。
4)池化層
池化層主要是用來降低輸入特征圖的寬、高,能夠加快推理速度并保留主要特征。最大池化輸出特定區域內的最大值,平均池化輸出特定區域內的平均值。
5)全連接層
全連接層在CNN中能夠通過卷積層提取到的不同細節特征的組合來分類,并且在很大程度上能降低特征位置的偏移對分類所造成的影響。
YOLO系列網絡可以一次性預測多個目標的位置和類別,能夠實現端到端的目標檢測,YOLO網絡框架由主干特征提取網絡、特征加強網絡和特征輸出三個部分組成,下面對YOLO網絡框架進行兩方面改進:一是對網絡結構進行輕量化改進,以提升網絡的推理速度;二是在網絡結構中引入注意力機制,以提升目標檢測的精度,具體改進如下。
2.1.1 主干特征提取網絡CSPDark53-tiny
跨階段局部網絡(cross stage partial network,CSPNet)主要有3項功能:增強CNN的學習能力;消除計算的瓶頸;減少內存帶來的成本[4-5]。CSPDark53-tiny對CSPDarknet53在通道上進行了縮減,以提升推理速度。CSPDarknet53-tiny結構組件包括CBS模塊、Res Unit殘差模塊及CSP1_X模塊,如圖1所示。

圖1 CSPDarknet53-tiny結構圖
1)CBS模塊
CBS模塊結構由卷積(Conv)、批標準化(BN)及激活函數(SiLU)3個部分組成,激活函數SiLU可表示為:
O(x)=x·S(x)
(5)
式中:x為輸入;O(x)為輸出;S(x)為Sigmoid函數。
2)CSP1_X模塊
CSP1_X模塊結構借鑒了CSPNet結構,其主干部分進行一次卷積核大小為1的CBS模塊處理,完成特征整合后,再進行X次的Res Unit模塊的處理;其分支部分僅進行一次卷積核大小為1的CBS模塊處理完成特征整合;在得到兩個部分的處理結果后,將兩個部分的結果進行通道上的堆疊,并進行一次卷積核大小為1的CBS模塊處理完成特征整合。CSP1_X模塊結構如圖2所示。

圖2 CSP1_X模塊結構圖
3)Res Unit模塊
Res Unit模塊即殘差網絡(residual network,ResNet)中的殘差塊,是使用跳躍式連接的,這種結構能夠幫助CNN解決因使用過多卷積層所帶來的梯度消失等問題[6]。殘差網絡比較容易優化,可以通過增加網絡深度來提高其檢測精度。該結構主干部分進行一次卷積核大小為1的CBS模塊進行特征整合,再對其進行一次卷積核大小為3的CBS模塊處理完成特征提取;殘差邊不做任何處理,直接將輸入與主干部分的輸出進行結合。Res Unit模塊結構如圖3所示。

圖3 Res Unit模塊結構
2.1.2 融合SPP的CSPDark53-tiny
1)SPP模塊
SPP(spatial pyramid pooling)模塊借鑒了空間金字塔池化的思想,對輸入特征尺寸大小沒有限制,并且可以輸出一個固定大小的特征圖,使其能夠有效幫助網絡得到更寬的感受野[7]。SPP模塊首先對輸入進行一次卷積核大小為1的CBS模塊處理完成,特征整合;再通過3種尺度的卷積核對特征整合后的結果進行最大池化處理,將3次處理結果與特征整合結果相堆疊,對堆疊結果再進行一次卷積核大小為1的CBS模塊處理實現特征整合。以此融合多尺度特征提升特征提取能力。SPP模塊結構如圖4所示。

圖4 SPP模塊結構圖
2)CSP2_X模塊
CSP2_X模塊與CSP1_X模塊略有不同,其將主干部分進行的X次Res Unit模塊的處理替換為2*X次CBS模塊(一次卷積核大小為1的CBS模塊處理進行特征整合及一次卷積核大小為3的CBS模塊處理完成特征提取),有效減少網絡的計算量,提升檢測速度。CSP2_X模塊結構如圖5所示。

圖5 CSP2_X模塊結構圖
3)融合SPP后的主干網絡
SPP模塊結合CSP2_X模塊后引入主干特征提取網絡,具體結構如圖6所示。

圖6 融合SPP后的主干網絡圖
2.2.1 加權雙向特征金字塔網絡
加權雙向特征金字塔網絡(bidirectional feature pyramid network,BiFPN)是基于路徑聚合網絡(path aggregation network,PANet)的思想并做了一定的改進[8-9]。相較于PANet結構BiFPN刪除了只有單個輸入的節點,剔除了網絡中的一些冗余計算;在同一尺寸的特征圖上增加了跳躍連接,使特征融合時能夠獲得更多的特征;對于特征融合部分,BiFPN選擇引用權重對特征進行加權融合;BiFPN對于權值歸一化的方式采用了精度與softmax相近但速度比其快30%的歸一化方法,其公式為
(6)
式中:O表示輸出特征;Ii表示輸入特征;ωi表示一個可學習的權值,需通過RELU來確保ωi≥0;ε是一個用于保證數值穩定的量,通常設置為1×10-4。
BiFPN結構如圖7所示。

圖7 BiFPN結構圖
(7)
(8)

2.2.2 引入注意力機制
在目標檢測任務中,模型對于各個目標物體特征的關注點和關注程度是不同的。如果模型對所有特征圖的關注程度都一致,則會影響到模型的收斂速率,因此對模型來說怎么快速且有效的提取重要特征是非常重要的?;诰矸e塊的注意力機制(convolutional block attention module,CBAM)[10-11]是個輕量的注意力模塊,其計算量很小,能夠有效地讓網絡從通道及空間兩個角度學習到一個權重,選擇性地增強網絡通道及空間中的部分特征。結構如圖8所示,其包含兩部分:CAM(channel attention module)及SAM(spatial attention module)。

圖8 CBAM結構圖
CBAM模塊引入到特征加強網絡的兩類位置:一是主干特征提取網絡與特征加強網絡的銜接部分,作為特征加強網絡的輸入;二是特征加強網絡中上采樣和下采樣之后均引入CBAM模塊。
解耦頭結構將分類及回歸看作兩個任務,通過softmax得到分類結果,通過對邊框進行預測回歸得到邊框位置。解耦頭結構考慮到分類和定位對于特征的關注點不同,分類任務主要考慮的是每一個樣本的差異,而回歸任務考慮更多的是圖像邊界信息,因此解耦頭結構可以提升檢測的精度。但是解耦頭通過兩個分支分別處理兩個任務,其中的計算量也會隨之提升,因此須在送入解耦頭之前首先通過一個卷積核大小為1的卷積來進行通道縮減,以此來實現一個輕量的解耦頭,其結構如圖9所示。

圖9 解耦頭結構圖
將2.1~2.3節的改進融合后,最終目標檢測網絡稱為CSPBiA-YOLO,結構如圖10所示。圖10中主干特征提取網絡部分增加了SPP結構;主干特征提取網絡和特征加強網絡銜接部分以及特征加強網絡的上采樣和下采樣后皆增加了CBAM注意力模塊,特征加強網絡部分還增加了CSP2_X模塊;特征輸出部分采用改進后的解耦頭結構。

圖10 CSPBiA-YOLO結構圖
采用VisDrone航拍數據集[12]及部分自建數據集進行模型訓練。VisDrone數據集中有8 629張靜態圖像,自建數據集有3 000張靜態圖像,數據集中的訓練類別包含行人、自行車、汽車等共10個類別。數據集劃分為7 629張訓練圖像、1 000張驗證圖像及3 000張測試圖像。圖像采集自不同類型的相機、不同城市、不同的日照條件及不同的高度,單張圖像中往往包含多種目標信息、檢測目標較小且目標易受到遮擋。
1)IOU
在目標檢測任務中通常使用IOU(intersection over union)對選框的精度進行評估,IOU計算公式為:
(9)
式中:GT表示真實框的面積;PR為預測框的面積。
2)AP和mAP
AP(average precision)用來評估模型性能,是計算某類目標在不同召回率的情況下準確率的平均值,計算公式為:
(10)
式中:R為召回率;P(R)為召回率取R時的準確率。進一步,可以得到所有類別的平均AP,即mAP(mean average precision),其表達式為:
(11)
式中:AP(i)為類別序號取i時對應的精度均值;n為類別數。mAP0.5指的就是IOU閾值為0.5時的mAP值,文中實驗所有的mAP都為IOU閾值取0.5時的值。
網絡訓練階段的參數設置如表1。

表1 訓練參數
1)CSPBiA-YOLO目標檢測實驗
CSPBiA-YOLO模型與部分現有模型對比數據如表2。

表2 CSPBiA-YOLO對比數據
由表2可知,改進后的CSPBiA-YOLO網絡比YOLOv3在僅增加3 ms推理速度的情況下mAP提升了3%;相較于YOLOv5-s網絡,CSPBiA-YOLO網絡在增加了2 ms推理速度的情況下mAP提升了2%;相較于YOLOX-tiny網絡,CSPBiA-YOLO網絡在增加了僅1.5 ms推理速度的基礎上mAP提升了2%;相較于推理速度最快的YOLOv4-tiny網絡,CSPBiA-YOLO網絡在增加了8 ms推理速度的情況下mAP提升了7%。YOLOv3,YOLOv4-tiny,YOLOv5-s,YOLOX-tiny,CSPBiA-YOLO各個類的AP值如圖11~圖15所示。

圖11 YOLOv3各個類的AP值(mAP=29.35%)

圖12 YOLOv4-tiny各個類的AP值(mAP=25.78%)

圖13 YOLOv5-s各個類的AP值(mAP=30.17%)

圖14 YOLOX-tiny各個類的AP值(mAP=30.28%)

圖15 CSPBiA-YOLO各個類的AP值(mAP=32.35%)
2)實驗可視化結果
圖16為目標相對較大且分散的場景,YOLOv3對相對較小的目標檢測效果較差,CSPBiA-YOLO則能夠準確地檢測出圖像中的多個目標并正確分類。

圖16 簡單場景下檢測效果對比
圖17為復雜場景下目標相對較小且密集的場景,YOLOv3對于圖像中間密集且部分受到遮擋的目標無法完成檢測,而CSPBiA-YOLO對應的檢測率則較高,且對于多個受遮擋的目標也能夠正確地完成檢測。

圖17 復雜場景下檢測效果對比
圖18為夜景下目標相對較小且密集的場景,YOLOv3對于圖像上方及右下角的目標無法進行檢測,而CSPBiA-YOLO的檢出率明顯較高。

圖18 夜間檢測效果對比
針對無人機航拍圖像檢測任務中嵌入式設備性能偏低、檢測目標小且密集的特點,提出一種輕量級的小目標檢測網絡CSPBiA-YOLO。通過在無人機航拍數據集VisDrone上進行訓練及測試驗證了該算法的實時性和高精度。后續將增加數據集,提高網絡的泛化能力;使用C++開發部署,通過TensorRT加速提升網絡推理速度。