陶 磊,洪 韜,鈔 旭
北京航空航天大學(xué)電子信息工程學(xué)院,北京 100191
近年來,越來越多的無人機(jī)出現(xiàn)在我們的生活中. 無人機(jī)數(shù)量的激增,使得無人機(jī)市場前景開闊,但是也給城市安保帶來了更大的挑戰(zhàn)[1]. 出于對公眾安全的考慮,各地政府在機(jī)場、會議場所等區(qū)域,禁止未經(jīng)許可的無人機(jī)飛行. 因此,在特定區(qū)域?qū)o人機(jī)進(jìn)行監(jiān)測是安防的迫切需求.
由于無人機(jī)具有體積較小、雷達(dá)截面小、低速的特點,利用傳統(tǒng)的雷達(dá)設(shè)備很難探測或者是識別無人機(jī)[2]. 在城市環(huán)境中,聲音較為嘈雜,無人機(jī)更可穿梭于高樓之間,利用聲傳感器也很難探測到無人機(jī). 所以目前迫切需要建立一套對指定區(qū)域進(jìn)行無人機(jī)實時監(jiān)測、精準(zhǔn)識別的監(jiān)控系統(tǒng)[3?8].
在5G、物聯(lián)網(wǎng)即將到來的時代,城市區(qū)域的監(jiān)控系統(tǒng)已經(jīng)日趨完善. 5G網(wǎng)絡(luò)低延時、網(wǎng)速快的特點,讓實時共享監(jiān)控視頻不再成為難點. 利用城市監(jiān)控攝像頭網(wǎng)絡(luò)組成的監(jiān)控系統(tǒng),實時對指定區(qū)域進(jìn)行無人機(jī)監(jiān)測、識別和預(yù)警是一種解決無人機(jī)監(jiān)管問題的有效方法[9?10]. 此方法的關(guān)鍵在于對監(jiān)控攝像頭傳輸回來的視頻進(jìn)行實時有效的處理,從視頻中檢測是否存在無人機(jī),以便對其進(jìn)行跟蹤與定位.
目標(biāo)檢測是目前計算機(jī)視覺領(lǐng)域的一個重要的研究方向. 近幾年深度學(xué)習(xí)的快速發(fā)展,以及計算機(jī)計算能力的大幅提升,圖像目標(biāo)識別與分類在準(zhǔn)確度和速度上都有了極大的提升. 目標(biāo)檢測領(lǐng)域的深度學(xué)習(xí)算法主要分為one-stage與twostage兩類,前者速度快,后者速度高. one-stage有SSD(Single shot multibox detector, 單發(fā)多盒)、YOLO等系列,two-stage有R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation,用于精準(zhǔn)目標(biāo)檢測和語意分割的多功能層次結(jié)構(gòu))、Fast R-CNN(Fast region-based convolutional network method, 基于區(qū)域的快速卷積神經(jīng)網(wǎng)絡(luò)方法)等系列[11?13],目前在各類數(shù)據(jù)集上測試效果最好的算法是YOLO系列的最新一代YOLOv3[14?16].
基于目標(biāo)檢測算法和監(jiān)控系統(tǒng),本文提出了一種基于YOLOv3算法的無人機(jī)監(jiān)測識別與定位的方法,它直接對監(jiān)控視頻內(nèi)容進(jìn)行實時檢測,識別出無人機(jī)之后,用PID算法去控制攝像頭移動以追蹤無人機(jī). 根據(jù)兩臺或多臺攝像頭的參數(shù),對出現(xiàn)在多臺監(jiān)控攝像頭中同一無人機(jī)進(jìn)行坐標(biāo)解算從而定位無人機(jī).
目前為止,無人機(jī)的識別方法多種多樣,方法主要集中在圖像識別、音頻信號分析、頻譜探測以及雷達(dá)數(shù)據(jù)分析等方面. 電氣電子工程師學(xué)會(Institute of Electrical and Electronics Engineers, IEEE)為了促進(jìn)無人機(jī)識別的研究,甚至還為此舉辦了無人機(jī)鳥類檢測挑戰(zhàn)大賽(Drone-vs-bird detection challenge)[17]. 下文介紹現(xiàn)已有的方法.
最早的研究采用雷達(dá)信號分析來探測無人機(jī),此方法首先利用多雷達(dá)對目標(biāo)進(jìn)行不同角度的觀測,然后對雷達(dá)數(shù)據(jù)進(jìn)行短時傅里葉變化處理以得到頻譜圖,接著利用主成分分析法從頻譜圖中提取特征,再利用支持向量機(jī)進(jìn)行訓(xùn)練與分類識別[18].
基于音頻信號識別的方法主要是通過對無人機(jī)的聲音特性進(jìn)行分析,在時域和頻域分別對采集的無人機(jī)音頻信息進(jìn)行分析和處理,借助梅爾頻率倒譜系數(shù)及線性預(yù)測倒譜系數(shù)等進(jìn)行特征的提取,用以建立無人機(jī)音頻識別庫,最后借助特征匹配算法達(dá)到識別無人機(jī)的目的[19].
隨著機(jī)器學(xué)習(xí)算法的發(fā)展和應(yīng)用,無人機(jī)識別也有了新的手段. 通過攝像機(jī)自動偵測和追蹤小型飛行物獲得不同角度拍攝到的無人機(jī)圖片,組成視頻集,再用卷積神經(jīng)網(wǎng)絡(luò)來提取特征,采用K鄰近算法對目標(biāo)進(jìn)行分類[20]. 此外,還有一種基于遷移學(xué)習(xí)稀疏自動編碼器(Sparse auto-encoder,SAE)的無人機(jī)識別算法,借助SAE對大量目標(biāo)進(jìn)行無監(jiān)督學(xué)習(xí)以獲取局部特征,然后采用卷積神經(jīng)網(wǎng)絡(luò)算法提取目標(biāo)全局特征,由Softmax函數(shù)輸出結(jié)果實現(xiàn)對目標(biāo)的分類.
為了使用YOLOv3模型去檢測無人機(jī)目標(biāo),本文對模型做了一定的修改再進(jìn)行訓(xùn)練,以獲取無人機(jī)在圖像中的坐標(biāo)信息,為后續(xù)的PID算法、坐標(biāo)定位提供必要的輸入信息.
YOLOv3用于檢測每一幀圖像中的無人機(jī),預(yù)測包含無人機(jī)的邊界框和每個邊界框的置信度,以此來獲取無人機(jī)在圖像中的位置. 根據(jù)預(yù)測框相對于圖像中心的位置偏差,來調(diào)整攝像頭的方向,然后根據(jù)兩個或多個攝像頭的參數(shù)來進(jìn)行坐標(biāo)解算獲取無人機(jī)的相對坐標(biāo).
目前為止,YOLO總計發(fā)布了三代算法,第一代YOLO的性能是低于SSD算法的,第二代YOLOv2在第一代的基礎(chǔ)上增加了Batch normalization(批量歸一化)、Dimension clusters(維度聚類)、Multi-Scale training(多尺度訓(xùn)練)等優(yōu)化手段,速度與準(zhǔn)確度都有了較大的提升,第三代YOLOv3則在第二代的基礎(chǔ)上使用了殘差模型和FPN(Feature pyramid networks,特征金字塔網(wǎng)絡(luò))架構(gòu),性能上有了進(jìn)一步的提升. YOLOv3是目前效果最好的目標(biāo)檢測算法之一,其應(yīng)用范圍也比較廣泛. 圖1是YOLO系列算法與其它目標(biāo)檢測算法的性能比較,所有算法均在相同平臺上測試,測試集為COCO數(shù)據(jù)集[21],mAP(Mean average precision,平均準(zhǔn)確度)為算法性能的衡量指標(biāo).
YOLOv3在VOC2007數(shù)據(jù)集上的評測有著卓越的表現(xiàn),可實現(xiàn)80種物體的實時目標(biāo)檢測. 在本文的應(yīng)用中,所使用的YOLOv3模型基于tensorflow(谷歌深度學(xué)習(xí)框架)實現(xiàn),只要訓(xùn)練YOLOv3模型使其實現(xiàn)對無人機(jī)的檢測. 訓(xùn)練之前,需要對YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行修改,YOLOv3網(wǎng)絡(luò)有53個卷積層,圖2是YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu)示意圖.
圖 1 YOLOv3的運(yùn)行速度明顯快于其他可比的目標(biāo)檢測算法[14]Fig.1 YOLOv3 runs significantly faster than other detection methods with comparable performance[14]
基于檢測的目標(biāo)種類,需要修改三個yolo預(yù)測層之前的卷積層的濾波器數(shù)量:
本文中需檢測三種不同類型的無人機(jī),故classes為3,將三個YOLO層之前的卷積層的濾波器數(shù)量均修改為24.
圖 2 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 YOLOv3 network structure
二軸云臺相機(jī),如圖3(a)所示. 該相機(jī)的作用在于控制攝像頭移動以保持目標(biāo)在視頻中央. 控制模塊是一個二軸云臺,具有兩個舵機(jī),一個舵機(jī)負(fù)責(zé)控制攝像頭左右移動,另一個控制攝像頭上下移動,每個舵機(jī)都具有180°的調(diào)節(jié)范圍,控制效果圖如圖3(b)所示.
圖 3 云臺相機(jī)原理圖. (a)二軸云臺相機(jī);(b)PID控制攝像頭追蹤無人機(jī)Fig.3 Schematic of pan and tile camera: (a) pan and tile camera;(b) tracking drones with PID control
PID算法如下所示:
其中,u(t)為系統(tǒng)輸出,表示舵機(jī)轉(zhuǎn)動角度,rad;e(t)為圖像中心與無人機(jī)中心的偏離角度,rad;Kp、Ki、Kd均為常數(shù)系數(shù),分別對應(yīng)比例增益、積分增益、微分增益.
該公式由比例、積分、微分三部分組成,第一部分使得攝像頭跟隨無人機(jī)移動而轉(zhuǎn)動,積分部分用來消除穩(wěn)定誤差,防止無人機(jī)不在視頻中心,微分部分則用來控制偏差的變化率.
如圖4中流程圖所示,借助OpenCV(計算機(jī)視覺庫)處理攝像頭視頻流,對視頻流中的每一幀圖片進(jìn)行YOLOv3檢測,獲取圖片中無人機(jī)的位置后,計算其中心與圖片中心的距離,將距離參數(shù)傳遞給PID進(jìn)程進(jìn)行運(yùn)算,從而控制舵機(jī)轉(zhuǎn)動.
圖 4 PID控制流程圖Fig.4 PID algorithm flowchart
本文所提出的無人機(jī)定位方法如圖5所示,可以得到攝像頭的基本參數(shù):(1)兩個攝像頭之間的距離d,單位為m;(2)攝像頭A的垂直方向角度α與水平方向角度α′,單位均為rad;(3)攝像頭B的垂直方向角度β與水平方向角度β′,單位均為rad.
圖 5 解算無人機(jī)坐標(biāo)Fig.5 Solve the coordinates of the drone
當(dāng)有兩臺攝像頭捕捉到同一臺無人機(jī)后,可以根據(jù)兩個攝像頭的參數(shù)來求解無人機(jī)坐標(biāo). 以攝像頭A所在位置為原點建立三維坐標(biāo)系,由正弦定理可得:
無人機(jī)在攝像頭A坐標(biāo)系下的坐標(biāo)為(lcosα′,lsinα′,ltanα),(XA,YA,ZA)為A的世界坐標(biāo),則無人機(jī)的世界坐標(biāo)為:
為了獲取足夠多的無人機(jī)圖片組成數(shù)據(jù)集,從互聯(lián)網(wǎng)上爬取了大量無人機(jī)圖片. 此外拍攝了一些無人機(jī)照片,對其進(jìn)行裁剪后加入到數(shù)據(jù)集中,然后按照旋翼數(shù)量的特點對圖片進(jìn)行篩選分類,得到單旋翼無人機(jī)圖片150張、四旋翼無人機(jī)圖片155張和多旋翼無人機(jī)圖片158張. 之后用labellmg軟件對圖片中的無人機(jī)進(jìn)行標(biāo)注,每一張圖片均有與之相對應(yīng)的注釋文件,里邊有包含無人機(jī)邊界框的位置大小和信息:
采用遷移學(xué)習(xí)對無人機(jī)圖片數(shù)據(jù)集進(jìn)行訓(xùn)練[22?23],90%的圖片用于訓(xùn)練,10%的圖片用于測試. 基于YOLOv3已有的預(yù)訓(xùn)練權(quán)重,在配備NVIDIA GTX 1060的電腦上進(jìn)行了10萬次訓(xùn)練,訓(xùn)練出來的模型能夠達(dá)到83.24%的準(zhǔn)確率和88.15%的召回率,結(jié)果如表1所示. 使用該模型進(jìn)行實時測試處理速度能達(dá)到每秒20幀,在同一平臺上相較于SSD模型每秒14幀的速度有了較大的提升. 該速度足夠讓攝像頭去追蹤飛行的無人機(jī)并解算出無人機(jī)的坐標(biāo). 圖6是YOLOv3模型與SSD模型的實測效果圖對比,SSD的預(yù)測框效果優(yōu)于YOLOv3,但速度上不及YOLOv3,考慮到實時性的要求,在實際應(yīng)用場景中,選擇YOLOv3更合適.
表 1 模型的準(zhǔn)確率和召回率Table 1 Precision and recall of model
圖 6 SSD及YOLOv3的檢測結(jié)果(圖片上方是SSD模型的檢測結(jié)果,下方是YOLOv3的檢測結(jié)果)Fig.6 SSD and YOLO’s test results (Above the picture is the test result of the SSD model, below is the test result of YOLOv3)
(1)訓(xùn)練好的YOLOv3模型在測試集上能夠達(dá)到83.24%的準(zhǔn)確率和88.15%的召回率.
(2)在NVIDIA GTX 1060平臺上實時測試模型能夠達(dá)到每秒20幀的速度,對視頻幀進(jìn)行目標(biāo)檢測能獲取無人機(jī)的位置信息,實現(xiàn)對無人機(jī)的追蹤.
(3)根據(jù)兩個或多個攝像頭的參數(shù),能實時解算出無人機(jī)的空間坐標(biāo),實現(xiàn)對無人機(jī)的定位.
對于今后的工作,我們準(zhǔn)備獲取更多場景下的無人機(jī)數(shù)據(jù)集來進(jìn)行模型訓(xùn)練,選取速度更快、占用資源更小的模型來進(jìn)行無人機(jī)識別,讓模型能夠擺脫對顯卡的依賴,使該系統(tǒng)的成本更加低廉.