劉晉川, 黎向鋒, 劉安旭, 趙康, 李高揚, 左敦穩
(南京航空航天大學機電學院, 南京 210016)
近年來,人工智能與計算機技術持續迭代,計算機硬件和光電成像設備不斷更新,這極大地推動了計算機視覺領域的發展,同時,搭載著高效視覺系統的無人機在軍事和民用領域的應用也更加廣泛。然而,無人機由于拍攝高度高、視野廣,其獲得的圖像中往往包含大量小目標,像素信息少且邊界模糊,很難提取到有效的目標特征。傳統的目標檢測方法根據顏色、紋理、邊界等信息人工設計特征描述符[1]提取目標特征,最后通過支持向量機(support vector machine,SVM)實現目標分類;但該類算法中特征的設計以及選擇在很大程度上依賴于人工,導致特征提取器設置復雜,對復雜多變的特征魯棒性差,且傳統算法中基于滑動窗口的區域選擇策略沒有針對性,窗口冗余,復雜度高,實時性差,難以勝任無人機圖像中的目標檢測任務。近年來,基于卷積神經網絡(convolutional neural networks, CNN)的深度學習檢測方法快速發展,該方法設計方便且泛化能力強,已逐漸成為目標檢測的主流方法。
基于深度學習的目標檢測方法按照檢測階段大致可以分為二階段檢測算法和一階段檢測算法。二階段算法通過對候選框進行初篩后再對候選區域中的目標進行定位與識別,如Faster R-CNN[2]、特征金字塔網絡(feature pyramid networks,FPN)[3]都是經典的二階段檢測算法,該類算法可以取得較高的檢測精度,但檢測速度較慢;一階段算法不對候選框進行初篩,而是通過回歸思想直接完成檢測和識別,檢測速度大大提升,但精度略低,如YOLOv3[4]、單點多盒探測器(single shot multibox detector,SSD)[5]、RetinaNet[6]等都是通用的一階段算法。相比傳統算法,基于深度學習的目標檢測算法性能更高,但對小目標的檢測效果仍有很大提升空間。
通過豐富特征圖中的小目標信息是提高小目標檢測精度最有效、最常用的手段,如采用注意力機制、FPN等方法。2018年,Liu等[7]設計了由深至淺、再由淺至深的兩條特征圖融合路徑,相比FPN,進一步加強了特征信息流動,豐富了特征圖信息,并由此提出了路徑聚合網絡(path aggregation network,PANet);2019年,Ghiasi等[8]通過神經網絡搜索技術搜尋“最優”的特征圖融合路徑,通過融合跨比例的特征圖,得到了性能極高但融合路徑復雜的NAS-FPN網絡,相比FPN,在COCO測試集上檢測精度提升了2%;曹凱等[9]通過模擬人類視覺選擇注意力機制提出了SENet注意力模型,通過學習每個特征通道的重要性對特征圖特征進行重標定,增強有用信息,抑制無用信息,極大地降低了檢測模型的錯誤率;Woo等[10]采用全局池化方法設計了通道注意力和空間注意力兩個模塊,并實驗驗證了其嵌入順序,通過串行連接兩個注意力模塊有效提高了對小目標信息的關注程度;Zhang等[11]在2019年提出了CAD-Net,利用注意力機制以及上下文信息實現了對遙感目標的檢測,可以對圖像中的小目標以及密集目標實現精準識別。雖然上述方法都可以對小目標的檢測起到正面效果,但大部分方法都會對網絡的計算量和參數量帶來較大負荷,最終導致檢測速度無法達到實時要求。
合理的錨框機制也是提升網絡對小目標的檢測精度的常用方法。大部分目標檢測算法通過在特征圖的每個像素點上鋪設一組預定義好的錨框來實現目標檢測,該類方法一般通過人工或聚類算法[12]設計合適的錨框尺寸以提升檢測精度,對不同的數據集泛化性較差。近年來,一種新型的無錨框(Anchor-free)檢測方法也在迅速發展。Law等[13]提出的CornerNet是性能較高的無錨框檢測算法,該算法不再設計錨框檢測目標,而是將目標檢測看作是對兩個關鍵點位置的預測,通過預測兩組熱力特征圖確定關鍵點的位置,該方法在當時Anchor-base的檢測潮流下取得了不錯的效果;不同于CornerNet對兩個角點的檢測方式,Tian等[14]提出的全卷積的單級目標檢測器(fully convolutional one-stage,FCOS)算法對每個中心點就行回歸,回歸目標則是中心點相對于邊界框上、下、左、右4條邊的距離,在當時Anchor-free檢測算法中性能達到最高;Zhang等[15]指出導致Anchor-base與Anchor-free方法存在差異的根本原因在于其正負樣本的定義不同,深入分析了正負樣本的選擇對檢測精度的影響,并針對該問題設計了自適應訓練樣本選擇(adaptive training sample selection,ATSS)方法來確定正負樣本,實驗結果表明,該方法可以有效提升算法的檢測精度。
RetinaNet是檢測精度較高的一階段算法,分3個模塊完成對目標的檢測:首先是特征提取網絡,該模塊通過CNN提取圖片特征,生成包含細粒度信息(紋理、顏色等)的淺層特征圖與包含粗粒度信息(語義信息)的深層特征圖;隨后通過FPN網絡融合各特征圖信息,加強各特征圖之間的信息流動;最后設計錨框檢測各特征圖中的目標并對其進行打分,篩選出可信度較高的檢測結果,從而實現目標的定位和檢測。RetinaNet可以對航拍下的中大型目標取得較好的檢測效果,但對小目標的漏檢率較高。現以RetinaNet為基礎,以提高無人機航拍圖像中小目標檢測精度為主要目標,通過豐富特征圖信息及錨框機制等手段設計檢測精度高、檢測速度快的無人機航拍目標檢測算法。首先提出一種多階段特征融合方法,并結合注意力機制設計特征挖掘模塊(feature mining module,FMM),充分提取圖像中感興趣目標信息;其次,在RetinaNet網絡中設計基于中心點的Anchor-free檢測方法,避免人工設計錨框超參數;最后,為了減小模型大小、提高檢測速度,采用深度可分離卷積的方法對提出的特征提取網絡進行輕量化設計,使之可以勝任實時的目標檢測任務。
RetinaNet算法精髓是Focal Loss損失函數。針對檢測過程中參與反向傳播的前景目標和背景目標比例不均衡現象,在交叉熵損失函數中添加了正負樣本的權衡因子與之相乘,得到了Focal Loss損失函數,該損失函數可以自動判斷正負樣本并決定該樣本對總損失的貢獻,一定程度上解決了正負樣本不均衡現象,提升了一階段算法的檢測精度。在RetinaNet之前的通用算法一般使用二分類交叉熵作為損失函數,其計算過程為

