劉朋飛,周 海+,馮水春,卞春江
(1.中國科學院國家空間科學中心 復雜航天系統綜合電子與信息技術重點實驗室,北京 100190;2.中國科學院大學 計算機科學與技術學院,北京 101408)
目前,針對無人機的檢測技術主要分為兩種,以雷達檢測技術[1]、紅外檢測技術、聲學檢測技術[2]、激光探測技術等為主的基于非視覺特征的技術和基于視覺圖像特征的檢測技術。基于非視覺特征的技術在檢測時,存在諸多問題,比如雷達視野盲區很多,探測近距離目標能力差;無人機多采用無刷直流電機作為動力裝置,發熱很少,因此紅外輻射非常低,給紅外探測帶來很大的困難。
當前,以卷積神經網絡為代表的基于視覺圖像特征的檢測技術發展迅速,Faster RCNN[3]、YOLO[4]、SSD[5]、Retina-Net[6]等模型相繼被提出,同時,對低空無人機目標檢測大多研究弱慢小目標,缺少對無人機運動過程中尺度變化問題的研究[7,8],這導致檢測網絡無法有效學習目標的多尺度特征,文獻[9]在進行無人機檢測時,圖像背景較為單一,沒有考慮低空中其它干擾目標的情況,在低空實際檢測場景中具有局限性。
由于當前沒有較為統一的無人機圖像數據集,所以本文建立了包含多種低空場景、多尺度無人機目標的數據集,共20 000張,基于SSD檢測框架,在VGG16網絡的基礎上,引入Conv3_3特征圖,構建金字塔特征提取網絡,增強對無人機目標的特征提取能力,然后,通過研究卷積特征圖中理論感受野、有效感受野和先驗框的關系,重新設計了不同尺寸和長寬比的先驗框,并利用測試集圖像和視頻進行實驗驗證,實驗結果表明,本文提出的改進SSD模型提高了對低空無人機的檢測準確率,并且對于視野內的其它干擾物,具有較好的魯棒性。
本文的檢測無人機對象主要是120 m以下飛行空域內的無人機。現有的研究工作中還沒有公開、通用的無人機數據集可以用來進行模型訓練,文獻[10]針對低空弱小無人機目標檢測場景,建立了一個由15 000張無人機目標圖像組成的訓練數據庫,但是該數據集是從大型網絡圖像數據庫中搜索和在包含無人機目標的視頻中截取,并沒有充分考慮低空目標場景。因此,本文通過研究目標檢測領域主流的數據集,針對當前低空無人機檢測領域實測數據樣本匱乏的情況,為提高深度神經網絡模型的檢測精度和泛化能力,建立了一個低空背景下的旋翼無人機目標圖像數據集,充分考慮了低空場景下的各種背景、目標的尺度、姿態及可能的負樣本。
利用大疆無人機(包括4種型號,DJI Inspire、DJI Phantom4、DJI Marvic Air、DJI Marvic PRO)在中國科學院國家空間科學中心懷柔園區附近進行試飛,并實地拍攝無人機多尺度照片,由于拍攝場景單一,無人機種類少等條件限制,實地拍攝的圖片較少,僅挑選出500張作為數據集圖片,不能滿足神經網絡訓練的需要,因此,本文采用借鑒CVPR The 1 st Anti-UAV Workshop & Challenge(CVPR第一屆“反無人機”挑戰賽)的數據集和合成圖像兩種方式擴充無人機數據集。
(1)CVPR第一屆“反無人機”挑戰賽共有160段高質量的全高清視頻序列,并且涵蓋了不同的場景和尺寸,包括云霧、樓宇、虛假目標、懸停、遮擋、尺度變化等。考慮到視頻序列相鄰幀的相似性,每隔0.5 s取一幀圖片。
(2)對于合成圖像,遵循以下原則:
目標圖像:數據集中包括單個目標的圖像和兩個目標的圖像,比例為2∶8。
目標尺寸比例:本文考慮了低空場景下無人機的尺度變化問題,借鑒COCO數據集中對于目標尺度的劃分,小目標的尺寸為15×15~32×32像素,中目標的尺寸為32×32~96×96像素,大目標的尺寸為96×96~256×256像素,由于小目標檢測難度較大,因此小目標的樣本數量更多,具體的目標比例關系為,大、中、小目標=2∶3∶4。
具體合成步驟為:
獲取目標圖像:首先,在大型圖像數據庫中搜索得到30類無人機圖像,然后進行背景剔除,考慮到在實際檢測過程中,視野中可能會出現一些干擾目標,比如風箏、鳥類等,因此,也處理得到了透明背景的鳥類和風箏各20類。然后利用opencv圖像處理庫,引入隨機函數,編寫程序實現對無人機的尺寸、旋轉角度的隨機設置,模擬實際場景下無人機在低空中不同的飛行姿態和拍攝距離。
獲取背景圖像:在實際拍攝的背景圖像上進行分割,步進值為200像素,分割成300×300像素大小的圖像,最終選擇包含天空、白云、樹木、樓房、電線桿、旗桿等背景的圖像1000張。
合成圖像:通過程序將目標隨機組合在背景圖像上,最后對整張圖片進行高斯噪聲處理,模擬實際場景中空氣、光線、陰影的影響,并根據保存的隨機坐標的值,輸出每張圖片的標注數據,然后轉換為Pascal VOC數據格式。
通過3種圖像獲取途徑,最終得到包含16 000張訓練集、2000張驗證集和2000張測試集的低空無人機數據集。圖1展示了部分數據集樣本。

