賈一凡, 曹天一, 白越
(1.中國科學(xué)院 長春光學(xué)精密機械與物理研究所, 吉林 長春 130033;2.中國科學(xué)院大學(xué), 北京 100049;3.西南交通大學(xué)-利茲學(xué)院, 四川 成都 610097)
無人機具有長續(xù)航、高隱蔽、成本低、不懼損耗、體積小、操作簡單等特點,可以代替人去完成更復(fù)雜或更危險的特定任務(wù),在軍事和民用領(lǐng)域都受到了廣泛關(guān)注[1]。隨著無人機技術(shù)優(yōu)勢的不斷積累,其應(yīng)用領(lǐng)域逐漸擴大到了搜索救援、城市巡檢、農(nóng)業(yè)植保以及智能物流等諸多領(lǐng)域[2]。若要使無人機能夠自主完成特定的任務(wù),其避障能力尤為重要。該能力也是無人機產(chǎn)品能否脫穎而出的一項重要指標(biāo)[3]。
目前的避障識別主要有超聲波、激光雷達和機器視覺等方式[4]。其中,超聲波易受干擾,激光雷達成本高昂,因此,機器視覺的方式廣受歡迎。機器視覺還可應(yīng)用于光學(xué)領(lǐng)域[5]中進行全息圖像重建[6]。國內(nèi)外的研究者針對機器視覺和深度學(xué)習(xí)在無人機避障中的應(yīng)用進行了大量的研究和測試,取得了一些有實用價值的研究成果。Xue等[7]提出了一種基于深度強化學(xué)習(xí)的方法,使無人機在充滿常見障礙物的室內(nèi)環(huán)境中僅通過視覺完成避障任務(wù)。Boitumelo等[8]使用從相機圖像計算出的視差圖來定位障礙物,并用一種反應(yīng)性方法進行無人機避障。Lai等[9]提出了一種基于深度學(xué)習(xí)距離估計的無人機避障方案,旨在利用單目相機檢測和跟蹤來襲的固定翼無人機,進而進行空中避障。袁毅等[10]先檢測障礙物輪廓,再提取障礙物的左右圖像特征點并進行立體匹配得到障礙物與無人機之間的實際距離,從而進行安全距離飛行。楊娟娟等[11]使用改進的YOLOv3模型檢測障礙物的位置來輔助無人機進行避障決策。
基于深度學(xué)習(xí)的目標(biāo)檢測算法往往對計算機硬件的算力要求較高,在低算力的嵌入式系統(tǒng)中有較大的傳輸時延,故難以在無人機平臺完成實時性的目標(biāo)檢測任務(wù)。雙目相機具有準(zhǔn)確性高、魯棒性強、成本低等優(yōu)點,能獲取障礙物的距離信息,輔助無人機進行避障決策。本文分析了無人機的室外飛行環(huán)境,深入研究了無人機避障的關(guān)鍵技術(shù)和目標(biāo)檢測網(wǎng)絡(luò)輕量化的方法,提出一種基于Ghost改進的YOLOv5輕量化雙目視覺無人機避障算法。首先,提出改進的YOLOv5s-Ghost網(wǎng)絡(luò)模型,提升障礙物檢測的速度,減少系統(tǒng)運行的計算量和時間;其次,檢測障礙物的ORB(Oriented FAST and Rotated BRIEF)特征點并進行立體匹配,解算出障礙物的三維坐標(biāo)及距離信息,為無人機的視覺防撞做準(zhǔn)備;最后,結(jié)合目標(biāo)位置和距離信息,繪制出無人機的防撞預(yù)測區(qū)域,向無人機傳達避障指令,從而實現(xiàn)避障功能。本文的無人機自主避障方式具有成本低廉、結(jié)構(gòu)簡單、系統(tǒng)魯棒性高和環(huán)境適應(yīng)能力強等優(yōu)點,能夠使無人機在0~20 m范圍內(nèi)進行安全避障飛行。
YOLO(You Only Look Once)系列檢測算法因其效率高[12]、檢測速度快,越來越受到研究者的喜愛。目前,YOLOv5網(wǎng)絡(luò)是YOLO系列中應(yīng)用最為廣泛的模型,而YOLOv5s是YOLOv5網(wǎng)絡(luò)中參數(shù)和浮點運算量最小的版本,檢測速度也較快,但仍不適用于嵌入式系統(tǒng)快速檢測的需要。為了使網(wǎng)絡(luò)更輕量化并提高檢測速度,本文引入Ghost-BottleNeck與DarkNet-53融合組成新的特征提取網(wǎng)絡(luò)YOLOv5s-Ghost。
傳統(tǒng)的深度學(xué)習(xí)網(wǎng)絡(luò)在提取特征圖時,會存在大量冗余、相似的特征圖,但這些特征圖對于模型的精度又是不可或缺的,并且都是由卷積操作得到又輸入到下一個卷積層進行運算。這個過程中包含大量的網(wǎng)絡(luò)參數(shù),消耗了大量的計算資源。因此可以嘗試使用更低成本的計算量來獲取這些冗余特征圖,Ghost模塊主要包括以下步驟[13](圖1):
圖1 Ghost模塊Fig.1 Ghost module
(1) 使用1/2的卷積核進行傳統(tǒng)卷積操作。
(2) 使用另1/2的3×3卷積核進行逐通道卷積操作,即Cheap operations。
(3) 將兩部分的輸出進行Concat拼接。
在常規(guī)卷積FLOPs(Floating Point Operations Per Second)計算中,h'是輸出的高;w'是輸出的寬;n是輸出維度,即卷積核的數(shù)量;c是通道數(shù);k是卷積核的高和寬。本文使用Ghost 模塊對此進行了改進,將常規(guī)卷積操作的n組卷積核分為s組,d為Cheap operations的卷積核,約等于k,故加速比rs和壓縮比rc如式(1)、式(2)所示。本文將卷積核分為兩組,即s為2,故Ghost 模塊的參數(shù)量和計算時間為常規(guī)卷積的1/2。
本文基于Ghost 模塊的輕量化特點,提出Ghost-BottleNeck模塊。如圖2所示,該模塊由兩個堆疊的Ghost模塊組成,加入BN(Batch Normalization)層用于加速網(wǎng)絡(luò)的收斂速度并且防止過擬合。前半部分引入Leaky relu激活函數(shù)是為了防止訓(xùn)練過程中出現(xiàn)神經(jīng)元不學(xué)習(xí)問題;而后半部分沒有引入激活函數(shù),是為了使數(shù)據(jù)在訓(xùn)練過程中保持同分布,從而加快模型的收斂速度。
圖2 Ghost-BottleNeck模塊Fig.2 Ghost-BottleNeck
基于Ghost模塊和Ghost-BottleNeck模塊對YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)中的CBL模塊和CSP_X進行改進,得到GBL和GCSP_X。與原始的YOLOv5相比,YOLOv5s-Ghost模型僅使用了一種CSP_X結(jié)構(gòu),這樣可以降低模型的復(fù)雜度,并且將梯度變化的信息完整地傳遞到特征圖中,優(yōu)化了網(wǎng)絡(luò)的特征融合能力,從而保證了檢測的準(zhǔn)確率。最終YOLOv5s-Ghost網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 YOLOv5s-Ghost網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Network structure of YOLOv5s-Ghost
本文YOLOv5s-Ghost的損失函數(shù)L主要由回歸損失函數(shù)Lloc和分類損失函數(shù)Lcla兩部分組成,損失函數(shù)的計算公式如式(3)所示:
式中:Lloc利用CIOUloss(Complete Intersection over Union)[14]函數(shù)計算,CIOUloss的計算公式如式(4)所示:
其中:IOU表示預(yù)測框與真實框的交并比;D2表示預(yù)測框與真實框兩個中心點的歐氏距離;Dc表示預(yù)測框與真實框最小外接矩形的對角線距離;v是衡量長寬比一致性的參數(shù),其計算公式如式(5)所示:
CIOUloss相比于傳統(tǒng)的IOUloss,多考慮了邊界框中心點的距離信息和長寬比,可以有效地優(yōu)化兩個框不相交和邊界框?qū)捀弑鹊某叨惹闆r,使預(yù)測框回歸的速度和精度更高。在目標(biāo)檢測的后處理過程中,針對單個目標(biāo)的重復(fù)檢測問題,往往需要進行非極大值抑制(Non-Maximum Suppression,NMS)操作。因為CIOUloss是在DIOUloss的基礎(chǔ)上添加了影響因子,包含真實框的信息,在訓(xùn)練時用于回歸。但在測試過程中,并沒有真實框的信息,不用考慮影響因子,因此直接用CIOUloss即可。本文針對真實框與預(yù)測框幾何中心的位置關(guān)系,使用CIOUloss作為損失函數(shù),但使用DIOUnms進行NMS操作,效果明顯優(yōu)于使用傳統(tǒng)的NMS,有效提升了檢測精度。
在圖像處理領(lǐng)域中,若想得到三維空間中某一點的坐標(biāo)與二維圖像像素點的對應(yīng)關(guān)系,可以利用雙目測距原理建立雙目相機模型,得到雙目相機參數(shù)。本文使用張正友標(biāo)定法[15]得到相機參數(shù),然后通過Bouguet立體校正算法將實際雙目立體視覺模型轉(zhuǎn)變?yōu)槔硐氲钠叫须p目立體視覺模型,消除雙目圖像在垂直方向的視差,有效改善了立體匹配效果。
3.2.1 特征點的提取
在背景復(fù)雜、噪聲明顯、目標(biāo)在視圖中快速運動的情況下,用傳統(tǒng)的BM(Block Matching))[16]算法、GC(Graph Cuts)算法[17]、SGBM(Semi-Global Matching)[18]算法等都很難得到有效的視差圖,且存在對背景信息的冗余計算,不滿足測距的實時性,因此采用對待測距目標(biāo)進行特征點提取與匹配的方式進行稀疏點云的測距。SIFT(Scale-Invariant Feature Transform)算法在尺度和旋轉(zhuǎn)變換的情況下匹配效果良好[19],不會因光照、仿射變換和噪音等因素而變化,但運行時間過慢,不滿足實時性需求。
本文選用ORB特征點提取方法,設(shè)圖像中某一點像素P的亮度為Ip,以像素P為圓心,在半徑為3圓上選取16個像素點,若該圓上超過12個點的亮度值大于120%Ip或小于80%Ip,則像素P視為一個特征點,如圖4所示。
圖4 特征點提取方法Fig.4 Feature point extraction
遍歷完圖像后,角點可能會大量集中在某一處,因此要采用非極大值抑制為所有角點確定一個得分值S,表示為P與圓上16個點的像素值差的絕對值進行求和,計算過程如式(6)所示:
為了使檢測出的特征點能夠進行特征匹配,應(yīng)為特征點添加尺度和旋轉(zhuǎn)的描述。通過構(gòu)建圖像金字塔,并在金字塔的每一層上檢測角點的方式可以實現(xiàn)尺度不變性。特征的旋轉(zhuǎn)可以由灰度質(zhì)心法實現(xiàn),具體步驟如下:
(1) 在一個小窗口B中,定義圖像塊的矩陣:
(2) 通過矩陣得到圖像塊的質(zhì)心c:
最終,對圖像進行ORB角點提取,結(jié)果如圖5所示。
圖5 ORB特征點提取結(jié)果Fig.5 Extraction results of ORB feature point
3.2.2 特征點的匹配
首先,遍歷左圖像中的特征點,以特征點為中心確定一個目標(biāo)窗口,同時在右圖像同一位置確定一個大于目標(biāo)窗口的搜索區(qū)域;其次,使用與目標(biāo)窗口大小相等的搜索窗口在右圖像搜索區(qū)域內(nèi)連續(xù)滑動,并計算目標(biāo)窗口與搜索窗口的相關(guān)系數(shù)ρ,如式(10)所示;最后,將相關(guān)系數(shù)ρ最大的窗口所對應(yīng)的中心像素點作為左圖像中特征點的同名點。使用該方法匹配后的效果如圖6所示。
圖6 特征點匹配Fig.6 Feature point matching
右圖像與左圖像的相關(guān)系數(shù)用來匹配兩圖之間的特征點。公式如式(10)~(12)所示:
由圖6可以看到,直接對左、右圖像進行ORB特征點的提取和匹配仍存在大量的無用背景特征點,會造成冗余計算,造成計算資源的浪費。因此,本文利用YOLOv5s-Ghost模型檢測出的目標(biāo)框,只對目標(biāo)框內(nèi)的特征點進行提取和匹配,如圖7所示。
圖7 目標(biāo)檢測約束的特征點提取與匹配Fig.7 Feature point extraction and matching constrained by object detection
3.2.3 目標(biāo)特征點的三維解算
在雙目視覺模型中,通常要進行世界坐標(biāo)系、相機坐標(biāo)系、像素坐標(biāo)系和圖像坐標(biāo)系這4個坐標(biāo)系之間的相互轉(zhuǎn)換。設(shè)在世界坐標(biāo)系中的任意一點P(x,y,z)投影到左、右相機上的像素點為Pl(xl,yl)與Pr(xr,yr),則像素坐標(biāo)系與世界坐標(biāo)系之間的轉(zhuǎn)換方程如式(13)所示:
式中:Zc為點P在左相機坐標(biāo)系中Z方向的坐標(biāo)值,通常情況下,設(shè)世界坐標(biāo)系與相機坐標(biāo)系重合,即Zc=z,則Zc為點P到相機的距離;(x,y)為點P在像素坐標(biāo)系中的坐標(biāo);K是雙目相機的內(nèi)參數(shù)矩陣;R為世界坐標(biāo)系到相機坐標(biāo)系的旋轉(zhuǎn)變換矩陣;T為世界坐標(biāo)系到相機坐標(biāo)系的平移變換矩陣。K、R、T均由雙目相機標(biāo)定得到。最后,取障礙物檢測框內(nèi)所有特征點距離的中位數(shù)作為障礙物的最終距離。
使用雙目相機進行避障的優(yōu)點是可以獲取無人機與障礙物的相對位置關(guān)系,從而根據(jù)相對位置關(guān)系對無人機發(fā)出相應(yīng)的避障指令。本文提出一種基于目標(biāo)檢測的雙目視覺無人機避障算法,具體算法流程如圖8所示。
圖8 無人機避障方案Fig.8 Obstacle avoidance solution for UAVs
首先,初始化無人機的世界坐標(biāo)系與雙目相機的左相機光心坐標(biāo)系,使坐標(biāo)系的原點對應(yīng);其次,利用YOLOv5s-Ghost網(wǎng)絡(luò)與特征點匹配得到障礙物的距離Z;然后,依據(jù)無人機的尺寸與障礙物的相對距離繪制防撞區(qū)域;最后,當(dāng)距離障礙物≤5 m且防撞區(qū)域與檢測框重疊時,執(zhí)行避障指令,否則按原航向繼續(xù)飛行。
一般模型在進行訓(xùn)練和性能評估時,有很多數(shù)據(jù)集可以選擇,其中最常用的是 ImageNet 數(shù)據(jù)集、MS COCO 數(shù)據(jù)集和 PASCAL VOC 數(shù)據(jù)集。因為SIFT-Flow數(shù)據(jù)集主要針對自然場景,包括建筑、樹、汽車和指示牌等常見障礙物,適合無人機的室外飛行環(huán)境,故本次實驗選用包含33個類別的SIFT-Flow數(shù)據(jù)集作為模型訓(xùn)練和測試的數(shù)據(jù)集,劃分驗證子集和訓(xùn)練子集的比例為 1∶9。為了降低各方面額外因素對檢測的影響,對原始數(shù)據(jù)集進行Mosaic數(shù)據(jù)增強,即對圖像進行隨機縮放、隨機裁剪和隨機排布。YOLOv5s-Ghost網(wǎng)絡(luò)訓(xùn)練Loss曲線如圖9所示,測試集平均精度均值mAP如圖10所示,與不同算法性能指標(biāo)的對比如表1所示。
表1 不同檢測算法性能指標(biāo)的對比Tab.1 Comparison of performance indicators for different detection algorithms
圖9 YOLOv5s-Ghost網(wǎng)絡(luò)訓(xùn)練Loss曲線Fig.9 Training loss curve for YOLOv5s-Ghost network
圖10 測試集平均精度均值(mAP)Fig.10 Mean average precision (mAP) on the test set
YOLOv5s-Ghost網(wǎng)絡(luò)的目標(biāo)檢測mAP達到76.88%,與YOLOv5相比,平均檢測精度均值下降0.37%,檢測時間下降22%,參數(shù)量下降25%。雖然檢測準(zhǔn)確率有少量降低,但Ghost模塊對網(wǎng)絡(luò)的輕量化改進效果明顯,有效提高了網(wǎng)絡(luò)的綜合性能。
調(diào)用OpenCV 函數(shù)庫,同時打開左右兩個攝像機進行圖片采取,共采取了不同角度、不同距離的20幅圖像對。采取過程中將圖像進行平移旋轉(zhuǎn)等多種操作,體現(xiàn)圖像的差異性,且保證棋盤格在左右攝像機上的圖像顯示清晰完整。圖11是本次實驗所獲取的20組標(biāo)定圖像,標(biāo)定后計算出旋轉(zhuǎn)向量R(-0.006 76,-0.002 58,-0.000 18)、平移向量T(-56.550 50,0.054 30,-0.110 91)和相機內(nèi)參K,相機內(nèi)參K如表2所示。
表2 左、右相機內(nèi)參Tab.2 Intrinsic parameters of left and right camera
圖11 標(biāo)定圖像Fig.11 Calibration images
用a和b分別表示用本文方法測出的目標(biāo)距離和用激光測距儀測出的目標(biāo)真實距離,誤差e可表示為式(14):
本文對50幀圖片上的122個目標(biāo)進行定位誤差計算,部分距離值及其定位誤差值如表3所示,最后求得本文雙目測距方法在0~20 m范圍內(nèi)的最大誤差為8.36%,平均誤差為4.87%。在大于20 m的范圍,測距誤差超過10%,且目標(biāo)檢測效果變差,因此,本文算法有效范圍是0~20 m。
表3 測距結(jié)果Tab.3 Distance measurement results
本實驗采用四旋翼無人機搭載Jetson TX2嵌入式平臺,裝入jetpack4.5,Python版本為3.8,使用ROS系統(tǒng)與無人機Pixhawk飛控固件進行通信,雙目視覺模塊使用全瑞視訊雙目相機,如圖12所示。實驗環(huán)境為室外,將樹木作為農(nóng)用無人機的飛行避障目標(biāo)。無人機實際飛行時,防撞系統(tǒng)的圖像如圖13所示。
圖12 無人機及其組件Fig.12 UAV and its components
圖13 無人機避障系統(tǒng)測試Fig.13 Testing of the UAV obstacle avoidance system
在圖13(a)中,障礙物距離農(nóng)用無人機3.28 m,小于5 m且防撞區(qū)域與障礙物重疊,若無人機繼續(xù)飛行則會與障礙物目標(biāo)發(fā)生碰撞,故執(zhí)行避障指令。因為右側(cè)防撞區(qū)域與目標(biāo)檢測框的差集更大,故無人機會向右偏航來躲避障礙物。在圖 13(b)中,雖然障礙物與無人機的距離小于5 m,但無人機中心的防撞區(qū)域與障礙物目標(biāo)檢測框交集為0,故無人機可沿當(dāng)前航線繼續(xù)飛行,無需進行避障動作。
本文研究了目標(biāo)檢測神經(jīng)網(wǎng)絡(luò)的輕量化方法和無人機自主避障的關(guān)鍵技術(shù),提出一種基于Ghost改進的YOLOv5輕量化雙目視覺無人機避障算法。該避障算法在嵌入式系統(tǒng)中運行的平均FPS達到14.3,并用無人機避障飛行試驗證實了該算法具有一定的可行性,準(zhǔn)確性和實時性均能達到無人機飛行時避障的實用要求。改進后的網(wǎng)絡(luò)檢測平均準(zhǔn)確率為76.88%,與YOLOv5相比,mAP下降0.37%,但檢測時間下降22%,參數(shù)量下降25%。該方法對搭載小型嵌入式平臺的智能車輛或機器人等避障技術(shù)也具有非常重要的作用。本算法使用的避障方式依賴于目標(biāo)檢測的準(zhǔn)確性,因此,提高目標(biāo)檢測的準(zhǔn)確率將是改進本算法的一個重要方向。