(1)
式(1)中:CE為交叉熵函數;y為二分類結果,前景為1,背景為-1;p為預測結果y=1的概率。在Focal Loss中,為了方便,定義新的參數pt為
(2)
則可重寫交叉熵損失函數為
CE(p,y)=CE(pt)=-lnpt
(3)
通常解決正負樣本不均衡的方法是在損失函數前引入權重因子α(α∈[0,1]),但該方法只能平衡正負樣本,并不能區分兩者。故在函數上加了權重參數使其注重難分類樣本對損失的貢獻,整合出的損失函數如式(4)所示。
FL(pt)=-αt(1-pt)γlnpt
(4)
式(4)中:γ為關注度參數;α為權重因子。經實驗,當γ=2,α=0.25時,網絡的表現最好。

圖1 RetinaNet結構圖Fig.1 The structure of RetinaNet
圖1為RetinaNet網絡檢測流程圖,RetinaNet[6]采用何愷明團隊提出的ResNet-101深度殘差網絡為主干網絡,生成不同深度特征圖后經FPN網絡進行特征融合,最后基于錨框(Anchor-base)方法在多尺度上回歸目標。將設計特征提取能力更強的FMM模塊取代ResNet-101中的殘差塊,并設計Anchor-free的方法檢測目標,最后對重新設計的主干網絡進行模型壓縮,達到檢測精度與檢測速度的均衡,使其應用在實時檢測任務中。
為了盡可能豐富特征圖中的目標信息,對傳統殘差塊進行了改進,設計了注意力機制與多階段特征融合方法,最終構成FMM模塊取代傳統殘差結構。
1.1.1 注意力模塊
FMM模塊中采用的注意力結構如圖2所示,該方法旨在通過建模輸入特征圖通道間的關系,使網絡自動學習每個通道的重要程度,從而挖掘特征圖中的重要信息。圖2中,X和Y分別為輸入輸出特征圖,其維度保持一致,均為H×W×C。整體操作由壓縮和擴張兩部分完成;由于X的每個通道都是二維特征,很難捕捉到每個通道之間的關系,所以,通過全局池化將特征圖每個通道的信息變換為一個像素,保持通道數不變,從而生成1×1×C的特征向量zc,該過程即為壓縮操作,公式為
(5)
式(5)中:xc為輸入特征圖中每個通道對應的二維向量;(i,j)為枚舉該通道的每一個像素點;SQ即為壓縮操作;zc為壓縮得到的一維向量。壓縮后通過擴張操作獲取每個特征通道間的依賴關系,計算公式為
s=EX(z,W)=σ[W2δ(W1z)]
(6)
式(6)中:s為通道重要性向量;W1的維度是C/r×C,用來進行全連接層的計算;r為縮放因子,一般取r=16,以降低計算量;W1與z相乘后得到1×1×C/r的向量,然后該向量會經過一個ReLU激活函數(式中δ操作),隨后與維度為C×C/r的W2相乘,其輸出的維度為1×1×C,該向量中的C對應輸入特征圖X中各個通道的重要程度。最后將得到的表示通道重要性的向量作用到原特征通道上,以完成對原始通道的重標定。