圖1 數據集樣本示例
對低空無人機的檢測不僅要考慮檢測準確性,還要考慮檢測速度,本文基于自建數據集,實驗對比了Faster RCNN、YOLO、SSD等,最后選擇在檢測準確性和檢測速度方面表現較好的SSD網絡作為本文的改進基礎網絡及baseline。
SSD使用了卷積網絡的多層特征圖,因為這些特征圖是前向網絡計算出來的,沒有消耗額外的計算資源,因此并不影響檢測速度,但是SSD丟棄了低層的特征圖,直接從VGG16網絡的Conv4_3層開始構建特征圖,將VGG16的最后兩個全連接層變為卷積層Conv6和Conv7,然后利用Conv8_2、Conv9_2、Conv10_2和Conv11_2卷積層,去掉Conv6卷積層,共利用6個卷積層,特征圖尺寸分別為(38,38),(19,19),(10,10),(5,5),(3,3),(1,1)(單位為像素,后文未注明單位一律為像素),具體結構如圖2所示。

圖2 VGG16結構
可以看到,在VGG16網絡結構圖中,Conv4_3屬于較高的卷積層,大小為38×38,本文數據集圖片大小為300×300,小目標無人機的尺寸最大在30×30左右,Conv4_3特征圖中,無人機目標的特征大小為4×4左右,小目標的低層細節特征表達不明顯,所以本文在SSD網絡中添加Conv3_3卷積層,Conv3_3比Conv4_3的特征圖大一倍,30×30無人機的特征大小為8×8左右,Conv3_3增強了低層特征圖對于小目標無人機的特征表達。
Conv8_2的特征圖大小為10×10,相比于原圖片,縮小了30倍,30×30的無人機目標在此特征圖上的特征變成了一個像素,語義信息豐富(高層特征,比如機翼、攝像頭等),但是失去了低層特征(比如邊緣、紋理等細節信息)的表達。所以,本文將Conv3_3,Conv4_3,Conv7,Conv8_2這4個特征圖構建為FPN(特征金字塔網絡)[11],將細節信息較多的低層特征和語義信息較多的高層特征進行融合。
FPN包含兩個部分:第一部分是自底向上的過程,第二部分是自頂向下和側向連接的特征融合過程。
自底向上的過程:自底向上的過程和普通的CNN沒有區別。現代的CNN網絡一般都是按照特征圖大小劃分為不同的階段,每個階段之間特征圖的尺度比例相差為2。Conv3_3,Conv4_3,Conv7,Conv8_2這4個特征圖的尺度比例依次降低,相對于原圖的步長分別為4、8、16、32。同時,通道數保持原來不變。
自頂向下過程以及側向連接:自頂向下的過程通過上采樣的方式將頂層的小特征圖(例如Conv8_2的尺寸為10×10)放大到上一個特征圖一樣的大小(例如Conv7的尺寸為19×19)。既利用了高層較強的語義特征(利于分類),又利用了低層的高分辨率信息(利于定位)。上采樣利用最近鄰差值算法。
同時,為了將高層語義特征和低層的精確定位能力結合,借鑒殘差網絡的側向連接結構,將上一層經過上采樣后和當前層分辨率一致的特征,通過相加的方法進行融合。因為不同特征圖的通道數可能不同,所以為了修正通道數量,將當前特征圖先經過卷積操作,具體結構如圖3所示。

