劉 禎,羅健欣,潘志松
(陸軍工程大學(xué) 指揮控制工程學(xué)院,江蘇 南京 210007)
人類生活在一個三維的空間,正如雙耳效應(yīng)與雙目深度存在的必要性,耳朵和眼睛均是成雙來感知這個三維世界。單一的二維圖像本身就缺乏一個維度信息,使其難以應(yīng)用于更全面的環(huán)境感知領(lǐng)域以及許多相關(guān)實際應(yīng)用,例如自動駕駛與機器人技術(shù)。然而,直接的三維檢測由于維度的提升,導(dǎo)致變量顯著增多,因此存在運算速度慢、檢測精度低等一系列問題。
點云的利用,對自動駕駛而言相當(dāng)重要,其主要體現(xiàn)在對普通的RGB相機的優(yōu)勢:(1)能夠獲取與RGB相機一樣的環(huán)境信息;(2)獲取所需研究對象的位置信息;(3)由于雷達(dá)點云通常位于汽車頂部的最高位置,因此在某種程度上減輕了遮擋問題。利用點云數(shù)據(jù)存在的劣勢顯而易見:點云是稀疏的,單獨的一個個點云研究顯得毫無意義,難以直接處理,但彼此又有所關(guān)聯(lián),因此不能單純地分開處理。所以,考慮使用聚類或投影方法來處理點云。
在自動駕駛方面,3D點云可以提供比2D圖像更多的幾何信息,因此對3D點云中的對象的姿勢進(jìn)行預(yù)計,往往比2D圖像中的估計更準(zhǔn)確。三維點云對象識別已逐漸成為新的研究方向,并已廣泛應(yīng)用于機器人導(dǎo)航、虛擬現(xiàn)實、人機交互、場景理解、激光遙感測量等多個領(lǐng)域。而最具代表性的應(yīng)用,就是自動駕駛方面。
大多數(shù)方法[1-3]用體素網(wǎng)格表示編碼3D點云。3DVP[4]引入了3D體素模式,并采用一組ACF檢測器進(jìn)行2D檢測和3D姿態(tài)估計。3DOP[5]從立體圖像重建深度,并使用能量最小化方法生成3D選框提議,然后利用R-CNN[6]訓(xùn)練。VoxelNet[7]是一種3D檢測網(wǎng)絡(luò),其將特征提取和邊界框預(yù)測統(tǒng)一到單個階段的端到端可訓(xùn)練深度網(wǎng)絡(luò)中。它將點云劃分為等間距的3D體素,并通過新引入的體素特征編碼(VFE)層將每個體素內(nèi)的一組點轉(zhuǎn)換為統(tǒng)一的特征表示。通過這種方式,點云被編碼為描述性體積表示,然后將其連接到RPN以生成檢測。
文獻(xiàn)[2]將點云投射到前視圖,獲得2D點圖。LMNet[8]同樣是使用前視圖投影方式,達(dá)到了非??斓乃俣龋梢钥醋鱒eloFCN的改進(jìn)版本。MV3D[9]提出了多視圖3D網(wǎng)絡(luò),這是一種感知融合框架,它將LIDAR點云和RGB圖像作為輸入并預(yù)測定向的3D邊界框。MV3D使用緊湊的多視圖表示對稀疏3D點云進(jìn)行編碼,并設(shè)計深度融合方案,以組合來自多個視圖的區(qū)域方式特征,并實現(xiàn)不同路徑的中間層之間的交互。Complex-YOLO[10]是僅在點云上的先進(jìn)的實時3D物體檢測網(wǎng)絡(luò),利用鳥瞰圖來進(jìn)行識別。它通過特定的復(fù)雜回歸策略來估計笛卡爾空間中的多類3D框,是一個擴展YOLOv2的網(wǎng)絡(luò)[11-12]。Complex-YOLO使用特定的Euler-Region-Proposal Network(E-RPN)[10]通過向回歸網(wǎng)絡(luò)添加虛數(shù)和實數(shù)分?jǐn)?shù)來估計對象的姿態(tài)。
有的工作將3D LIDAR點云編碼為3D網(wǎng)格[1,13]或前視圖[2]。根據(jù)MV3D[9]的思想,首先討論點云的鳥瞰圖投影。類似于制作帶有等高線的地形圖,為了保留更多的垂直方向的信息,可以將點云按照一定高度切割后再投影。
將投影點云分辨率設(shè)置為0.1 m,投影得到的每個像素的復(fù)制值只考慮高度。將點云按照高度值平均分為12個切片(測試起見,簡單地設(shè)定x,y,z如下:x∈[0,20 m],y∈[-10 m,10 m],z∈[-2 m,2 m],即前后設(shè)置為0~20 m,左右距離均為10 m,高度范圍為-2~2 m,每隔0.3 m切片)。為每個切片計算高度圖,可獲得12個高度圖(圖1(a))。當(dāng)然也可以按照圖1(b)所示的方式,直接得到整個點云的鳥瞰圖。
圖1 點云的鳥瞰圖
根據(jù)點云的特征和獲取方式,激光雷達(dá)從中間向外圍分散獲取點云數(shù)據(jù)??紤]到點云獲取方式類似燈光照射,而燈光照射下會產(chǎn)生大量陰影,點云的獲取也存在許多遮擋問題。將點云按照獲取的路徑重新投影回來,不考慮缺失的遮擋內(nèi)容,可以更好地恢復(fù)當(dāng)時的道路狀況。同樣,考慮人類駕駛員主要通過窗戶玻璃的曲面獲取道路信息,在前期處理中,將點云投影到弧面上以替換前視圖,如圖2所示,改進(jìn)的前視圖投影后,行人的特征得到了很好的保留。
圖2 雷達(dá)點云的360°前視圖投影
S
x
y
z
S
f
x
f
y
f
[9]
xf=?atan2(y,x)/m」
(1)
(2)
圖2中,按距離標(biāo)記顏色,從近到遠(yuǎn),從深紅色到藍(lán)紫色。點云的缺失部分標(biāo)記為白色(根據(jù)實際使用情況,也可以標(biāo)記為黑色)。
大多工作的點云投影處理,使用俯視圖(鳥瞰圖)。顯而易見,鳥瞰圖可以很好地獲得物體的位置信息,但對行人識別的準(zhǔn)確性卻不能令人滿意。
對于鳥瞰圖投影,顯而易見,鳥瞰圖投影很適合汽車等大物體的識別。雖然使用鳥瞰圖可以輕松識別車輛信息,獲取到想要的汽車位置信息,但是針對行人等小目標(biāo)的精確識別,單純的鳥瞰圖難以實現(xiàn)。相比于鳥瞰圖的直接投影,分割切片的方法在一定程度上更詳細(xì)地反映了高度信息,但依舊解決不了相關(guān)問題。
前視圖很好地保留了點云的信息,使行人和車輛的識別特征更加明顯,還可以通過限制投影角度來限制與擴大視野。前視圖投影存在的問題也比較明顯:(1)運算量要比普通投影大很多;(2)與RGB相機視角重復(fù),沒有發(fā)揮點云優(yōu)勢;(3)雖然在一定程度上保留了距離要素,但是相關(guān)數(shù)據(jù)的壓縮過大。
受傳統(tǒng)物體三個視圖(主視圖、側(cè)視圖、俯視圖)的啟發(fā),為了提高投影點云的利用率,提高識別精度,保留物體在車輛行駛方向上的位置信息,同時更好地與RGB照片結(jié)合利用,作為雷達(dá)點云投影的補充,本文提出點云的中視圖投影。
中視圖投影是基于側(cè)視圖進(jìn)行的改進(jìn),可用于提高投影方法的準(zhǔn)確性、物體識別和定位精度。將車輛的行駛前進(jìn)方向作為投影平面(中心平面,如圖3所示),根據(jù)側(cè)視圖的思想,將兩邊的點云投射到中心平面獲得點云的中間視圖,選擇用點云y方向(車輛兩側(cè)方向)的值編碼像素值,投影后的點的像素值如下:
P(xc,yc)=y,xc=x,yc=z
(3)
其中,x,y,z是點云坐標(biāo),xc,yc是中心投影后的坐標(biāo)。這樣保留了點云y方向的數(shù)據(jù)的同時,最大程度上突出點云x方向(車輛前進(jìn)方向)的數(shù)據(jù)。而且,點云x方向正是RGB相片所缺失的方向。
圖3 中視圖投影方法示意圖
當(dāng)然,還可以通過改變兩側(cè)投影的寬度(y方向數(shù)值范圍)以獲取更多詳細(xì)信息。相應(yīng)地,寬度越大,獲得的點云數(shù)量越多,但干擾的背景云越多。可以根據(jù)適當(dāng)?shù)鸟{駛場景選擇適當(dāng)?shù)狞c云投影范圍。針對干擾問題,特別是路邊墻壁與路燈等建筑對投影的較大干擾,本文提出了一種解決方案:兩側(cè)分別投影。如圖4所示,在選取范圍內(nèi)全投影的同時,還可以分別針對前進(jìn)中軸面(中視圖的投影平面)左右兩側(cè)進(jìn)行投影。
圖4 中視圖投影
更一般地,受到ComplexYolo[10]的啟發(fā),用三種值(距離y,反射r,高度z)編碼RGB,可以盡可能地保留更多點云信息:
Q(xc,yc)=(y,z,r),xc=x,yc=z
(4)
其中,Q是投影后圖片每個像素對應(yīng)的RGB值,xc,yc是中心投影后的坐標(biāo)。
單一地通過RGB進(jìn)行圖片識別,由于低維度的限制以及遮擋的問題,在汽車行進(jìn)方向上存在很大的盲區(qū)。同樣地,前視圖和鳥瞰圖投影也存在汽車行進(jìn)方向和垂直方向維度缺失的問題,這些在中視圖投影中得到了解決。由于與RGB照片的互補性,可以將兩者進(jìn)行結(jié)合,使得識別更精確,對數(shù)據(jù)利用更充分。
中視圖投影作為本文提出的新投影方法,在理論上和實際操作時,也會遇到一些問題。由于點云的稀疏性,通過距離y、反射r、高度z編碼RGB數(shù)值,在重新讀取時有小概率出現(xiàn)空白的現(xiàn)象。解決方案可以將其讀取范圍擴大一個像素點,也就是將感受野擴大,從1個像素點拓展到9個。另外,若是選擇左右側(cè)單投影的方式,處在投影平面位置的物體點云會出現(xiàn)殘缺。
綜上所述,中視圖投影有以下優(yōu)點:(1)解決了鳥瞰圖的行人等目標(biāo)的識別困難問題;(2)最大程度地保留了RGB相機缺乏的維度數(shù)據(jù),可以更好地在自動駕駛中應(yīng)用;(3)本來的側(cè)視圖遮擋問題,可以按照所需要的左右兩側(cè)分投影解決,保留更詳細(xì)的點云數(shù)據(jù)。
實驗在KITTI[14-15]的訓(xùn)練集T上進(jìn)行,在訓(xùn)練之前對點云數(shù)據(jù)進(jìn)行預(yù)處理。首先需要確定點云的范圍,選擇合適的投影區(qū)間。
Z×Y×X=[-2,0.5]×[-10,10]×[0,20]
(5)
其中,Z、Y、X分別是點云在垂直方向、汽車兩側(cè)、汽車前進(jìn)方向的坐標(biāo)。
然后進(jìn)行投影操作,按照上一節(jié)的描述內(nèi)容,將點云進(jìn)行中視圖投影。點云中的三維標(biāo)簽按照投影方式對應(yīng)到中視圖投影中,制作圖像識別最常用的選框標(biāo)記,令中心坐標(biāo)為(x,y),長為l,寬為w。由于投影方式相同,因此圖片大小一致,可以很方便地對標(biāo)簽x、y、l、w進(jìn)行歸一化。最后將結(jié)果寫入文本文檔,完成預(yù)處理工作。圖5中,對標(biāo)注后的中視圖投影選框進(jìn)行了可視化。
圖5 標(biāo)注后的中視圖投影選框可視化
將得到的預(yù)處理結(jié)果按照下面的公式分配訓(xùn)練集Ttrain和數(shù)據(jù)集Tval:
0.7T/Ttrain=0.3T/Tval=1
(6)
選擇Faster R-CNN[16]或者YOLOv3[17]模型作為訓(xùn)練模型,并針對其進(jìn)行改進(jìn),使識別速度更快、精度更高,并且得到的投影圖可以依據(jù)需要編碼像素,數(shù)據(jù)可以直接從圖片上讀取。目前,在二維圖像識別方面,YOLOv3[17]能夠得到很好的效果,不僅速度非???,在準(zhǔn)確度上也表現(xiàn)優(yōu)秀,尤其適合用在自動駕駛這種對速度和準(zhǔn)確度都有很高要求的應(yīng)用場景。
實驗通過對YOLOv3進(jìn)行改進(jìn)來訓(xùn)練中視圖投影。簡單起見,這里只使用了y方向?qū)ο袼厣手颠M(jìn)行編碼的投影圖,并對YOLOv3訓(xùn)練模型進(jìn)行如下的修改,以此來適應(yīng)中視圖投影的訓(xùn)練過程。
(1)關(guān)閉多尺度訓(xùn)練。由于中視圖生成的圖像尺寸是一致的,因此通過改變圖片形狀來提高識別準(zhǔn)確度的操作是沒有必要的,僅僅針對輸入圖像的大小進(jìn)行了簡單調(diào)整。
(2)KITTI數(shù)據(jù)集一共8個類,分別是Car、Van、Truck、Pedestrian、Person_sitting、Cyclist、Tram和Mis。針對YOLO9000[12]提出的維度集群,進(jìn)行一定的調(diào)整。將提議的候選框按照訓(xùn)練類別進(jìn)行了微調(diào),使其更接近符合預(yù)測的8個類。
(3)修改超參數(shù)。由于投影圖類似于卡通圖,與RGB圖像存在一些差異,因此對閾值等一些超參數(shù)進(jìn)行修改,可得到更好的訓(xùn)練效果。
在實際訓(xùn)練時,由于汽車和行人類別數(shù)量比較多,因此訓(xùn)練只對這兩項進(jìn)行。由于基本保留了訓(xùn)練模型的優(yōu)勢,因此FPS基本保留了YOLOv3的優(yōu)勢,達(dá)到實時的效果。最后對準(zhǔn)確率進(jìn)行評估,對行人識別的準(zhǔn)確率在71%左右,對汽車識別的準(zhǔn)確率將近80%。
如今,自動駕駛的安全性越來越受到關(guān)注。正是由于安全問題,自動駕駛技術(shù)進(jìn)展緩慢。自動車輛已經(jīng)攜帶足夠的設(shè)備來獲取道路信息,因此通過充分利用獲取的數(shù)據(jù)來提高駕駛識別的準(zhǔn)確性至關(guān)重要。與傳統(tǒng)投影方法相比,中視圖投影保留了更多需要的點云信息,并在細(xì)節(jié)方面進(jìn)行了優(yōu)化。
一系列投影方案可作為點云識別的解決方案。在實際應(yīng)用中,同樣考慮各種投影的組合,正如MV3D[9]的做法,中視圖的投影同樣可以加到深度融合[18]訓(xùn)練中,使得點云數(shù)據(jù)被充分利用,以改善自動駕駛的安全性。由于點云數(shù)據(jù)以較短的時間間隔生成,經(jīng)過一系列點云的投影處理后,類似于車輛行駛的連貫性,將每個視圖制成連續(xù)視頻,整個道路狀況都得到了很好的展示。還可以通過3D CNN[19]訓(xùn)練投影數(shù)據(jù),預(yù)先判斷行人和車輛行為,進(jìn)一步提高自動駕駛的安全性。