圖2 注意力模塊結構圖Fig.2 The structure of attention module
1.1.2 多階段特征融合
常見的殘差網絡如ResNet、ResNext[16]以及ResNeSt[17]等為加強特征圖中的小目標信息,會將特征提取網絡生成的最終階段的特征圖進行連接融合以增強目標信息,可以有效提升檢測精度。借鑒這種思想,在特征提取過程中設計了多階段特征融合模塊,在特征提取過程以及更小的粒度上融合特征圖信息。
圖3是傳統殘差塊結構圖,進入殘差塊的輸入特征圖首先經過1×1卷積降低通道數,再通過3×3卷積進行正常的特征提取,最后使用1×1卷積將其還原到初始通道數量,兩者進行相加后作為該殘差塊的輸出。提出的特征挖掘模塊如圖4所示,由多階段特征融合模塊與注意力機制結合而成。多階段特征融合模塊首先通過1×1卷積減少通道數,然后將通道順序均分為k塊,取k=4,每一小塊Xi(除X1之外)都會先通過3×3的變形卷積[18]提取特征,該卷積操作用Ki表示,對應的卷積結果為Yi,在該流程中,每個Xi會先于Ki-1進行相加然后再進行Ki的卷積操作,最終會得到k個輸出,將這些輸出按照分割時的順序進行拼接融合,再送入1×1的卷積擴張維度,最后與網絡的輸入相加得到最終的輸出。通過在每個殘差塊中對特征圖通道進行拆分和融合,可以在特征提取過程中就實現類似特征圖融合的作用,從而提高對各類目標尤其是小目標的檢測。

圖3 傳統殘差塊Fig.3 Traditional residual blocks

圖4 特征挖掘模塊Fig.4 Feature mining module
經FMM模塊設計的特征提取網絡結構如表1所示,命名為無人機小目標探測網絡(UAV small target detection network,USTDNet)。輸入網絡的圖像尺寸為800 pixel×800 pixel。

表1 USTDNet網絡結構Table 1 The structure of USTDNet
圖5為ResNet-101與USTDNet對同一張圖像進行特征提取后得到的熱力特征圖,其中暖色像素對網絡的決策更加重要。從圖5中可以看出,經FMM設計后的特征提取網絡可以更加有效地關注到目標信息。

圖5 ResNet-101與USTDNet熱力圖對比Fig.5 Heat map comparison between ResNet-101 and USTDNet
目前的主流算法都是基于錨框檢測目標的,雖然也能取得較高的檢測精度,但是這種Anchor-base方法也有不少缺陷。Anchor-base模型依賴于初始錨框的設計,尺寸、長寬比都是重要的影響因素,設定好的anchor可以匹配到大多數目標,但是對于形變較大或者小尺寸目標會表現出一定的局限性,對不同的數據集泛化性能不好;再者,Anchor-base方法為了取得較高的召回率,會在每個特征圖的像素點上鋪設密集的錨框,導致網絡在進行前向推演以及非極大值抑制[19](non-maximum suppression,NMS)時占用較多的資源。近年來研究學者提出Anchor-free的方法對其進行改進,經過幾年的不斷發展和完善,已經達到甚至超越了Anchor-base方法的檢測精度。將設計基于中心的Anchor-free算法[20]對網絡進行改進。
主干網絡生成各階段特征圖之后,通過在特征圖的每個特征點上生成一個中心點來對目標進行回歸,回歸的目標是該點距離真實框上、下、左、右邊界的距離,分別用t、b、l、r表示,如圖6所示。當某個點(x,y)落入真實框中時,就將其作為正樣本,回歸目標為T*=(l*,t*,r*,b*),按式(7)進行計算。
(7)
式(7)中:(x0,y0)和(x1,y1)分別為矩形框左上角和右下角的坐標。