圖3 FPN結構
Conv8_2特征圖先經過卷積,得到M4特征圖。M4通過上采樣,再加上Conv7特征圖,經過卷積后的特征,得到M3。這個過程再做兩次,分別得到M2和M1。M層特征再經過卷積,得到最終的P1、P2、P3、P4層特征。
本文中,所有M層的通道數設計成256。
同時,為保證SSD網絡對于大、中尺度無人機目標檢測的魯棒性,保留了更高層的特征圖,所以,本文利用了7個特征圖進行檢測。圖4展示了該檢測模型的總體結構。從圖4可以看到,用于檢測的特征圖包括FPN特征提取層(最終輸出為4個特征圖)和其余3個更高層次的特征圖。低層特征圖提取的是無人機的細節信息,例如旋翼的邊緣輪廓、機身的紋理等,而高層特征圖將細節信息進行融合,可以提取到旋翼類型、機身、攝像頭,直至無人機類型等高層特征。

圖4 基于FPN的SSD檢測框架結構
文獻[12]的研究證明,理論感受野區域內的像素對輸出向量的貢獻不同,對有效感受野(實際起作用的感受野)的影響呈高斯分布,有效感受野僅占理論感受野的一部分,且從中心到邊緣快速衰減。有效感受野實際上是遠小于理論感受野的,并且由于卷積初始化、激活函數等不同,感受野的具體形態也有所區別。
在設計先驗框時,其大小應該和特征圖的有效感受野相匹配。先驗框過大或過小都會導致與檢測目標的IOU過小,很難回歸到Ground Truth,從而使得召回率較低。
為了設計更加符合有效感受野尺寸的先驗框,本文計算了各個特征圖的理論感受野。以Conv3_3為例,對于理論感受野的計算,采用從頂層到淺層的計算方式,Conv3_3的預測層采用尺寸為3×3,stride為1的卷積核,所以預測層的一個點映射到預測層的輸入就是3×3的區域,Conv3_3輸出的3×3的區域映射到Conv3_3的輸入層,就是5×5的區域,5×5的區域映射到Conv3_2的輸入就是7×7的區域,Conv3_2的輸入是Conv3_1的輸出,因此Conv3_1輸出的7×7區域映射到Conv3_1層,就是9×9的區域,相同的計算方式,映射到Conv1_1的輸入是48×48的區域,因為Conv1_1的輸入就是原始輸入圖像,所以Conv3_3預測層的理論感受野是48×48。
利用同樣的計算方法,可以得到Conv4_3特征圖的理論感受野為108×108。原始SSD中Conv4_3特征圖中設置的先驗框最小尺寸為30×30,最大尺寸為42×42,對于數據集中15×15的小目標來說,最小先驗框的尺寸是小目標無人機的近兩倍。
從圖5中可以看到,有效感受野的尺寸大于小目標的尺寸,先驗框的尺寸設置和無人機的尺寸不匹配,在先驗框坐標回歸時,會造成先驗框和目標不能有效匹配。

圖5 Conv4_3特征圖先驗框與感受野匹配
因此,鑒于Conv4_3卷積層有效感受野大于目標尺寸的情況,本文研究了Conv3_3卷積層的有效感受野,Conv3_3的理論感受野為48×48,借鑒文獻[12]的研究成果,圖6展示了Conv3_3特征圖下最小尺寸15×15的無人機、有效感受野、理論感受野的關系。

