余 浩 王天樂 邵建新 張 磊 楊雅雯 王 越
南通大學(xué)機(jī)械工程學(xué)院 江蘇南通 226019
隨著無人機(jī)技術(shù)的迅速發(fā)展,無人機(jī)在越來越多的領(lǐng)域發(fā)揮其重要作用。而無論軍事領(lǐng)域還是民用領(lǐng)域,使用目標(biāo)識別跟蹤技術(shù)的無人機(jī)都已屢見不鮮。軍用無人機(jī)在情報(bào)偵察、信息對抗、要員監(jiān)察等領(lǐng)域發(fā)揮了重大作用;民用無人機(jī)則在車輛監(jiān)控、野外救援、攝影和公共安全等領(lǐng)域發(fā)揮了重大作用。
我國自主研究無人機(jī)系統(tǒng)起步相對較晚,20世紀(jì)70年代,才正式開始進(jìn)行自主開發(fā)研制無人機(jī)和偵察機(jī),80年代初開始裝備空軍部隊(duì)。近年來,我國研制出并投入使用的無人化飛機(jī)型號已多達(dá)百種,日常生活中無人機(jī)也屢見不鮮了。本無人機(jī)從相機(jī)傳感器中獲取信息并提取處理,其主要原理包含數(shù)字圖像處理、傳感器技術(shù)、概率論與數(shù)理統(tǒng)計(jì)、數(shù)字信號處理等多個(gè)領(lǐng)域?qū)W科。
目標(biāo)檢測算法主要分為兩大類:一種是two-stage目標(biāo)檢測,還有一種是one-stage目標(biāo)檢測。two-stage目標(biāo)檢測因?yàn)橛玫降腃NN特征會產(chǎn)生候選區(qū)域,所以需要通過卷積神經(jīng)網(wǎng)絡(luò)提取對候選區(qū)域目標(biāo)的特征的描述。而one-stage目標(biāo)檢測經(jīng)過單次檢測直接預(yù)測出目標(biāo)的類別與位置。相比two-stage目標(biāo)檢測,one-stage檢測精度低但速度快。
YOLO系列是one-stage目標(biāo)檢測的代表算法之一,從YOLOv1到Y(jié)OLOv2演化過程中,細(xì)節(jié)和網(wǎng)絡(luò)結(jié)構(gòu)方面都有很大改善。YOLOv2算法是將物體作為一個(gè)回歸物體求解,當(dāng)輸入圖像時(shí),卷積層提取圖像信息,全連接層用來預(yù)測圖像位置和類別概率值。相比YOLOv1,YOLOv2在檢測精度和運(yùn)行效率上提升10%和12%。YOLOv2改善了最先進(jìn)的Bag-of-Freebies和Bag-of-Specials方法,使其在單CPU上能夠運(yùn)行。在網(wǎng)絡(luò)結(jié)構(gòu)方面保留了YOLOv3的head部分,修改了主干網(wǎng)絡(luò)為CSPDarknet53,同時(shí)采用了SPP(空間金字塔池化)的思想來擴(kuò)大感受視野,PANet作為neck部分。
目標(biāo)跟蹤的方法主要分為經(jīng)典算法,是基于核相關(guān)濾波算法和深度學(xué)習(xí)的跟蹤算法。其中基于核相關(guān)濾波算法是衡量兩個(gè)信號的相似度,相似度越高相關(guān)值越大。KCF便是基于相關(guān)濾波的一種跟蹤算法。KCF全稱為Kernel Correlation Filter核相關(guān)濾波算法,在2014年由Joao F.Henriques、Rui Caseiro、Pedro Martins和Jorge Batista提出來的。KCF是一種鑒別式追蹤方法,這類方法主要追蹤給出的樣本去訓(xùn)練一個(gè)目標(biāo)檢測器,其中運(yùn)用的循環(huán)矩陣和相關(guān)濾波是KCF的主要特點(diǎn)。
KCF將給出的樣本進(jìn)行上下左右平移(如圖1),每一幀的位置用于訓(xùn)練目標(biāo)檢測器。這種平移可轉(zhuǎn)化為循環(huán)矩陣,利用傅里葉空間可對角化的性質(zhì)將矩陣的運(yùn)算轉(zhuǎn)化為向量的哈達(dá)瑪積。這樣大大降低了運(yùn)算量,提高了速度。
圖右平移
相關(guān)濾波是用來描述兩個(gè)信號之間的相關(guān)性。KCF檢測第一幀時(shí),其位置記為patch 0。在后續(xù)圖像幀上,有patch 1~patch n共計(jì)n個(gè)patch,那么KCF預(yù)測的位置即為與patch 0相關(guān)值最高的patch。Patch predict=max(correlation(patch 0,patch k)),1≤k≤n)。
在計(jì)算patch 0與patch k(1≤k≤n)的相關(guān)值時(shí),轉(zhuǎn)換到了傅里葉域進(jìn)行。因?yàn)閮蓚€(gè)patch的相關(guān)卷積相當(dāng)于傅里葉域中的元素乘積(時(shí)域卷積=頻域點(diǎn)積),而乘積計(jì)算大大快于卷積運(yùn)算。
為保證程序能在無人機(jī)中實(shí)現(xiàn),需要在MATLAB上仿真運(yùn)行。首先是貓狗識別,在MATLAB上提取特征制成圖像集,運(yùn)用MATLAB自帶YOLOv2算法進(jìn)行仿真。以下是訓(xùn)練過程(圖2)和模型損失曲線(圖3):
圖2 單CPU訓(xùn)練過程
圖3 模型損失曲線
訓(xùn)練完成后,用一張貓圖片進(jìn)行測試(圖4),可以看出訓(xùn)練成功。但由于訓(xùn)練圖像使用圖片較少,提取特征不多,所以損失曲線較為平滑圖像識別率不高。接下來是人臉識別的仿真運(yùn)行,此識別運(yùn)用PCA和Adaboost迭代算法進(jìn)行訓(xùn)練,訓(xùn)練完成可識別人臉,至此仿真運(yùn)行結(jié)束。
圖4 貓圖像測試
首先需要訓(xùn)練自己的卷積神經(jīng)網(wǎng)絡(luò)構(gòu)架,通過采集給定樣本相關(guān)的視覺信息整理至一個(gè)文件夾,即數(shù)據(jù)集。通過darknet框架實(shí)現(xiàn)YOLO的訓(xùn)練過程中,需要使用yolo mark形成符合YOLO格式的標(biāo)注文件并對每張圖片進(jìn)行標(biāo)注。在神經(jīng)網(wǎng)絡(luò)訓(xùn)練完畢之后,在ROS框架下使用YOLO,需要將ROS與darknet結(jié)合,這里我們使用現(xiàn)有ROS包darknet ros。將得到的模型通過darknet框架與攝像頭結(jié)合進(jìn)行識別,這時(shí)我們便能從預(yù)覽窗口顯示預(yù)測目標(biāo)的位置了。
安裝并打開qgroundcontrol軟件,查看并校對固件。校準(zhǔn)磁羅盤、陀螺儀、加速度計(jì)、地平線,完成無人機(jī)的初步校準(zhǔn)。
準(zhǔn)備一個(gè)顯示器,用HDIM線連接機(jī)載電腦與顯示器,再連接鼠標(biāo)與鍵盤,打開nomachine軟件(圖5)連接無人機(jī)機(jī)載電腦,將于基于YOLOv2與KCF的無人機(jī)圖像識別與實(shí)時(shí)跟蹤程序?qū)霟o人機(jī)飛控中實(shí)現(xiàn)目標(biāo)。
圖5 Nomachine軟件界面
在終端的預(yù)覽窗口中框選(主要運(yùn)用onMouse函數(shù)實(shí)現(xiàn)框選)所要跟蹤的物體后實(shí)現(xiàn)跟蹤。KCF算法實(shí)現(xiàn)目標(biāo)跟蹤:在ROS主循環(huán)中發(fā)布跟蹤目標(biāo)的位置及狀態(tài)標(biāo)志位發(fā)布出去,讓跟蹤節(jié)點(diǎn)進(jìn)行定位。使用vision cb函數(shù)訂閱跟蹤節(jié)點(diǎn)并發(fā)布位置偏移,用于生成控制指令進(jìn)行跟蹤。
本文采用當(dāng)前目標(biāo)檢測領(lǐng)域中準(zhǔn)確度和實(shí)時(shí)性均有較好表現(xiàn)的YOLOv2模型,并在MATLAB上進(jìn)行仿真模擬。我們在無人機(jī)中將圖像識別和目標(biāo)跟蹤結(jié)合,當(dāng)框選圖像目標(biāo)時(shí),無人機(jī)搭載的KCF目標(biāo)跟蹤算法能實(shí)時(shí)自動跟蹤。我們擴(kuò)展無人機(jī)的檢測能力:將人臉識別加入無人機(jī)檢測,但由于龐大的人臉數(shù)據(jù),我們只能訓(xùn)練較少的人像。后續(xù)此識別可運(yùn)用于野外救援、軍事勘察、嫌疑人查找、要員安全監(jiān)察等領(lǐng)域。因此,基于YOLOv2與KCF的無人機(jī)圖像識別與實(shí)時(shí)跟蹤研究具有較強(qiáng)的理論探索意義和工程應(yīng)用價(jià)值。