劉王超,婁鑫
(1 上海科技大學信息科學與技術(shù)學院, 上海 201210; 2 中國科學院上海微系統(tǒng)與信息技術(shù)研究所, 上海 200050; 3 中國科學院大學電子電氣與通信工程學院, 北京 100049)
三維物體檢測是自動駕駛中一項重要的任務。目前已存在的三維物體檢測算法都依賴于激光雷達獲取的準確的三維點云數(shù)據(jù)。雖然激光雷達能獲取精確的深度信息,但它仍有較大的局限性,原因有二:第一,激光雷達很昂貴,會大幅度提高自動駕駛的硬件費用,不利于商業(yè)上推廣使用;第二,盲目依賴單一傳感器可能會導致一些安全隱患,因此需要其他傳感器以防意外發(fā)生。雙目相機就是一個很好的備選方案。光學相機的成本要低很多,并且不同于激光雷達受限于稀疏的激光掃描光束,雙目相機可以獲得密集的深度圖。
近年來,一些文章研究了用單目或雙目深度估計[1-2]來做三維物體檢測[3-4]。然而,主要的研究成果都集中在用雙目深度圖作為激光雷達方法的一種補充[5]。單獨使用深度圖像的方法只能實現(xiàn)很低的檢測準確率。
最近有研究表明,雙目深度圖相對于激光雷達點云在檢測表現(xiàn)方面存在巨大差距的主要原因不在于深度信息上的準確性,而是因為雙目所采用的三維信息數(shù)據(jù)表示方式不適用于三維物體檢測的卷積網(wǎng)絡[6]。文獻[6]提出一種分為兩步的基于雙目相機的三維物體檢測方法。首先將通過雙目算法估計得到的深度圖轉(zhuǎn)化為點云圖,這種對激光雷達數(shù)據(jù)的仿制稱為pseudo-LiDAR;然后,再將pseudo-LiDAR數(shù)據(jù)放入到基于激光雷達點云的三維物體檢測流程中訓練。通過改變?nèi)S數(shù)據(jù)的表現(xiàn)形式,實現(xiàn)了在檢測準確率上的巨大提升。
然而,這種通過改變數(shù)據(jù)表示形式得到的準確率相對于原始激光雷達數(shù)據(jù)得到的檢測準確率仍然有不小的差距。對比雙目深度圖和激光雷達點云圖,除了在數(shù)據(jù)表示形式上的差別,發(fā)現(xiàn)原作者在假設時認為雙目相機和激光雷達的深度信息的準確性是一致的,這種假設是存在缺陷的。眾所周知,激光雷達的數(shù)據(jù)是通過激光掃描直接獲取,而雙目相機需要通過算法計算不同位置相機拍攝的圖片的對應匹配點進而獲取深度信息。對比這兩種傳感器的數(shù)據(jù)獲取方式,明顯激光雷達的數(shù)據(jù)更加精確,而雙目深度圖更加密集。這種數(shù)據(jù)的精確程度對檢測結(jié)果會產(chǎn)生什么影響是原作者沒有考慮的。針對這個問題,本文設計實驗并分析這些因素對檢測準確性的影響。
點云數(shù)據(jù)是一堆空間點的集合,具有無序性和旋轉(zhuǎn)性,而圖像是一堆像素點按照固定的順序整齊排列的,由于這兩種數(shù)據(jù)表現(xiàn)形式的巨大差別,所以無法用現(xiàn)有的處理二維圖像的卷積網(wǎng)絡處理三維點云。目前,利用點云數(shù)據(jù)來做三維物體檢測的算法,主要使用下述這幾種方法對數(shù)據(jù)進行預處理。
第一,多視角方法。MV3D(multi-view 3D)[7]將激光雷達的點云數(shù)據(jù)從不同角度進行投影獲取多角度特征,然后特征被視圖池化過程(view pooling procedure)聚合起來成為三維物體。第二,體像素法。VoxelNet[8]通過將點云數(shù)據(jù)視為空間中的體像素,然后用類似于平面上的二維卷積方法進行三維卷積對空間中的點云進行特征提取。第三,點云直接處理方法。PointNet[9]直接處理空間中的無序點云,通過空間變化和池化操作對點云整體提取出全局特征。
要使用雙目相機代替激光雷達,首先是要獲取精確的深度信息。雙目視覺算法計算深度的典型流程包括匹配代價計算,代價聚合,視差計算和視差優(yōu)化。其本質(zhì)就是找到一對圖像中的匹配對應點。最近,隨著深度學習的發(fā)展,大量利用深度卷積神經(jīng)網(wǎng)絡的方法[10-11]開始在雙目視覺上使用。PSMNet[12]就是一種基于全局信息立體匹配的卷積神經(jīng)網(wǎng)絡,其通過網(wǎng)絡的學習自動找到匹配點,并通過引入空間金字塔池化(spatial pyramid pooling)結(jié)構(gòu),將像素級的特征提升為區(qū)域級,減少病態(tài)(ill-posed)區(qū)域帶來誤差的問題,實現(xiàn)了結(jié)果上的明顯提升。
由于通過雙目算法得到的是視差圖(disparity map), 然而實驗中要求的是深度信息,所以需要將其轉(zhuǎn)化為深度圖。視差與深度之間存在的轉(zhuǎn)換關系為
(1)
其中:b(baseline)為一對相機之間的間距,f為左相機的水平焦距,d為視差,ps為相機的像素長度,D則為需要求得的深度。
在以往對于深度信息的處理中,通常以深度圖的形式表示。但是深度圖是一種二維的圖片,相對于激光雷達三維點云的表示形式,有兩個明顯的問題:第一,在圖片中,由于相機成像的特點,遠距離的物體會變得很小,目前對小物體的檢測是很困難的;第二,在進行局部計算,例如卷積或者池化操作時,圖片上相鄰的2個像素點,在實際的三維場景中可能分布于2個深度相差很遠的物體上,這使得確定物體在三維空間中的位置變得困難。所以,將深度信息以空間中點云的形式表現(xiàn)出來可以更好地表現(xiàn)物體的實際信息。將相機坐標系中的每一個像素點(u,v)轉(zhuǎn)變?yōu)槭澜缱鴺讼抵械娜S位置坐標(x,y,z)。變換公式如下:
(2)
(3)
z=D(u,v).
(4)
其中:fU是水平焦距,fV是垂直焦距,都是相對于左相機,(cU,cV)是左圖的中心位置像素。通過上面的變換公式,可以將深度圖中的全部像素點,轉(zhuǎn)變?yōu)槿S世界中的空間點。將這種通過公式變換后的三維點云稱之為pseudo-LiDAR。
將pseudo-LiDAR作為輸入數(shù)據(jù)放入到三維物體檢測模型中進行測試的實驗結(jié)果顯示,雖然檢測結(jié)果相對于沒有經(jīng)過改變的雙目深度圖的結(jié)果有了很大的提升,但是與使用激光雷達的點云作為輸入的表現(xiàn)相比,仍然有著不小的差距。文獻[6]作者得出的結(jié)論是基于一個假設,認為激光雷達的點云和雙目相機產(chǎn)生的深度圖在檢測中結(jié)果的不同,不在于數(shù)據(jù)的精度,而在于數(shù)據(jù)的表示形式。但是實驗結(jié)果卻表明,不僅數(shù)據(jù)的表示形式會對實驗結(jié)果有影響,同時數(shù)據(jù)的精度同樣可能會有影響。所以我們認為文獻[6]中的假設是不全面的。由于激光雷達和雙目相機獲取深度信息的方式不同,導致在數(shù)據(jù)的精確程度上,激光雷達要優(yōu)于雙目相機。但是,激光雷達的數(shù)據(jù)相對于雙目相機來說是稀疏的,因此在數(shù)據(jù)的密集程度上,雙目相機是有優(yōu)勢的。所以,數(shù)據(jù)的精確程度和點云的密集程度,會對最后的檢測結(jié)果產(chǎn)生什么樣的影響,是接下來要討論的問題。
2.2.1 實驗流程
圖1為本論文提出的驗證基于pseudo-LiDAR的三維檢測準確性的流程圖。首先,在獲得相機的原始雙目圖像之后,通過PSMNet算法和深度估計得到深度圖。然后,將深度圖轉(zhuǎn)化為pseudo-LiDAR點云數(shù)據(jù)。不同于文獻[6]中直接將未處理過的pseudo-LiDAR數(shù)據(jù)送入三維物體檢測模型的做法,本文用激光雷達數(shù)據(jù)作為參考數(shù)據(jù),通過相應算法排除pseudo-LiDAR中的誤差數(shù)據(jù),即與激光雷達數(shù)據(jù)差距較大的點。最后將優(yōu)化過的pseudo-LiDAR輸入到三維檢測模型中去,對比數(shù)據(jù)優(yōu)化前后的檢測結(jié)果以研究深度數(shù)據(jù)精度以及密度對檢測的影響。
圖1 驗證pseudo-LiDAR檢測準確性流程圖Fig.1 Flow chart to validate the accuracy of pseudo-LiDAR detection
2.2.2 Pseudo-Lidar數(shù)據(jù)優(yōu)化
激光雷達通過激光投射到物體表面進而利用回波的方式來探測物體距離,相比較于雙目相機產(chǎn)生的深度信息,其數(shù)據(jù)的準確性更加可靠。根據(jù)上述原因,在接下來的算法中,都將激光雷達的數(shù)據(jù)作為真實深度數(shù)據(jù),用來排除pseudo-LiDAR中誤差點。數(shù)據(jù)優(yōu)化的過程可分為如下3步。
1)截取投影區(qū)域。激光雷達數(shù)據(jù)是通過水平光束掃描整個空間獲得的,輻射范圍達到360°。但是通過雙目相機產(chǎn)生的pseudo-LiDAR數(shù)據(jù)只采集了相機正前方的環(huán)境信息,可視角度小于激光雷達。本文需要用激光雷達的數(shù)據(jù)作為參考數(shù)據(jù)來排除pseudo-LiDAR中的誤差數(shù)據(jù),因此需要保證可視角度的一致性,即保證兩種傳感器所感知的環(huán)境范圍一致。本文通過獲取pseudo-LiDAR的可視角度范圍,然后截取激光雷達的點云,截取后的點云就是算法中所需要的真實數(shù)據(jù)。圖2展示了激光雷達數(shù)據(jù)的一個場景截取前和截取后的對比。
圖2 激光雷達截取前和截取后的點云場景Fig.2 Point cloud scenarios of LiDAR before and after interception
2)搜索pseudo-LiDAR點云附近的激光雷達點。經(jīng)過截取激光雷達的點云數(shù)據(jù)后,激光雷達與pseudo-LiDAR的數(shù)據(jù)在空間中是存在對應關系的。但是,與圖像中像素點整齊排列不同的是,點云數(shù)據(jù)在空間中并不是整齊有序分布的。也就是說,在一組對應的點云數(shù)據(jù)中,很少會出現(xiàn)2個坐標完全一致的點。但是,在對應的點云中空間坐標相近的點仍然可以認為表示相同的信息。因此,本論文利用K近鄰搜索算法,在pseudo-LiDAR中每一個點附近都搜索到K個激光雷達的數(shù)據(jù)點。這樣搜索之后,在每一個pseudo-LiDAR點的鄰近區(qū)域都分布著K個激光雷達的數(shù)據(jù)點,并且在空間中表達的信息是相似的。再考慮到優(yōu)化數(shù)據(jù)的準確性,本文中只取與之距離最近的一個點,也就是1NN算法。還有,雖然激光雷達和pseudo-LiDAR的數(shù)據(jù)都是三維點云,但在本文驗證算法中,搜索過程中并沒有使用點云數(shù)據(jù)的三維信息,而是采用了投影平面的二維信息來搜索相關點云,因為另一個維度的信息(深度信息)需要用來判斷誤差。
3)雙目數(shù)據(jù)優(yōu)化。在經(jīng)過搜索pseudo-LiDAR點云附近的激光雷達點云數(shù)據(jù)之后,可以得到以每一個pseudo-LiDAR為中心點,K個不均勻分布在周圍的激光雷達點的數(shù)據(jù)集。如果搜索范圍是一個很小的局部區(qū)域,可以認為它們深度信息是一致的。但是,由于激光雷達數(shù)據(jù)的稀疏性,部分pseudo-LiDAR的周邊區(qū)域搜索到的激光雷達數(shù)據(jù)點可能距離較遠。所以為了保證兩種數(shù)據(jù)表達信息的一致,本文設置一個搜索范圍閾值D。至此,可以通過比較分布在周圍的激光雷達的點的深度信息與pseudo-LiDAR的深度差來判斷是否存在誤差。為簡化問題,取距離pseudo-LiDAR最近的激光雷達的點作為真實數(shù)據(jù)。設兩組數(shù)據(jù)之間的深度差為Δ,判斷深度閾值為T。本文提出兩種不同的優(yōu)化方法。①保留有效點。如果Δ
圖3 Pseudo-LiDAR優(yōu)化前和優(yōu)化后的點云場景Fig.3 Point cloud scenarios of pseudo-LiDAR before and after optimization
本論文通過上面的一系列步驟,實現(xiàn)了對pseudo-LiDAR的優(yōu)化處理。但是在優(yōu)化數(shù)據(jù)的過程中使用了兩種不同的算法,這對實驗結(jié)果是有影響的,但具體對物體檢測準確率的影響如何,需要在實驗中確定。
使用KITTI物體檢測基準(benchmark)[13]來驗證提出假設的準確性。根據(jù)文獻[8]中的方法,將數(shù)據(jù)集中提供的7 481訓練數(shù)據(jù)按照大約1∶1的比例分為訓練集和驗證集,每一部分分別包含3 712和3 769個數(shù)據(jù)。
同時為保證驗證結(jié)果的可靠性,本文還使用了兩種不同的三維物體檢測算法,AVOD[14]和F-PointNet[15]。這兩種算法都使用圖像和激光雷達的信息作為輸入。但在本文的訓練以及檢測過程中,需要將經(jīng)過優(yōu)化后的pseudo-LiDAR代替激光雷達作為輸入數(shù)據(jù)。
在物體檢測中,通常用交并比(intersection over union,IoU),也就是預測邊框和真實邊框的交集和并集的比值,來衡量檢測的難度。交并比數(shù)值越大,表示檢測出來的物體與真實物體重合度越高。在三維物體檢測中,主要使用三維(3D)和鳥瞰圖(bird’s eye view,BEV)平均檢測率衡量檢測的準確率。本文分別用A3D和ABEV表示三維和鳥瞰圖平均物體檢測準確率。
本文中,選擇在IoU為0.5和0.7時,分別使用三維和鳥瞰圖平均物體檢測率來驗證測試集上的結(jié)果,并且主要驗證的是汽車這個類別。同時,在KITTI數(shù)據(jù)集中,根據(jù)真實邊框的高度和遮擋或者缺失程度,文獻[13]中還將每一個類別分別劃分為簡單、中等、困難3個等級。通常,距離傳感器30 m距離以內(nèi),可以稱之為簡單等級。
本實驗是在Ubuntu16.04操作系統(tǒng)下進行的,使用英偉達的GTX2080TI進行加速。
首先,設置參數(shù)搜索差值閾值D為0.033(即D的平方為0.001),誤差閾值T為0.3,使用只保留有效點的優(yōu)化方法,將產(chǎn)生的數(shù)據(jù)作為AVOD和F-PointNet的輸入進行訓練,產(chǎn)生的結(jié)果如表1所示。表中記錄的是關于汽車類別的A3D和ABEV。
從實驗結(jié)果可以清楚地看出來,在簡單等級下,優(yōu)化前和優(yōu)化后數(shù)據(jù),最后的檢測結(jié)果相差不是很大。但是在困難等級下,尤其是在IoU為0.7時,檢測準確率最高提高21.02%。根據(jù)文獻[13]中的等級分類,簡單等級意味著目標檢測物完全可見并且遮擋較少,困難等級就是目標物遮擋較多,不易完全看見。通常情況下,簡單等級下檢測的是距離傳感器較近的物體,困難等級下檢測的時較遠的物體。表1中的數(shù)據(jù)表明,雙目相機產(chǎn)生的數(shù)據(jù)與激光雷達的數(shù)據(jù)相比是存在誤差的,這種誤差在物體距離傳感器較近時是很小的,但是會隨著距離的增大而增大。
表1 優(yōu)化前后的檢測效果Table 1 Detection effects before and after optimization
同時做了兩組優(yōu)化參數(shù)誤差閾值T和搜索范圍D的對比實驗??刂艱為0.033時優(yōu)化誤差閾值T和保持T為0.3時優(yōu)化搜索范圍D。實驗結(jié)果分別如表2中誤差閾值T和搜索范圍D部分所示。從經(jīng)驗上分析,誤差閾值和搜索范圍越小,優(yōu)化后的數(shù)據(jù)就與激光雷達的數(shù)據(jù)越接近,數(shù)據(jù)就越精確。但是實驗結(jié)果卻與預想的并不一樣。實驗結(jié)果顯示縮小搜索范圍和降低誤差閾值有時并不能確保檢測準確率的提高,而需要將參數(shù)保持在一個合理的范圍內(nèi)。最后統(tǒng)計了優(yōu)化后的點云數(shù)量占原始點云的數(shù)量的百分比。可以明顯發(fā)現(xiàn),優(yōu)化后的數(shù)量占比20%左右時會有一個比較好的效果,當優(yōu)化后的點云規(guī)模只有10%左右的時候,檢測精度大幅下降。這就說明減小參數(shù),雖然數(shù)據(jù)會更精確,但是也排除了大量誤差不是很大的點云數(shù)據(jù),從而導致優(yōu)化后的點云數(shù)據(jù)過于稀疏,同樣會影響最后檢測的結(jié)果。
表2 不同參數(shù)和不同優(yōu)化方法的檢測效果Table 2 Detection effects of different parameters and different optimized methods
最后,在此基礎上,又做了一組對比實驗。各參數(shù)保持不變,使用前文提到的兩種不同的方法來優(yōu)化pseudo-LiDAR數(shù)據(jù),然后分別將優(yōu)化后的數(shù)據(jù)輸入到AVOD算法中進行訓練,最后得到的實驗結(jié)果如表2中優(yōu)化方法部分所示。使用排除誤差點這種方法來優(yōu)化數(shù)據(jù),對實驗結(jié)果基本上沒有影響,甚至有點下降。而保留有效點這種方法卻有很大提升。這是因為激光雷達的數(shù)據(jù)點是稀疏的,而pseudo-LIDAR的數(shù)據(jù)點是密集的,所以會出現(xiàn)pseudo-LiDAR的鄰近區(qū)域內(nèi)沒有激光雷達的點。而排除誤差點方法不僅包含了保留有效點方法得到的所有點,還將那些遠離激光雷達的pseudo-LiDAR的數(shù)據(jù)點保留下來。這表明在原有精確的稀疏數(shù)據(jù)的基礎上,加上一些對缺失區(qū)域的補充數(shù)據(jù),如果這部分數(shù)據(jù)存在誤差,不僅不會對原始數(shù)據(jù)有提高,還會降低數(shù)據(jù)的可靠性,帶來檢測準確率的降低。也就是說,在三維物體檢測中,數(shù)據(jù)的密集程度對檢測結(jié)果的影響不是很大,數(shù)據(jù)的準確性才更重要。所以,可以得出結(jié)論,在三維物體檢測中,準確的數(shù)據(jù)點才是關鍵,盲目地多傳感器數(shù)據(jù)融合有時并不會帶來效果的提高。
針對基于雙目數(shù)據(jù)生成的pseudo-LiDAR的三維物體檢測結(jié)果相對于基于激光雷達點云的結(jié)果仍有不小差距的問題,提出自己的假設,認為差距產(chǎn)生的主要原因是pseudo-LiDAR數(shù)據(jù)中存在深度不準確的點?;谏鲜黾僭O,基于激光雷達的精確點云數(shù)據(jù),利用K近鄰算法對pseudo-LiDAR的數(shù)據(jù)進行了優(yōu)化,并以此為輸入進行物體檢測,檢測結(jié)果有了明顯提升。這表明通過雙目算法產(chǎn)生的pseudo-LiDAR數(shù)據(jù)中的不準確點對三維物體檢測結(jié)果有較大的影響。采用兩種不同的方法來優(yōu)化pseudo-LiDAR,實驗結(jié)果表現(xiàn)出明顯的差別。這表明對物體檢測的準確性的影響不在于數(shù)據(jù)的密集程度,而在于數(shù)據(jù)的精確程度,盲目地多傳感器融合有時并不會帶來檢測結(jié)果的提高。本文的不足之處在于仍然使用了激光雷達的數(shù)據(jù)作為校準數(shù)據(jù),優(yōu)化了pseudo-LiDAR數(shù)據(jù)的精度,從而提高了物體檢測的準確率。接下來的工作要直接從pseudo-LiDAR數(shù)據(jù)本身來優(yōu)化數(shù)據(jù),實現(xiàn)檢驗準確率的提高。