包文歧,謝立強,徐才華,劉智榮,朱 敏
(陸軍工程大學 國防工程學院, 南京 210007)
隨著無線通信、飛行控制、慣性器件、智能視頻分析等技術的快速發展,當前微小型無人機技術逐步成熟,并展示出了強大的功能,使其在公共安全、能源電力、農業植保等多種行業領域都得到了廣泛應用。隨著小型商用無人機的成本不斷下降,購買無人機的愛好者數量連年攀升,根據中國民航局的官方公布數據顯示,截至2020年底,我國實名登記無人機52.36萬架,年飛行量達到159.4萬小時,同比增速達27.5%。然而,隨著微小型無人機在民用領域爆炸式增長,監管難度越來越大,其對公共安全構成了嚴重威脅,給城市安保帶來了更大的挑戰。例如,2021年4月3日,杭州蕭山機場發生了因無人機黑飛導致多架航班空中盤旋、備降其他機場的案件,嚴重影響航空秩序,威脅機場安全。因此,通過技術手段構建無人機監測系統,對非法飛行的無人機進行精確探測與反制,對確保重要目標空域安全,保障社會安全穩定具有重要意義。
目前,國內外針對無人機探測的常用技術主要有雷達探測、聲學探測、無線電探測、光電探測等。由于微小型無人機具有體積小,運動靈活的特點,傳統的手段難以探測如此小的飛行器,更不能識別此類無人機。因此,微小型無人機的探測是一個亟待解決的難題。
近年來,隨著深度學習技術的飛速發展,基于深度學習的目標檢測算法是實現微小無人機探測個一種可行手段。基于深度學習的目標檢測算法主要有一階檢測方法和二階檢測方法兩類,一階檢測方法不需要單獨尋找候選區域,因此速度較快,如SSD(single shot multibox detector)、YOLO(you only look once)等。二階檢測方法則將檢測算法分兩步進行,先要獲取候選區域,再對其進行分類,精度上一般優于一階方法,如R-CNN(region-based convolutional neural network)、Fast R-CNN等。在實際應用中需要對采集的無人機視頻流進行實時探測,二階算法難以滿足實時性要求,而YOLO系列算法近年來更新迭代很快,在主流數據集的測試效果上要優于SSD算法。李秋珍等提出了2種基于SSD改進算法的實時無人機識別方法,但2種改進方法精度分別只有79%和83.75%,作者認為該算法識別速度基本滿足實時性要求。馬旗等人提出了基于優化YOLOv3的低空無人機檢測識別方法,利用殘差網絡及多尺度融合的方式對原始的YOLOv3網絡結構進行優化,在相同訓練集下測試,mAP提升了8.29%,達到82.15%,檢測速度為26 s,滿足實時性要求。陶磊等人提出了基于YOLOv3的無人機識別與定位追蹤方法,用YOLOv3輸出視頻中的無人機位置信息,再用PID算法調節攝像頭角度實現無人機定位追蹤,模型在測試集上能達到83.24%的準確率和88.15%的召回率,在配備有英偉達1060顯卡的計算機上能達到20幀每秒的速度。YOLO算法無需對目標和背景進行復雜的人工建模,構建過程相對簡單,泛化能力強,發展很快,且識別速度和識別準確性方面有一定的優勢,已應用于多個場景,如疫情期間口罩佩戴檢測、初期火災探測,已成為目標檢測的研究熱點。目前YOLO算法已經更新到第五版本YOLOv5,其體積縮小到約原來的1/9,檢測速度得到大幅提升,精度方面也有不錯的表現。因此,本文提出采用第五版本的YOLO算法實現對微小型無人機的實時探測。首先,根據自行拍攝的無人機飛行時的照片構建數據集;其次,搭建深度學習環境,使用YOLOv5輕量化模型對數據集進行訓練;最后,用訓練得到的模型對視頻或圖片中的微小型無人機進行探測。
YOLO算法最初是由Joseph Redmon等于2016年提出來的一種目標識別方法,其創新性在于把檢測當作回歸問題處理,只需一階檢測,用一個網絡就可快速輸出目標位置和種類,其最大的優勢就是通過簡潔的算法可以獲得出色的識別效果。Redmon對算法進行改進依次推出了YOLOv2、YOLOv3兩個版本。Alexey Bochkovskiy等人推出了YOLOv4版本。隨著YOLO的不斷更新迭代,其算法變得更快更精確,Glenn Jocher在2020年推出了最新版本的YOLOv5。YOLOv5版本是基于YOLOv4版本改進的,采用了PyTorch框架代替了YOLOv4版本的Darknet框架,網絡部分未作修改,僅對參數進行調整優化,使得檢測速度大幅提升,最快的檢測速度達到了140FPS;同時,YOLOv5把權重文件的體積進行了縮小優化,只有YOLOv4的1/9左右。
YOLO v5算法檢測可分為3步:首先統一調整圖像的大小后進行分割,然后用卷積神經網絡提取特征,最后通過非極大值抑制(non-maximum suppression,NMS)篩選重復預測的邊框,輸出最終的預測結果。算法先對所有圖像進行尺寸調整后,將輸入圖像劃分為×個格子,不同格子只負責其對應區域的物體識別,減少了重疊識別,大大減少了計算量。每個格子會預測其內部是否存在目標的位置中心坐標,若某個目標的中心位置落入其中某一個格子,那么該物體的識別就會由這個格子來負責。每個小格子將預測A個假定類別的概率和個邊界框,每個邊界框包含5個參數,分別為,,,和,其中(,)為預測邊框的中心點坐標;(,)為預測邊框的寬度和高度。反映邊框中是否包含目標以及包含目標時預測目標位置的準確性,其由式(1)計算得到。