圖6 Conv3_3特征圖先驗框與感受野
15×15尺寸的無人機與Conv3_3層的有效感受野大小基本相同,因此,將Conv3_3卷積層的先驗框尺寸設計為15×15左右,可有效回歸至小目標無人機位置,并在后續的實驗中得以驗證。之后的卷積層利用有效感受野依次設計先驗框。
原始的SSD先驗框尺寸和長寬比設計如下:
先驗框的尺寸,按照以下公式線性遞增,高層特征圖的先驗框尺寸較大
(1)
其中,m指的除了Conv4_3層的特征圖個數。sk表示先驗框尺寸相對于圖片的比例,而smax和smin表示比例的最小值與最大值。
對于之后的特征圖,先驗框尺寸線性增加,先將尺寸比例擴大100倍,增長步長為
(2)
將各個特征圖的比例除以100,再乘以圖片大小,最終得到各個特征圖的尺度。
(3)
(4)


圖7 先驗框尺寸和長寬比設計
通過計算Conv3_3之后各個卷積層的理論感受野,對比實際感受野和按照上述計算方法得到的先驗框尺寸,發現兩者相對契合,因此,Conv3_3之后的先驗框按照尺寸按照上述方法計算。
經過計算,表1展示了檢測模型中各個卷積層的先驗框尺寸和理論感受野大小。min_size、max_size分別代表每個卷積層的先驗框尺寸,具體的先驗框尺寸和數量由上述公式得出,RF代表每個卷積層的理論感受野,隨著卷積層的加深,理論感受野逐漸增加,因此先驗框的尺寸設置也越來越大,檢測目標的尺寸也逐漸增大,這樣的先驗框設置是相對合理的。

表1 先驗框尺寸設計和理論感受野大小
先驗框的數量設計其實就是其長寬比例選擇,因為數據集中目標具有不同的長寬比例,如果先驗框的長寬比例與目標相似,將有助于更快、更準確地進行先驗框回歸。
SSD模型共提取了Conv4_3,Conv7,Conv8_2,Conv9_2,Conv10_2,Conv11_2共6個特征圖,大小為(38,38),(19,19),(10,10),(5,5),(3,3),(1,1),Conv4_3,Conv10_2和Conv11_2層僅使用4個先驗框(兩個1∶1比例,2、1/2比例),沒有3、1/3比例的先驗框,總的先驗框數量為
38×38×4+19×19×6+10×10×6+5×5×6+
3×3×4+1×1×4=8732
改進的基于FPN的SSD檢測框架增加了Conv3_3的特征圖,因為增加的特征圖位于前面的卷積層,尺寸較大,如果每個位置設置4或6個先驗框,那么先驗框數量的暴增將帶來檢測速度的急劇下降,為了減少計算的復雜度,同時考慮此卷積層主要用于檢測15~30范圍的小目標,因此Conv3_3特征圖上每個單元的先驗框只設置一個,尺寸為先驗框最小尺寸,尺度比例為1,最終的先驗框數量為
75×75×1+38×38×4+19×19×6+10×10×6+
5×5×6+3×3×4+1×1×4=14 357
相比于原來的8732個先驗框,數量增加了64%,但是增加的都是小先驗框,增強了小目標檢測能力。
為了研究不同先驗框比例對檢測效果的影響,本文設置了對比實驗。
(1)去除3、1/3比例的先驗框
75×75×1+38×38×4+19×19×4+10×10×4+
5×5×4+3×3×4+1×1×4=13 385
(2)去除2、1/2、3、1/3比例的先驗框
75×75×1+38×38×2+19×19×2+10×10×2+
5×5×2+3×3×2+1×1×2=9505
表2顯示了不同先驗框數量對應的先驗框長寬比例情況。

表2 先驗框數量設計
以13 385先驗框設計為例,表3分析了不同卷積層下先驗框的數量情況。

表3 不同卷積層的先驗框數量信息
Conv3_3特征圖的先驗框尺寸為20×20左右,數量為5625,占所有先驗框數量的42%,Conv4_3特征圖先驗框尺寸為35×35左右,數量為5776,占所有先驗框數量的43%,這些較小先驗框,占先驗框總量的85%左右,數量多而密集,能夠更加有效地檢測小目標,而更深的卷積層先
驗框尺寸大,但是少而稀疏,用于檢測較大目標,這種設計更加科學,適用于多尺度的目標檢測場景。
本文選用PyTorch深度學習框架,PyTorch提供易于使用的API,不僅具有強大的GPU加速的張量計算,同時還支持自動求導動態神經網絡,具體的軟硬件開發環境見表4。

