葛全益,鐘涵海,侯冰,張曉龍,盧曉龍
(東北林業(yè)大學機電工程學院,黑龍江哈爾濱,150040)
無人機自主飛行是近些年來比較熱門的應用。目前,大多數(shù)無人機采用激光雷達、電場傳感器、光流等功能實現(xiàn)定位,但上述定位方式因易受到外界環(huán)境干擾而存在一定安全隱患。比如采用激光雷達的實時定位與地圖構建(SLAM)[1]的無人機在周圍有人群或其他物體通過時激光雷達定位的位置信息會收到干擾,從而對定位造成影響。此外,傳感器檢測方式定位[2]與激光SLAM原理相似,若所在環(huán)境受到干擾,無人機的定位也會失效。
針對以上情形,本文提出一種基于SSD目標檢測算法的無人機定位方式,可使無人機在不同環(huán)境下定位,具有魯棒性強、可靠性高的特點。
采集到的原始圖像在色度、色溫、對比度上較為單一,但實際環(huán)境中標志物的圖像屬性較為復雜。為此,在進行模型訓練之前,需先對圖像進行增強處理。
圖1 原圖像(800*600)
圖2 增強圖像(800*600)
數(shù)據(jù)集按照VOC2012格式進行標注,并舍棄不完全顯示的圖像。由于無人機飛行時相對于地標的水平面方向存在不確定性,故采用多角度旋轉方向的方式采集并進行標注。
通過對樣本進行水平、垂直翻轉,隨機角度旋轉進行樣本擴增,擴大數(shù)據(jù)集。
表1 數(shù)據(jù)集內(nèi)容
SSD是一種單階段檢測算法[3],其預測框的分類與定位均為回歸問題,采用不同尺度的特征圖,并預先生成不同比例的先驗框,可以檢測不同大小的物體。SSD采用VGG16作為基礎網(wǎng)絡結構,在VGG16的基礎上增加了卷積層來獲取更多的圖像特征。其網(wǎng)絡結構如圖3所示。
圖3 SSD網(wǎng)絡結構
在訓練過程中,首先需確定先驗框與ground_truth,即首先確定物體哪些先驗框來預測,然后使用非極大值抑制來產(chǎn)生結果。在先驗框與ground_truth匹配的過程中,先由具體某個先驗框對每個ground_truth進行預測,若一個先驗框沒有與任何ground_truth匹配,則認為其匹配背景,即負樣本。若剩余未匹配的先驗框大于某一閾值,則將該先驗框與這個ground_truth進行匹配。
若檢測物體總共有c個類別,SSD會預測出(c+1)個置信度,第一個置信度為背景置信度,這些置信度中最高置信度對應的類別就是預測類別。位置預測即預測邊界框的(cx,cy,w,h),分別表示邊界框的中心坐標,寬度和高度。但在預測過程中實際預測的是邊界框相對于先驗框的偏移量。如果先驗框的位置為(dcx,dcy,dw,dh),對應的邊界框為(bcx,bcy,bw,bh),那么預測值l是b相對于d的轉換值:
lcx=(bcx-dcx)/dw,lcy=(bcy-dcy)/dh,lw=log(bw/dw),lh=log(bh/dh),為了得到預測框的真實位置,需要將預測值準化成真實坐標:
圖4 DW卷積與PW卷積
SSD的損失函數(shù)定義為置信度誤差與位置誤差的加權和,即
預測時先預測每個預測框的類別,隨后由先驗框得到其位置信息,最后通過非極大值抑制(NMS)得到真實輸出。
SSD原作者采用了VGG16作為基礎網(wǎng)絡結構,但由于計算開銷較大不適合在嵌入式設備運行。Google團隊提出了MobileNet網(wǎng)絡結構專門用來在移動端設備運行,將SSD中的VGG16替換為MobileNet結構可極大地減少運算開銷,模型準確率比VGG16下降了0.9%,參數(shù)量卻是VGG16的1/32[4]。
MobileNet使用了不同于傳統(tǒng)卷積的DW卷積,每個卷積核只與輸入圖像的一個通道進行卷積操作,并且每個卷積的通道數(shù)均為1,這樣使得輸入特征矩陣與輸出特特征矩陣通道數(shù)一樣。若想獲得特定的輸出通道數(shù),需要在DW卷積后面接上PW卷積,PW卷積為核大小為1的普通卷積。
設定輸入特征矩陣寬高相等且為WF,卷積核的寬高相等且為WK,輸入矩陣的channel數(shù)為I,輸出矩陣的channel數(shù)為O,卷積運算stride=1,則普通卷積運算的計算量可近似為
DW與PW卷積計算量的和為
MobileNet卷積核大小均為3*3,故理論上普通卷積計算量是DW+PW卷積運算量的8~9倍。
將SSD原骨干網(wǎng)絡VGG16更換為MobileNet即可得到新的目標檢測算法MobileNet-SSD。
實驗的模型訓練設備為Intel(R)Xeon(R)Gold 6148 CPU,GPU 為NVIDIA Tesla V100,操作系統(tǒng)為Ubuntu18.04,訓練框架為PaddlePaddle 2.2.2。
圖5 MobileNet-SSD網(wǎng)絡圖
實驗采用非極大值抑制(NMS)方法,在生成的多個對象中,超過閾值的認為是一個對象,score低的則被刪除,用式(7)計算兩個包圍框(A,B)的重合度。優(yōu)化器采用SGD, 初始學習率為0.01,訓練的輪數(shù)為300輪。
改進的SSD算法更適合在嵌入式端運行,將訓練的模型部署在NVIDIA Jetson Nano(4G)上,預測圖像大小為800*600,經(jīng)過測試幀率為58.8FPS,模型精度為73.8%,滿足無人機定位需求。
MobileNet-SSD方法預測精度比嵌入式設備常用算法精度對比如下:
表2 數(shù)據(jù)對比
(以上模型結果的得出均是在訓練輪數(shù)500輪,初始學習率為0.01)
采用MobileNet-SSD算法可以較穩(wěn)定地檢測地標從而實現(xiàn)飛機自身更穩(wěn)定的定位,當水平方向位姿誤差滿足一定范圍時即認為定位完畢,并將結果發(fā)送給飛行控制器。
圖6 控制流程圖
如圖7、圖8為MobileNet-SSD檢測結果,通過深度學習可以得出目標矩形框在圖像坐標系中的位置(x,y),以目標中心為原點,過標志平面水平方向為Xw軸,豎直方向為Yw軸,垂直標志面過原點為Zw軸,建立世界坐標系OXwYwZw,目標外接矩形框大小為W*H,則目標外接矩形框在世界坐標系中的坐標(由左上順時針)為(-w/2, h/2, 0), (w/2, h/2, 0), (w/2, -h/2,0), (-w/2, -h//2, 0),由兩兩對應的四個點,以及相機的內(nèi)參矩陣camera_matrix,畸變參數(shù)distortion_coefficients,通過SolvePNP算法可以解算出目標與飛機之間的相對位置關系T,姿態(tài)關系R,位姿關系可表述為RA+T,A為相機坐標系。
圖7 檢測結果A
圖8 檢測結果B
將深度學習目標檢測模型與無人機定位結合起來是本文主要內(nèi)容,它解決了傳統(tǒng)視覺易受光照等條件干擾的缺陷,又協(xié)調(diào)了激光傳感器等受三維立體變化的限制,具有較高的準確性與實時性。同時,在定位地點設置不同的圖案可以讓無人機識別出其蘊含的不同語義,可以在無人機定位的同時將更多的信息傳遞給控制系統(tǒng),具有更大的可拓展性。