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