江澤宇,趙 蕓
(浙江科技學(xué)院 信息與電子工程學(xué)院,杭州 310023)
要實現(xiàn)自動駕駛必須解決道路上障礙物的檢測問題,即對道路上的三維物體進(jìn)行識別和位置估計。隨著卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展,大多數(shù)研究人員采用深度學(xué)習(xí)來處理三維物體的識別。為了能直接采用深度學(xué)習(xí)處理點云,Qi等[1]提出了PointNet,采用最大池(max pooling)解決了點云的無序性問題。在PointNet的基礎(chǔ)上,也出現(xiàn)了很多直接處理點云的分割算法和三維目標(biāo)識別算法。其中,Yan等[2]提出了一種改進(jìn)的稀疏卷積算法并將其應(yīng)用于三維物體檢測,該算法檢測速度快,但小目標(biāo)檢測精度不高;Wang等[3]在PointNet的基礎(chǔ)上提出了EdgeConv,采用局部鄰域映射的方法來提取點云的局部特征并分割目標(biāo),能夠捕捉到潛在的遠(yuǎn)距離相似特征,提高了分割精度;Qi等[4]提出的F-PointNet使用RGB(red,green,blue)圖像與點云的結(jié)合作為輸入,并使用PointNet作為分割網(wǎng)絡(luò)從中分離出前景點,但PointNet使用最大池化層提取點云全局特征并保證點云不變性的同時,并不能很好地提取到局部特征,因此該算法分割精度不高,從而導(dǎo)致某些目標(biāo)的檢測結(jié)果不準(zhǔn)確。近年來有些研究者[5-7]采用從鳥瞰圖(bird’s eye view,BEV)點云中分割和檢測目標(biāo)的方法,Chen等[8]提出了一個采用多視角和多種數(shù)據(jù)相結(jié)合的三維目標(biāo)檢測網(wǎng)絡(luò)MV3D,將前視點云和俯視點云作為輸入,避免了信息的丟失又減少了卷積的計算量;王張飛等[9]采用不同的濾波去除不必要的點,再通過深度投影的方式將點云轉(zhuǎn)為鳥瞰圖點云進(jìn)行目標(biāo)分割和檢測;Wang等[10]提出了一種多視圖三維檢測算法,將三維點云投影到具有特定角度的4個視圖并從中提取特征,從而保留了許多低級特征,檢測速度達(dá)到0.05 s/幀。但這些基于鳥瞰圖點云的檢測方法不能很好地檢測到小物體,而且激光雷達(dá)采集到的點云轉(zhuǎn)換為鳥瞰圖之后所需卷積運算量也增大。
綜上所述,傳統(tǒng)的基于點云的三維檢測算法由于點云的稀疏性而導(dǎo)致其檢測精度較低。因此,筆者提出一種新的基于邊緣特征的三維目標(biāo)識別算法。為了提高檢測速度,本算法首先基于二維檢測算法生成的二維候選區(qū)域過濾點云并生成視錐點云;然后在分割網(wǎng)絡(luò)中計算點云之間的歐氏距離并將其作為點云的邊緣特征輸入多層感知機(multi-layer perceptron,MLP)中,在MLP提取特征的同時重新計算點云之間的歐氏距離并更新邊緣特征,以此更好地提取局部特征并實現(xiàn)點云的分割;最后通過檢測網(wǎng)絡(luò)輸出三維邊界框的參數(shù)。
采用自動駕駛場景數(shù)據(jù)集KITTI[11](Karlsruhe Institute of Technology and Toyota Technological Institute)對提出的模型進(jìn)行訓(xùn)練和測試。該數(shù)據(jù)集具有7 481張分辨率為1 242×375的RGB圖片和與之對應(yīng)的7 481個三維點云數(shù)據(jù)。在圖片和點云中,道路上的障礙物會因其他物體的遮擋而出現(xiàn)不同的遮擋率,為了更好地將數(shù)據(jù)分類并測試模型,根據(jù)KITTI官方對數(shù)據(jù)集難度的定義及不同的遮擋率將數(shù)據(jù)分為3個等級:物體被遮擋率不超過15%即為簡單難度,物體被遮擋率在15%~30%之間為中等難度,物體被遮擋率超過30%為困難難度。為了更好地測試模型的性能,按照約7∶2∶1的比例劃分?jǐn)?shù)據(jù)集,其中訓(xùn)練集有5 236個數(shù)據(jù),驗證集有1 496個數(shù)據(jù),測試集有749個數(shù)據(jù)。訓(xùn)練集、驗證集、測試集均包含了簡單、中等、困難等級的圖片和點云,用訓(xùn)練集作為輸入數(shù)據(jù)訓(xùn)練本研究的模型及其他三維目標(biāo)檢測模型,并使用劃分后的測試集對所有模型的性能進(jìn)行評估。
數(shù)據(jù)處理系統(tǒng)主要用于車輛識別,并在配置如下的計算機上進(jìn)行模型訓(xùn)練:顯卡為NVIDIA GTX 2 080Ti,處理器為Intel(R)Core(TM)i7,內(nèi)存為32 GB,操作系統(tǒng)為Win10。軟件系統(tǒng)為Pycharm2018,Python2.7,Tensorflow-gpu 1.14.0,Numpy 1.16.4,Mayavi和OpenCV庫。
在點云的預(yù)處理中,先采用二維檢測算法Fast R-CNN[12]對輸入的RGB圖片進(jìn)行檢測并生成二維候選區(qū)域,將輸入的點云與二維候選區(qū)域中的像素點一一對應(yīng)。如果三維點能夠?qū)?yīng)二維候選區(qū)域中的像素點,那么該三維點將被保留下來,否則被過濾掉,最終保留下來的點集合到一起并生成視錐體區(qū)域。在視錐內(nèi)的點一定在相機的視野內(nèi),因此只檢測在視錐范圍內(nèi)或者與視錐視野相交的物體。點云預(yù)處理的流程如圖1所示。
圖1 點云預(yù)處理的流程Fig.1 Flowchart of point cloud preprocessing
基于邊緣卷積的分割算法如圖2所示,該分割神經(jīng)網(wǎng)絡(luò)由構(gòu)造邊緣特征的模塊及多個MLP組成,同時也采用最大池化層提取全局特征。分割網(wǎng)絡(luò)的輸入數(shù)據(jù)為預(yù)處理后的視錐點云,在邊緣特征中,采用K近鄰算法確定目標(biāo)點的局部特征圖,并計算目標(biāo)點與相鄰點之間的歐氏距離,將該距離作為三維點的邊緣特征并用于MLP的卷積計算。為了提取三維點云更多的細(xì)節(jié)特征,在網(wǎng)絡(luò)中的較低層以更多的通道數(shù)來提取特征,如圖2中的兩層MLP(64),卷積核大小均為1×1。在最大池化層之前的所有MLP,在每次對點云進(jìn)行卷積計算并提取特征后,都會重新計算新的局部特征圖并構(gòu)造新的邊緣特征,再將新的邊緣特征傳入下一層MLP,使得每個點與其他點之間的關(guān)系能在點云中擴(kuò)散,以此改善PointNet只獨立地處理點以維持置換不變性而導(dǎo)致的局部特征缺失的情況。點云的分割問題可以看作是對每個點的分類,本研究將分割后的點云分為兩類,分別是雜亂點云和目標(biāo)點云,并在分割的最終結(jié)果中輸出它們對應(yīng)的分類得分。歐氏距離計算如下:
圖2 基于邊緣卷積的分割算法Fig.2 Segmentation algorithm based on edge convolution
(1)
三維空間中的歐氏距離是兩點之間的實際距離。距離矩陣(Dij)代表點云矩陣的第i個向量和第j個向量之間的歐氏距離。x、y、z表示三維空間中向量的坐標(biāo)值。
三維檢測算法最終目的是識別并定位目標(biāo),因此采用檢測網(wǎng)絡(luò)估計目標(biāo)的三維邊界框并分類,最終輸出三維邊界框的參數(shù),包括長度、寬度、高度、中心點的位置及邊界框的方向。目標(biāo)檢測網(wǎng)絡(luò)如圖3所示,將分割網(wǎng)絡(luò)得到的目標(biāo)點云作為輸入數(shù)據(jù)并送到檢測網(wǎng)絡(luò),在MLP和最大池化層中進(jìn)行多次卷積計算并回歸后獲得三維邊界框的參數(shù)。本研究采用的回歸方式與Faster R-CNN[13]類似,將三維邊界框回歸到不同的尺寸和朝向,并以不同尺寸的三維邊界框作為最終分類目標(biāo)的依據(jù)。
圖3 目標(biāo)檢測網(wǎng)絡(luò)Fig.3 Target detection network
點云預(yù)處理過程的可視化如圖4所示。圖4(a)是初始點云即未經(jīng)任何處理的輸入點云。圖4(b)是輸入的初始RGB圖片。圖4(c)是使用二維檢測算法Fast R-CNN對RGB圖片進(jìn)行檢測并生成對應(yīng)的二維邊界框的檢測結(jié)果圖,從圖中可以看出有3輛車被檢測出來。圖4(d)是點云投影到圖片上,并且點云中的三維點與二維候選區(qū)域中的像素點一一對應(yīng)的可視化結(jié)果,在圖中可以看到距離二維邊界框較近的點顏色偏紅;反之,距離二維邊界框較遠(yuǎn)的點顏色偏綠,圖中還出現(xiàn)了未被三維點覆蓋的像素,這是由于激光雷達(dá)的掃描高度有限,因此無法覆蓋所有像素。圖4(e)是點云預(yù)處理后的最終結(jié)果的可視化圖,從圖中可以看出,預(yù)處理后的點云數(shù)量遠(yuǎn)遠(yuǎn)少于圖4(a)中的點;圖中的五邊形邊界框是為了凸顯視錐區(qū)域的范圍,使得視錐的可視化效果更明顯。
圖4 點云預(yù)處理過程的可視化Fig.4 Visualization of point cloud preprocessing process
本試驗設(shè)置的網(wǎng)絡(luò)參數(shù)包括:輸入的點云總點數(shù)為2 048,訓(xùn)練周期為200次,優(yōu)化器為Adam,動量設(shè)置為0.9。為了訓(xùn)練模型,每次會取一小部分樣本作為輸入數(shù)據(jù),每次取32個點云樣本,即batch size為32。此外,在計算邊緣特征的過程中,需要用K近鄰算法確定相鄰點的個數(shù),試驗驗證后參數(shù)k的值設(shè)為6。在分割網(wǎng)絡(luò)的全連接層使用了dropout層來防止模型過度擬合,一般取值為0.4~0.6,在本試驗中該值為0.5。
本研究使用K近鄰算法計算歐氏距離并構(gòu)造邊緣特征。K近鄰算法的參數(shù)取值會影響邊緣特征的構(gòu)造,進(jìn)而影響特征的提取效果和點云分割。為了準(zhǔn)確選取一個合適的k值,對不同的k值進(jìn)行了試驗,試驗后的結(jié)果見表1。
表1 不同的k值對分割精度的影響
在得到最終的檢測結(jié)果之前,將本文方法與其他分割算法進(jìn)行比較(表2)。mesh是以網(wǎng)格的形式表示點云,volume是三維空間分割上的最小單位,類似像素,以立方體的形式來表示點云,而以point的形式處理點云是當(dāng)前的主流形式,可直接將三維點云輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,本文的算法采用這種形式處理點云。由表2可知,本文算法的分割精度比multi-view segmentation算法提高了25.48百分點,比O-CNN算法提高了6.92百分點,可見采用point形式作為輸入能更好地處理點云。同時,本文算法的分割精度比F-PointNet提高了2.30百分點,測試結(jié)果證明本研究提出的構(gòu)造邊緣特征的方法能改善PointNet的局部特征缺失情況,實現(xiàn)更好的分割。
表2 不同分割算法的分割精度對比
在測試結(jié)果中隨機選取3張點云圖,從數(shù)據(jù)集中選取它們對應(yīng)的初始點云圖,并將這些點云圖可視化,如圖5所示。由圖5可知,圖5(a)檢測出了4輛汽車,圖5(b)檢測出了5輛汽車和1個行人,這兩個測試結(jié)果都正確地檢測出了所有目標(biāo),圖5(c)中只檢測出了1輛汽車和4個行人,有1個行人未被檢測到,這可能是由于該行人的三維點云不夠密集而導(dǎo)致的漏檢。
圖5 檢測結(jié)果的可視化圖Fig.5 Visualization of detection results
為了更好地對比本文算法與其他算法的性能,采取KITTI數(shù)據(jù)集的三維點云測試集對本文算法進(jìn)行了驗證,對汽車、自行車和行人的檢測精度對比結(jié)果見表3。檢測的對象分別是汽車、自行車和行人,由于每種目標(biāo)都存在著不同遮擋率,因此把數(shù)據(jù)劃分為了簡單、中等和困難3個等級并一一進(jìn)行驗證。由表3可知,相比于基于迭代算法的三維目標(biāo)檢測算法[16],采用鳥瞰視角的MV3D算法及采用PointNet作為分割網(wǎng)絡(luò)的F-PointNet算法,本研究提出的基于邊緣卷積的三維目標(biāo)識別算法在不同目標(biāo)的識別精度上都有所提高。隨著遮擋率的增大,目標(biāo)的檢測精度下降,其中行人的檢測精度最低,這是因為行人點云的幾何形狀不明顯,易與其他物體點云混淆在一起,不易過濾出來,且行人的三維點可能會由于太稀疏而出現(xiàn)誤檢或漏檢等情況的發(fā)生,從而使得行人的檢測精度遠(yuǎn)低于車輛和自行車。驗證結(jié)果證明了本文算法實現(xiàn)了最佳檢測性能,這說明本研究提出的邊緣卷積有助于提取局部特征并提高檢測精度。
表3 不同算法對汽車、自行車和行人的檢測精度對比Table 3 Comparison of detection accuracy of different algorithms for vehicles, bicycles and pedestrians %
本研究提出了一種基于邊緣卷積的三維目標(biāo)檢測算法,采用由激光雷達(dá)獲取得到的點云和由RGB攝像機采集到的圖像作為輸入數(shù)據(jù)來識別和定位道路上的障礙物。試驗結(jié)果證明了本研究提出的基于邊緣卷積的分割網(wǎng)絡(luò)的有效性,且分割精度和檢測精度相比于其他算法都有所提升。驗證結(jié)果也說明了該方法存在一些尚待完善的地方,其中一個可能的擴(kuò)展是將RGB圖像更好地與點云融合,并且提高RGB圖像的檢測精度也能更好地提高模型的性能。另一種可能性是完善目標(biāo)點云,使得目標(biāo)的三維點足夠密集,減少因三維點不足而導(dǎo)致的誤檢和漏檢等情況的發(fā)生。我們在未來將更多地研究RGB圖像與點云的融合,以獲得更好的檢測效果。