圖6 Anchor-free示意圖Fig.6 Schematic diagram of Anchor-free
在上述過程中,由于有些中心點會遠離其預測目標的中心,導致網絡生成質量較低的邊界框,影響檢測精度,所以在Anchor-free方法中引入Center-ness策略抑制無效框的產生,計算公式為
(8)
式(8)中:d為預測中心(x,y)與預測物體中心之間的距離。
一般在進行NMS時,將其與分類置信度相乘作為NMS排序的分數依據,以去除距離物體中心較遠的無效框。然而,在加入Center-ness分支的網絡中,訓練時分類預測和質量估計單獨訓練,測試時將兩者相乘作為NMS排序指標,這必然會導致一定的誤差;因為分類子網是將前景目標與大量背景目標混合進行訓練的,而定位質量子網一般只針對前景目標進行訓練,故存在一部分分類分數較低的背景目標可能獲得較高的定位質量估計,兩者相乘做NMS排序時,該背景目標可能被劃分為正樣本。
針對此現象,提出在訓練時將分類預測與質量預測結合。通常,分類估計的輸出為0或1(分類分數),通過將檢測框的分類得分改為對應框的定位質量預測分數,從而達到訓練和檢測一致的目的。但由于Focal Loss是針對0和1這種離散標簽設計的,而聯合表示后得到的是0~1的連續值,所以有必要對其損失函數進行修改,故將原來的損失函數改為式(9),命名為質量焦點損失(quality focal loss,QFL)。
QFL(σ)=-|y-σ|β[(1-y)ln(1-σ)+ylnσ]
(9)
式(9)中:-[(1-y)ln(1-σ)+ylnσ]為原函數中-lnpt交叉熵函數的展開版本;y∈[0,1],表示定位質量分數,y為0時表示背景樣本,0 采用深度可分離卷積的方法對改進RetinaNet進行輕量算法設計。深度可分離卷積由逐通道卷積和逐點卷積兩部分組成。圖7為上述3種不同卷積的操作流程圖。可以看出,普通卷積中的每個卷積核都需要對特征圖的每一個通道依次執行卷積計算,而逐通道卷積中每個卷積核只需要負責輸入特征圖的一個通道,大大減少了計算量,由于每個卷積核負責一個通道,所以特征圖的輸入和輸出維度一致,后續可以使用逐點卷積對通道數進行擴充或縮減。 圖7 三種不同卷積對比Fig.7 The comparisons of three different convolution 設輸入、輸出特征圖尺寸分別為H×W×M、H×W×N,卷積核尺寸為K×K×M,則普通卷積的計算量Cstd和參數量Pstd分別為 Cstd=HWK2MN (10) Pstd=HWMN (11) 在進行深度可分離卷積時,逐通道卷積的計算量Cdc與參數量Pdc分別為 Cdc=HWK2M (12) Pdc=HWM (13) 逐點卷積的計算量Cpc和參數量Ppc分別為 Cpc=MNK2 (14) Ppc=MN (15) 則深度可分離卷積的計算量Cdsc和參數量Pdsc分別為 Cdsc=Cdc+Cpc=HWMK2+MNK2 (16) Pdsc=Pdc+Ppc=HWM+MN (17) 深度可分離卷積與普通卷積的計算量和參數量之比分別為 (18) (19) 在USTDNet網絡中,卷積操作一般是由3×3大小的卷積核完成的,將網絡中的3×3全集全部使用可分離卷積替換,采用該方法大約可以將計算量降為原來的1/9,參數量的減少比例取決與輸入特征圖的寬、高以及輸出特征圖的通道數。 DIOR數據集[21]是由西北工業大學在2019年提出的大型航拍數據集,是目前公開的最大、最多樣化的航拍數據集之一。DIOR數據集中的圖像來自Google Earth,包含23 463張圖片,共有192 472個對象實例,圖像尺寸均為800 pixel×800 pixel。作者選取了飛機、船舶、儲罐、車輛等20類具有實用價值的目標,這些目標具有較大的尺寸變化,且存在較高的類內多樣性,類間如車輛與船舶相似性較高。該數據集中的車輛、船只以及儲罐等眾多目標在圖像中占比很小,十分適用于無人機視角下的小目標檢測研究,故選取該數據集進行實驗。 設計的算法應用在無人機圖像檢測任務中,需要對算法的預測結果進行定量評估以評價其性能。使用平均精度均值(mean average precision,mAP)作為檢測精度的度量指標;用每秒檢測幀數(frame per second,FPS)作為檢測速度的度量指標。 DIOR數據集中用于訓練、驗證和測試的比例與原論文保持一致,按照1∶1∶2的比例設置,方便與其他研究結果進行對比;其中驗證集的作用是在訓練過程可以及時發現模型或者參數設置的問題,以便及時調整。訓練過程中采用SGD優化器更新網絡參數,共訓練16輪,設置初始學習率為0.001,根據學習率衰減策略,分別在第12輪和第15輪下降到0.000 1和0.000 01以尋求SGD優化器的最優解。訓練初期采用ResNet論文中提出的學習率預熱方法,首先采用較小學習率訓練,然后逐漸增大至設置的初始學習率繼續訓練,避免收斂效果不好以及模型不穩定等問題。實驗在Ubuntu20.04系統下進行,使用Python3.6開發語言,基于Pytorch1.6深度學習框架設計網絡。 為驗證所提出的Anchor-free檢測方法與FMM模塊的有效性,對網絡進行消融實驗,結果如表2所示。從消融實驗結果可知,對算法的幾種改進方法都取得了不錯的效果,其中基于中心點的Anchor-free檢測方法將網絡檢測精度提升了0.054;設計的FMM特征挖掘模塊使網絡檢測精度提升了0.031。 表2 消融實驗結果Table 2 Ablation results 為驗證本文算法的先進性,將其與現階段先進算法進行比較。表3是各種算法在DIOR數據集上的mAP以及FPS對比。可知,所提出的算法可以大幅度提高檢測精度,其檢測效果優于YOLOv3、RetinaNet、經典Faster R-CNN以及文獻[22-24]提出的算法;其檢測速度幾乎與原算法持平,在800 pixel×800 pixel的圖像上檢測速度達到12幀/s。 表3 各類算法在DIOR數據集上的檢測結果Table 3 Detection results of various algorithms on DIOR 為觀察本文算法對數據集中各尺寸目標的檢測情況,列出本章算法與其他幾種算法在各類目標上的AP值進行對比分析,如表4所示。 表4 各類算法在DIOR數據集上精度對比Table 4 Precision comparison of various algorithms on DIOR 由表4可知,本文算法在各類目標上的檢測精度均超越了RetinaNet算法;相比文獻[22]的二階段算法檢測結果,大多數目標檢測精度處于領先。通過對數據集中的小目標如汽車、船舶、儲罐的檢測精度觀察分析可知,算法在汽車、船舶、儲罐上的檢測精度相對原RetinaNet算法分別增加了0.192、0.143、0.253,提升明顯。如圖8為RetinaNet算法與本文算法在DIOR數據集上的檢測效果圖,可以看出,相對于RetinaNet算法,本文算法不僅提高了召回率,且定位框精度更高。 使用1.3節中提出的深度可分離卷積方法對特征提取網絡進行模型壓縮,其結果如表5所示。由表5中數據可知,雖然壓縮后的模型較壓縮前精度損失2.6%,但其檢測速度由12幀/s提升到了19幀/s,且在運算量、參數量及模型大小方面都有較大優勢,更加適合在移動端部署。 圖8 檢測結果Fig.8 Comparison of test results 表5 輕量化前后結果對比Table 5 Comparison of results before and after lightweight 針對無人機視角下的小目標難以檢測的問題,對RetinaNet網絡模型進行了多方面改進。首先為了豐富特征圖中的目標信息,提出了多階段特征融合方法與注意力機制模塊,將其串聯形成FMM模塊,加強網絡對感興趣目標的特征提取能力;其次,引入了基于中心點檢測的Anchor-free算法,并通過將質量估計和分類分數聯合訓練的方法解決了一般Anchor-free中的弊病,不僅提升了檢測精度,還加快了模型的推理速度;改進后的算法精度在DIOR數據集上達到69.5%,且改進后算法的檢測速度與原算法持平。為了使提出的算法能夠滿足實時檢測的要求,并達到移動端部署的要求,對網絡進行了輕量化設計,將網絡中的3×3標準卷積替換為深度可分離卷積,在損失少量精度的前提下壓縮了模型,提高了檢測速度。但輕量化之后的網絡精度損失2.6%,后續應當使用更加智能的模型壓縮策略,例如結合剪枝與輕量化方法,以求在損失較少精度的前提下壓縮模型。1.3 改進RetinaNet的輕量算法設計

2 實驗結果與分析
2.1 數據集及評價標準
2.2 訓練策略
2.3 實驗分析





3 結論