表4 實驗開發環境
基礎網絡采用在VOC2007+2012數據集上的預訓練模型,并將網絡的預測卷積層權重進行隨機初始化。訓練階段采取10折交叉驗證的方法,網絡批大小(batch size)設為32,采用Adam優化器,將網絡訓練分為兩個階段。首先固定VGG16卷積部分的權值,單獨訓練被隨機初始化的部分,初始學習率設為0.001,學習率每個epoch下降為原來的0.94;當網絡AP上升并逐漸收斂時,再調整VGG16卷積部分的權值,由于網絡已經經過調整,所以將初始學習率下降為0.0001,開始對整個網絡進行訓練,學習率下降到0.000 01后不再變化。
目標檢測中常用的指標包括真正例(true positive,TP)、假正例(false positive,FP)、假反例(false negative,FN),其中TP表示正確識別的正樣本數量,TN表示正確識別的負樣本數量,FP表示錯誤識別的正樣本數量,FN表示錯誤識別的負樣本數量。在此基礎上,精確率(precision)和召回率(recall)可以定義為
(5)
(6)
單一的precision或recall指標并不能全面衡量檢測算法的性能,因此本文選取平均精度(average precision,AP)作為檢測算法的評價指標,其計算方法為:將某類目標的檢測結果按照置信度排序,以置信度為閾值進行劃分,根據不同的Recall (R0,R1,…,Rn) 下對應的最大Precision (P0,P1,…,Pn), 求平均精度AP,計算公式為
(7)
(1)在SSD檢測網絡中加入了改進后的特征金字塔提取器,通過加入Conv3_3卷積層提高小目標檢測能力,為了研究不同尺度比例的先驗框的檢測影響,設計3種不同數量的先驗框,并與Faster R-CNN(ResNet101)和YOLOv3(Darknet-53)模型,在無人機目標和鳥、風箏兩類負樣本上進行了對比實驗。實驗結果見表5。

表5 不同數量先驗框和模型的檢測準確率和速度對比
baseline是原始SSD檢測網絡的檢測結果,Faster R-CNN 的mAP最高,但檢測速度很慢,每秒只能檢測8張圖片,YOLOv3通過引入特征金字塔、殘差網絡等思想,增加了計算量,檢測準確率略高于SSD,但是檢測速度低于SSD。
由于添加了尺寸較大的Conv3_3特征圖,導致先驗框的數量增加,由表5看出,先驗框的數量為14 357時,無人機的檢測準確率最高,為87.83%,但是檢測的速度較慢,為0.04 s/幀。
當先驗框數量為13 385時,無人機的檢測準確率為87.57%,略低于87.83%,但是此時模型的檢測速度為0.031 s/幀,相比于0.04 s/幀,下降了28%。改進后的模型相比于原始的SSD、YOLOv3和Faster R-CNN,取得了更好的檢測效果。
從檢測實時性的角度考慮,先驗框數量為13 385(即刪除所有3、1/3比例的先驗框)時表現較優,具有較好的實用價值。
(2)除了在不同種類的目標下進行不同比例先驗框的對比實驗,本文還研究了不同比例先驗框對多尺度無人機目標的檢測影響。
影響表6中baseline檢測效果的主要是小目標無人機,雖然小目標樣本最多,但是檢測準確率較低,在加入Conv3_3低層特征圖,融合了低層特征和高層特征,構建特征金字塔網絡后,當先驗框數量為14 357時,小目標的檢測AP從71.64%提高到了84.65%,相比于小目標,對大、中無人機目標的檢測效果并沒有提高太多,這也符合最初的網絡設計構想,低層特征圖先驗框小,主要用于檢測小目標,實驗結果表明特征融合提高了小目標的檢測準確率,并且對大、中目標的語義理解能力也有提高。