(1)


(2)
其中,為物體預測框(predicted bounding box)的面積,為物體真實框(ground truth box)的面積。
YOLOv5目標檢測模型是基于卷積神經網絡實現的,主要由輸入端、Backbone、Neck、Prediction四部分組成,其結構如圖1所示。輸入端采用了Mosaic數據增強提升了小目標的檢測效果,另外,采用自適應錨框計算的方法,不同的數據集都會有初始設定長寬的錨框,可以得到更大的交并比,提高大大提高了訓練和預測的效率;Backbone部分為在不同圖像細粒度上聚合并形成圖像特征的卷積神經網絡,主要有Focus結構和CSP結構。Neck部分是在Backbone和Prediction之間,是一系列混合和組合圖像特征的網絡層,將圖像特征傳遞到Prediction部分。Prediction部分為最終檢測部分,主要對圖像特征進行預測,并生成邊界框、預測目標種類。其采用了GIoU_loss(Generalized Intersection over Union)計算預測框(predicted bounding box)回歸損失函數均值,Box值越小,預測框回歸越準確; 采用了BCE Logits_loss計算目標檢測損失函數均值,objectness值越小,目標檢測越準確;采用二元交叉熵損失函數BCE_loss計算目標分類損失函數均值,classification值越小,目標分類越準確。以上3種損失函數公式分別如式(3)—式(5)所示:

(3)
其中,為2個框的最小閉包區域面積,為∪。
_=-,[,·log(,)+
(1-,)·log(1-(,))]
(4)
其中,為類別數目,為樣本總數,是類目標的正例權重。

(1-)×log(1-))
(5)
其中,為樣本總數,是第個樣本的所屬類別,是第個樣本的預測概率值。

圖1 YOLOv5神經網絡結構圖
目前,基于深度學習的微小型無人機探測方面研究較少,互聯網上沒有標準的數據集可供使用,因此需要自行采集數據構建所需數據集。
1) 數據采集。在不同天氣、時間和背景對3款大疆無人機進行拍攝,其型號分別為Inspire2(尺寸為645 mm×650 mm×313 mm)、Mavic Air2(尺寸為183 mm×253 mm×77 mm)、Phantom4 pro(尺寸為330 mm×225 mm×405 mm),整理后得單臺Inspire2圖片60張、單臺Mavic Air2圖片64張、單臺Phantom4 pro圖片62張,2臺及以上無人機圖片24張。
2) 數據標注。YOLOv5模型訓練前需對數據集進行標注,選用LabelImg標注軟件對圖片中的無人機進行人工逐一標注,完整框選出無人機邊界并標注名稱,如圖2(a)所示。每一張圖片標注完之后,將會自動生成一個相應的注釋文檔,包含物體名稱編號,邊界框的位置和大小等信息,如圖2(b)所示。
3) 數據集構建。將圖片和對應的標注文件上傳到機器學習網站roboflow.com進行格式化,調整像素為640 px,并按照7∶2∶1的比例分別設置訓練集、驗證集和測試集。

圖2 數據標注過程圖
網絡訓練是在專用深度學習服務器平臺上進行的,平臺的硬件配置和開發環境需求如表1所示。
實驗過程為對微小型無人機數據集進行遷移學習訓練,訓練使用YOLOv5s的輕量化預訓練模型yolo v5s.pt(通過COCO val2017數據庫訓練得到的輕量化檢測模型)作為知識源進行遷移學習,修改目標種類參數nc(number of classes)為3,數據集配置文件data.yaml中設置好數據集路徑,輸入圖像尺寸為640px,前向傳播批處理大小設置為64,迭代次數設置為600。經過訓練,得到基于微小型無人機數據集的目標檢測模型,該模型可用于檢測視頻中每一幀圖像中的無人機,并預測無人機的邊界框、型號及相應的置信度。

