魏明鑫,黃 浩,胡永明,王德志,李岳彬
(湖北大學(xué) 物理與電子科學(xué)學(xué)院,武漢 430062)
無(wú)人機(jī)(unmanned aerial vehicle, UAV)主要分為旋翼無(wú)人機(jī)和固定翼無(wú)人機(jī)。多旋翼無(wú)人機(jī)是旋翼無(wú)人機(jī)的一種,具有靈活性好、穩(wěn)定性強(qiáng)、可垂直起降等特點(diǎn),比固定翼無(wú)人機(jī)機(jī)動(dòng)性更強(qiáng)。因此,多旋翼無(wú)人機(jī)的應(yīng)用場(chǎng)景更加廣泛。隨著多旋翼無(wú)人機(jī)技術(shù)近幾年的發(fā)展,多旋翼無(wú)人機(jī)在民用和軍用領(lǐng)域都有了很廣的應(yīng)用。民用上可以用在航拍、電力巡檢、物流等領(lǐng)域;軍事上更是可以用在軍事偵察、目標(biāo)打擊等方面。
傳統(tǒng)視覺(jué)跟蹤雖然有很強(qiáng)的自主性、寬測(cè)量范圍和可以獲取大量的環(huán)境信息等優(yōu)點(diǎn),但它同時(shí)也存在許多缺點(diǎn)。
1)強(qiáng)大的硬件系統(tǒng)是必需的:為了獲得精確的導(dǎo)航信息,導(dǎo)航系統(tǒng)不可避免地配備了高分辨率相機(jī)和強(qiáng)大的處理器。從圖像數(shù)據(jù)采集和處理,這涉及到巨大的數(shù)據(jù)操作。許多圖像算法都是非常復(fù)雜的,這無(wú)疑給系統(tǒng)的集成設(shè)計(jì)、CPU、DSP、GPU計(jì)算能力和內(nèi)存大小帶來(lái)了巨大的挑戰(zhàn)。
2)傳統(tǒng)視覺(jué)導(dǎo)航跟蹤的可靠性較差:視覺(jué)導(dǎo)航有時(shí)很難在復(fù)雜的燈光和溫度變化的環(huán)境下工作。環(huán)境適應(yīng)性問(wèn)題是困擾視覺(jué)導(dǎo)航的難題。同時(shí)無(wú)法解決不同形狀的物體在投影平面上的問(wèn)題相同的圖像視覺(jué)算法的高實(shí)時(shí)需求。
所以視覺(jué)導(dǎo)航不僅需要高性能的硬件來(lái)提高圖像采集的速度和處理時(shí)間,還需要在深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)和小波變換等軟件算法上取得突破[1-6]。
近幾年,由于深度學(xué)習(xí)的發(fā)展,機(jī)器人無(wú)人駕駛等領(lǐng)域又迎來(lái)了一次變革,將朝著達(dá)到真正意義上的人工智能發(fā)展。目標(biāo)跟蹤無(wú)人機(jī)主要涉及視覺(jué)識(shí)別、目標(biāo)檢測(cè)與追蹤等問(wèn)題。文獻(xiàn)[7]介紹了一種基于合作目標(biāo)的無(wú)人機(jī)目標(biāo)跟蹤方法。能夠?qū)崿F(xiàn)準(zhǔn)確跟蹤,此方法主要用在危險(xiǎn)物排除。文獻(xiàn)[8]介紹了基于視覺(jué)的無(wú)人機(jī)目標(biāo)追蹤方法,該方法是采用數(shù)傳將攝像機(jī)采集到的圖像數(shù)據(jù)發(fā)送到遠(yuǎn)端進(jìn)行處理后再發(fā)送指令給無(wú)人機(jī)。
本文介紹一種基于深度學(xué)習(xí)的無(wú)人機(jī)目標(biāo)跟蹤方法,其自主性更強(qiáng),解決了傳統(tǒng)的基于雙目攝像機(jī)成本過(guò)高以及在復(fù)雜環(huán)境下識(shí)別準(zhǔn)確率較低的問(wèn)題。通過(guò)深度學(xué)習(xí)SSD算法訓(xùn)練自己的模型,然后將訓(xùn)練好的模型移到嵌入式工控板并運(yùn)行,使其能夠辨認(rèn)出要識(shí)別并且跟蹤的目標(biāo)。在嵌入式工控板中裝的是Linux操作系統(tǒng),并在Linux操作系統(tǒng)中安裝了ROS(robot operating system)。ROS是一個(gè)用于編寫機(jī)器人軟件的靈活框架集成了大量的工具、庫(kù)、協(xié)議,提供類似操作系統(tǒng)所提供的功能,可以極大簡(jiǎn)化繁雜多樣的機(jī)器人平臺(tái)下的復(fù)雜任務(wù)創(chuàng)建與穩(wěn)定行為控制。因此嵌入式工控板可以通過(guò)ROS與飛控板建立通信。飛控板接收到目標(biāo)物的位置并接受工控板發(fā)送的指令使無(wú)人機(jī)朝目標(biāo)飛去,并實(shí)現(xiàn)追蹤。系統(tǒng)分為三層,上層為視覺(jué)處理端,底層為飛控端,中間采用ROS作為通信機(jī)制。其系統(tǒng)代碼結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)代碼結(jié)構(gòu)圖
在計(jì)算機(jī)視覺(jué)領(lǐng)域,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法近幾年發(fā)展迅速,每年都有新的想法提出。R-CNN提出于2014年,是卷積神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測(cè)任務(wù)中的開(kāi)山之作。R-CNN因?yàn)橐獙?duì)每個(gè)候選區(qū)都要從頭開(kāi)始計(jì)算整個(gè)網(wǎng)絡(luò),所以其運(yùn)算效率低下。2015年RBG(Ross B.Girshick)等結(jié)合了SPP-Net的共享卷積計(jì)算思想,對(duì)R-CNN做出改進(jìn),于是就有了Fast R-CNN。RBG團(tuán)隊(duì)在2015年,與Fast R-CNN同年推出了Faster R-CNN,F(xiàn)aster R-CNN的出現(xiàn)解決了Fast R-CNN的實(shí)時(shí)性問(wèn)題,在Faster R-CNN中提到了RPN(Region Proposal Network)網(wǎng)絡(luò),RPN是一種全卷積網(wǎng)絡(luò),它的前幾層卷積層和Faster R-CNN的前五層是一樣的,所以RPN是在進(jìn)一步的共享卷積層的計(jì)算,以降低區(qū)域建議的時(shí)間消耗。較大的提高了目標(biāo)檢測(cè)精度和計(jì)算速度[9-10]。
為了進(jìn)一步提升目標(biāo)檢測(cè)的實(shí)時(shí)性,基于單個(gè)網(wǎng)絡(luò)的實(shí)時(shí)目標(biāo)檢測(cè)框架YOLO(You Only Look Once),框架和基于單個(gè)網(wǎng)絡(luò)多層次預(yù)測(cè)框的目標(biāo)檢測(cè)算法SSD(Single Shoot MultiBox Detector)算法被提出。YOLO 雖然能夠達(dá)到實(shí)時(shí)的效果,但是其 mAP 與SSD的結(jié)果有很大的差距,每個(gè)網(wǎng)格只能預(yù)測(cè)一個(gè)目標(biāo),易導(dǎo)致漏檢,對(duì)于目標(biāo)的尺度較敏銳,對(duì)于尺度變化較大的目標(biāo)泛化性較差[11-14]。而無(wú)人機(jī)目標(biāo)檢測(cè)對(duì)準(zhǔn)確性要求更高。綜合對(duì)比下來(lái),本方案采用SSD目標(biāo)檢測(cè)算法。
SSD的設(shè)計(jì)理念也是采用CNN網(wǎng)絡(luò)來(lái)進(jìn)行檢測(cè),不同的是,它采用了一個(gè)多尺度的特征圖用來(lái)檢測(cè)。多尺度檢測(cè)顧名思義是采用尺寸不同的特征圖,分別采用一個(gè)大的特征圖和一個(gè)比較小的特征圖用來(lái)檢測(cè)。用大的特征圖檢測(cè)小的目標(biāo),小的特征圖來(lái)檢測(cè)大的目標(biāo)。與YOLO采用的全連接層不同,SSD最后直接采用卷積對(duì)不同的特征圖進(jìn)行檢測(cè)提取。SSD設(shè)置先驗(yàn)框,這里是借鑒了Faster R-CNN中anchor的思想。圖2展示了其基本架構(gòu)。圖3展示了大小兩個(gè)特征圖的效果。
圖2 SSD基本架構(gòu)
圖3 不同尺寸的特征圖
SSD以VGG16為基礎(chǔ)模型,在該模型上新增了卷積層來(lái)獲取更多的特征圖。從圖4中,可以看到該算法利用了多尺度的特征圖來(lái)做檢測(cè)。
圖4 SSD算法網(wǎng)絡(luò)結(jié)構(gòu)圖
目標(biāo)識(shí)別出后并畫框圈中目標(biāo)物,開(kāi)始進(jìn)行目標(biāo)追蹤,目標(biāo)追蹤主要分為兩步。目標(biāo)位置估計(jì)以及控制無(wú)人機(jī)姿態(tài)進(jìn)行追蹤[12]。
攝像頭通過(guò)目標(biāo)檢測(cè)捕捉到目標(biāo),并畫框提取。這里調(diào)用OpenCV處理方框,并將目標(biāo)物所畫方框的中心像素點(diǎn)坐標(biāo)提取出來(lái)為P1(x1,y1),相機(jī)畫面中心像素點(diǎn)坐標(biāo)為P2(x2,y2),接下來(lái)是獲得深度距離信息,利用深度學(xué)習(xí)目標(biāo)檢測(cè)算法,被追蹤目標(biāo)可以有效并完整地框選出來(lái),并計(jì)算選擇框上下邊距之間的像素尺寸。采用三角形相似原理[15],計(jì)算得到目標(biāo)上下框的尺寸,目標(biāo)到攝像頭間的距離滿足:
(1)
這里,d代表物體與攝像頭之間的距離;f代表攝像頭的焦距,這里所用的攝像頭是定焦攝像頭;h代表目標(biāo)物體的實(shí)際長(zhǎng)度;l代表目標(biāo)成像后的長(zhǎng)度,原理如圖5所示。
圖5 相似三角形距離估計(jì)原理示意圖
求得深度距離信息之后,我們就完整地得到了目標(biāo)框中心像素點(diǎn)與相機(jī)畫面中心像素點(diǎn)的三維坐標(biāo),然后計(jì)算相機(jī)畫面中心像素與目標(biāo)框中心像素在空間坐標(biāo)系的坐標(biāo)差,獲取到無(wú)人機(jī)與目標(biāo)物之間的坐標(biāo)差,如圖6所示。
圖6 求取坐標(biāo)差
將目標(biāo)位置坐標(biāo)差信息轉(zhuǎn)換為控制無(wú)人機(jī)的期望速度。由于相機(jī)的抖動(dòng),系統(tǒng)輸出的位置坐標(biāo)存在誤差,為了減小誤差,我們這里采用了PID算法來(lái)優(yōu)化輸出的坐標(biāo)差[16]。
在基本PID控制中,當(dāng)有較大幅度的擾動(dòng)或大幅度改變給定值時(shí),由于此時(shí)有較大的偏差,以及系統(tǒng)有慣性和滯后,故在積分項(xiàng)的作用下,往往會(huì)產(chǎn)生較大的超調(diào)量和長(zhǎng)時(shí)間的波動(dòng)。為此可以采用積分分離措施,即偏差較大時(shí),取消積分作用,所以我們這里即用PD算法來(lái)改善系統(tǒng)的動(dòng)態(tài)性能[16]。
XOUT=Kp*xe(t)+Kd*εx
YOUT=Kp*ye(t)+Kd*εy
εx=xe(t)-xe(t-1)
εy=ye(t)-ye(t-1)
(2)
這里,xe(t),ye(t)為x,y軸的坐標(biāo)差,εx,εy為系統(tǒng)誤差。圖7展示了經(jīng)過(guò)優(yōu)化后最終輸出的目標(biāo)位置。在機(jī)體坐標(biāo)系下,前方z為正,右方x為正,下方y(tǒng)為正。flag_detected用作標(biāo)志位,1代表識(shí)別到目標(biāo),0代表丟失目標(biāo)。
圖7 最終輸出的目標(biāo)位置示意圖
通過(guò)Mavlink實(shí)時(shí)發(fā)布期望速度和高度給飛控,使飛控板對(duì)無(wú)人機(jī)進(jìn)行姿態(tài)控制實(shí)現(xiàn)對(duì)目標(biāo)的追蹤。圖8為無(wú)人機(jī)姿態(tài)控制的詳細(xì)流程圖。
圖8 目標(biāo)追蹤控制流程圖
試驗(yàn)采用自行搭建的無(wú)人機(jī)飛行平臺(tái)進(jìn)行,飛控板采用Pixhawk同時(shí)外接工業(yè)級(jí)IMU,使得無(wú)人機(jī)飛行時(shí)具有更好的穩(wěn)定性,嵌入式工控板采用NVIDIA Jetson TX2平臺(tái)。
訓(xùn)練過(guò)程主要分為兩個(gè)步驟:第一步是圖片中的先驗(yàn)框與真實(shí)值進(jìn)行匹配;第二步是確定損失函數(shù)。
SSD的先驗(yàn)框與真實(shí)值的匹配原則主要有兩點(diǎn):第一,對(duì)于圖片中每個(gè)真實(shí)值,找到與其重疊度最大的先驗(yàn)框,然后該先驗(yàn)框與其進(jìn)行匹配;第二,保證正負(fù)樣本平衡,保證正負(fù)樣本的比例接近1∶3。
確定訓(xùn)練樣本后,然后確定損失函數(shù)。損失函數(shù)是由位置誤差和置信度誤差加權(quán)和得到的,其公式為:
(3)
(4)
對(duì)于置信度誤差,其采用SoftmaxLoss,定義如下:
(5)
這里:
(6)
本次試驗(yàn)采用坦克戰(zhàn)車作為目標(biāo)物,因此本文先訓(xùn)練模型識(shí)別坦克戰(zhàn)車。這里訓(xùn)練模型使用GPU對(duì)訓(xùn)練過(guò)程進(jìn)行加速。首先安裝Tensorflow Object Detection API所需的開(kāi)發(fā)環(huán)境,并在官方的Demo上進(jìn)行測(cè)試。然后運(yùn)用數(shù)據(jù)進(jìn)行訓(xùn)練和測(cè)試,制作自己的模型。先從網(wǎng)上下載1000張?zhí)箍藨?zhàn)車的圖片。分為訓(xùn)練集與測(cè)試集。并設(shè)置標(biāo)簽“tank”,然后開(kāi)始訓(xùn)練。圖9是訓(xùn)練自己的模型的流程圖。
圖9 自制模型訓(xùn)練流程圖
模型訓(xùn)練結(jié)束后,用訓(xùn)練好的模型檢測(cè)效果。本文隨機(jī)選取了幾張?zhí)箍藨?zhàn)車的照片,以此來(lái)檢驗(yàn)?zāi)P蛯?duì)于坦克戰(zhàn)車識(shí)別的準(zhǔn)確率。該模型在測(cè)試集的識(shí)別率為96%。圖10顯示了在實(shí)際測(cè)試中,目標(biāo)均被準(zhǔn)確識(shí)別出,且識(shí)別為坦克的概率均在95%以上。
圖10 目標(biāo)檢測(cè)測(cè)試
如圖11所示,將訓(xùn)練好的模型移植到嵌入式工控板中,調(diào)用單目攝像頭并運(yùn)行模型。然后進(jìn)行目標(biāo)識(shí)別。通過(guò)在ROS的可視化平臺(tái)上看到工控板可以實(shí)時(shí)地檢測(cè)到坦克戰(zhàn)車,同時(shí)將訂閱到的距離信息也實(shí)時(shí)標(biāo)示出來(lái)。
圖11 實(shí)時(shí)目標(biāo)與距離檢測(cè)試驗(yàn)結(jié)果
我們接通飛控板與工控板,并建立通信機(jī)制。并且運(yùn)行MAVROS包來(lái)監(jiān)聽(tīng)一個(gè)飛控消息在ROS上訂閱單目攝像頭發(fā)布的目標(biāo)位置信息,并通過(guò)Mavlink傳輸協(xié)議發(fā)送給飛控板。同時(shí)在工控板上發(fā)布追蹤指令。飛控板接收到追蹤指令后,開(kāi)始朝電腦中的坦克目標(biāo)飛去,并保持設(shè)定的距離。移動(dòng)電腦,可以看到無(wú)人機(jī)朝著電腦的方向?qū)崿F(xiàn)追蹤。圖12(a)、12(b)分別以第三視角與無(wú)人機(jī)第一視角拍攝了無(wú)人機(jī)對(duì)目標(biāo)的追蹤。
圖12 無(wú)人機(jī)對(duì)目標(biāo)的追蹤示意圖
本文介紹了利用單目攝像頭,基于深度學(xué)習(xí)實(shí)現(xiàn)了對(duì)坦克戰(zhàn)車的實(shí)時(shí)檢測(cè)定位并追蹤,此方法具有識(shí)別準(zhǔn)確率高、跟蹤效果好的特點(diǎn),同時(shí)解決了傳統(tǒng)的基于雙目攝像機(jī)成本過(guò)高以及在復(fù)雜環(huán)境下識(shí)別準(zhǔn)確率較低的問(wèn)題。
通過(guò)試驗(yàn)驗(yàn)證了該方法能對(duì)目標(biāo)進(jìn)行高準(zhǔn)確率識(shí)別,并在飛行試驗(yàn)平臺(tái)上進(jìn)行了實(shí)際飛行試驗(yàn)。由于這次選用的目標(biāo)為坦克戰(zhàn)車,實(shí)際的樣本不好收集。所有的樣本均來(lái)自網(wǎng)絡(luò),以及測(cè)試也采用在電腦上以圖片的形式讓無(wú)人機(jī)進(jìn)行追蹤。根據(jù)SSD算法,理論上是可以建立任意模型,也就是說(shuō),在模型訓(xùn)練比較好的情況下理論上無(wú)人機(jī)可以追蹤任何物體?;谏疃葘W(xué)習(xí)的多旋翼無(wú)人機(jī)目標(biāo)跟蹤通過(guò)實(shí)際的測(cè)試驗(yàn)證,試驗(yàn)結(jié)果證明了該方法的可行性。