表6 不同數量先驗框對各尺寸無人機的檢測結果
然后,在去除Conv7、Conv8_2、Conv9_2卷積層中3、1/3比例先驗框之后,數量減少為13 385,此時,對小目標無人機的檢測準確率幾乎沒有影響,而對于大、中目標的
影響雖然比小目標大,但是影響也很小,因為3、1/3比例的先驗框都在較深的卷積層內,主要預測大、中目標。
最后,去除了所有2、1/2比例的先驗框,因為很多目標的尺寸都是這個比例,并且除了新添加的Conv3_3卷積層外,所有的卷積層都設置了這個比例的先驗框,因此,檢測準確率全部降低,甚至跌到了baseline以下,但是小目標的檢測效果還是比baseline要好,提高了12%左右,這進一步說明了Conv3_3卷積層對于小目標檢測的作用,并且由于Conv3_3卷積層原來也只有1比例的先驗框,因此對于小目標的檢測準確率幾乎沒有降低。
考慮到檢測實時性,去除3、1/3比例的先驗框對無人機的檢測準確率并沒有太大影響,因此在實際應用時,應優先考慮使用先驗框數量為13 385的檢測算法。
(3)不同卷積層對各尺寸無人機的檢測影響。在對無人機的實際檢測過程中,可能會有不同的檢測需求,比如某段時間需要重點關注大目標無人機,某段時間需要檢測小目標,為了滿足這種模塊化定制需求,同時為了更加深入了解模型中各個卷積層對不同尺寸目標的檢測能力,本文通過去除不同的卷積層,實驗對比不同卷積層對各尺度無人機的檢測效果,表7中的標記代表去除該卷積層。

表7 不同卷積層對各尺寸無人機的檢測影響
分析表7的結果,Conv3_3卷積層對小目標的檢測效果影響最大,對大、中尺寸目標的檢測效果影響較小,去除該卷積層后,小目標檢測AP降低了13.2%,之后的各卷積層對檢測效果的影響逐步降低,值得注意的是,更深的卷積層對小目標檢測結果依然有影響,說明小目標的語義信息在深層卷積層中得到了表達。Conv4_3卷積層對中目標的影響最大,AP降低了17.3%,這說明,原來的SSD檢測模型最低的卷積層用以預測中等尺寸目標,并沒有對小目標給予過多考慮。對大目標影響較大的是Conv7及Conv8_2卷積層,分別為20.3%和14.3%。
另外,由表7可以看到,Conv9_2及更深的卷積層對大尺寸無人機目標的影響較小,這可能是因為本數據集中無人機的尺寸較小,最大的無人機尺寸為256×256,而高層卷積層用以檢測更大尺寸的目標,因此,在本數據集下,出于降低模型復雜度和檢測時間的考慮,可以適當地根據不同的檢測需求,精簡對檢測效果影響較小的卷積層。
圖8(a)和圖8(b)展示了原始SSD網絡與改進后的模型(先驗框數量為13 385)在實地拍攝的無人機圖像上的檢測對比結果,圖8(a)為改進前的檢測結果,圖8(b)為改進后的檢測結果。圖8(c)是在CVPR無人機挑戰賽視頻序列上的檢測結果。可以看到,在背景單一,目標尺寸較大的情況下,無人機的檢測準確率高,而對于背景復雜,目標較小且模糊的情況,檢測準確率較低。

圖8 檢測結果
本文針對低空無人機檢測的實際需求,提出了基于SSD模型改進的檢測算法。建立了低空場景下的多尺度無人機數據集,通過引入VGG16特征提取網絡的低層特征圖Conv3_3,有效改善小目標無人機的檢測效果,通過構建特征金字塔,增強了多尺度目標檢測能力。
接著分析理論感受野、有效感受野和SSD先驗框的設計原理,利用有效感受野技術,重新設計了各特征圖的先驗框的尺寸和長寬比,使先驗框與無人機目標相匹配,并進行不同先驗框數量的對比實驗。從檢測實時性的角度考慮,先驗框數量為13 385(即刪除所有3、1/3比例的先驗框)時表現較優,相比于原始的SSD檢測網絡,無人機的檢測AP提高了7.32%,小目標無人機的檢測AP提高了12.89%。
實驗結果表明,本文所提出的改進SSD檢測算法在低空無人機檢測場景中具有很好的多尺度目標檢測能力,并且具有較好的實時性和抗干擾能力,在工程應用上具有一定的參考價值。
雖然優化后的方法相較于原始方法在檢測性能上有較大提升,但仍存在一些不足:①無人機目標的類別較少,接下來的研究工作可獲取更多類別和姿態的無人機圖像;②無人機圖像光照條件單一,沒有考慮傍晚或夜間光照下的檢測問題,使得該檢測算法應用場景受限,之后的研究將完善這些不足。