表1 硬件配置和開發環境需求表
使用Tensorboard可視化工具查看模型訓練結果。圖3(a)、(b)、(c)分別為訓練過程中預測框回歸損失函數均值、目標檢測損失函數均值、分類損失函數均值隨迭代次數的變化情況。可以看出,3種損失函數均值隨迭代次數的增加快速下降,訓練后期迭代到500次左右趨于穩定,最后趨于收斂。圖4表示訓練過程中精確率、召回率隨迭代次數的變化情況,隨著迭代次數增加,精確率和召回率快速上升后趨向于穩定。圖5為當交并比閾值分別為0.5和0.5:0.95時平均精度均值(mean average precision,mAP)在逐步提升并趨于穩定。

圖3 3種損失函數隨訓練迭代次數變化圖

圖4 精確率和召回率隨訓練迭代次數變化圖

圖5 閾值分別為0.5和0.5∶0.95時mAP隨訓練迭代次數變化圖
圖6為目標識別類別混淆矩陣元素圖,圖7為=0.5時的Precision-Recall曲線。

圖6 類別分布混淆矩陣元素圖

圖7 Precision-Recall曲線
網絡訓練結束后,把測試集中的圖片輸入訓練好的網絡模型進行識別目標的位置回歸。只有同時滿足≥0.5,無人機的種類識別正確這2個條件時,判定檢測識別正確;否則為錯誤。選取精確率(Precision)、召回率(Recall)、平均精度均值作為評價指標,精確率表示在所有被檢測為正的樣本中實際為正樣本的概率,其公式如(4)所示;召回率表示在實際為正的樣本中被檢測為正樣本的概率,其公式如(5)所示;平均精度均值表示在所有檢測類別上的平均精度的均值,比精確率和召回率更能反應模型的全局性能,其公式如(6)所示。(Ture Positive)為正樣本被正確檢測為正樣本,(False Positive)為負樣本被錯誤檢測為正樣本,(False Negative)為負樣本被錯誤檢測為正樣本,為驗證集個數。

(4)

(5)

(6)
用測試集21張圖片對訓練模型進行測試,結果如表2所示,當交并比值為0.5時,訓練得到的模型能夠達到94.2%的精確率和82.8%的召回率,3種無人機識別的精度分別為:Inspire2為95.4%,Mavic Air2為92.1%,Phantom4 pro為95.2%,達到了較高的識別精度結果。測試集中部分檢測結果如圖8所示,在多種背景下均能夠正確的檢測出目標無人機,并準確識別出其型號類別。
在相同的服務器平臺上,使用相同的數據集對YOLOv3和YOLOv5兩種算法進行對比測試,結果如表3所示,使用YOLOv5模型進行測試時,達到93.5%,識別速度能達到141 FPS,精確率達到94.3%,YOLOv3模型的為81.5%,識別速度為59 FPS,精確率為83.2%。本實驗的測試結果整體上也優于文獻[10-11]采用YOLOv3算法的測試結果,更優于文獻[9]采用的改進的SSD算法。

表2 YOLOv5模型的精確率、召回率和平均精度

表3 2種模型的性能

圖8 測試集中部分檢測結果圖
為進一步驗證基于YOLOv5對無人機的實時探測能力,本實驗通過拍攝一段無人機視頻,使用訓練得到的模型對其進行探測。該視頻中同時存在最多3種無人機的畫面,視頻分辨率為1 920*1 080,幀速率30 FPS。識別結果如圖9所示,當較大無人機Inspire2在約45 m范圍內,較小無人機Mavic Air2在約30 m范圍內,該模型基本能檢測出視頻中的無人機目標,型號識別準確,同時置信度較高。每一幀圖像的識別時間約為0.007 s,識別速率遠大于源視頻幀速率,具有較好的實時性。通過本文的實驗可以驗證YOLOv5算法在無人機實時探測應用上的技術優勢。

圖9 真實場景檢測結果圖
使用遷移學習訓練完的YOLOv5模型在測試集上能夠達到94.2%的精確率、82.8%的召回率和93.5%的平均精度,此模型不僅能識別到微小型無人機,還能識別其具體型號,并標注其置信度。
在真實場景下,該方法能對光學監控設備的視頻流進行實時探測識別,在配備NVIDIA GTX TITAN Xp 12 GB顯卡的計算機上能達到142 FPS的速度,獲得較為流暢的識別效果。
雖然本文提出的方法性能較好,但對于距離較遠的微小型無人機,識別效果不佳。因為YOLO模型會對圖片壓縮處理,即當畫面中無人機目標較遠(或尺寸較小)時,壓縮后無人機像素過小,無法提取有效特征,故難以識別。下一步考慮用增加尺度、網絡檢測分支等方式對YOLOv5算法進行修改,或者采取滑窗裁剪的方式增強小目標的探測能力。