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