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