黃 漫, 黃 勃, 高永彬
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201620)
三維目標(biāo)檢測技術(shù)[1,2]是利用顏色信息對物體進(jìn)行分類,且利用深度傳感器獲取的深度信息估算目標(biāo)的位置、三維邊界框及方向角。目前,該技術(shù)是實現(xiàn)室外自動駕駛系統(tǒng)與室內(nèi)機(jī)器人系統(tǒng)的關(guān)鍵技術(shù)。
深度相機(jī)出現(xiàn)后,三維目標(biāo)檢測方法大多基于深度相機(jī)獲取的RGB-D圖。Depth-RCNN[3]為基于RGB-D圖的三維目標(biāo)檢測方法奠定了基礎(chǔ),即在RCNN[4]的基礎(chǔ)上將深度信息編碼為視差、高度和角度三個通道,隨之而來的Amodal3Det[5]算法亦是以RGB-D圖作為輸入。然而,在室外自動駕駛場景中存在強(qiáng)光且深度像機(jī)在強(qiáng)光下存在不穩(wěn)定性,導(dǎo)致獲取的RGB-D圖像受到影響,而激光雷達(dá)攝像機(jī)則不受強(qiáng)光影響,是以基于雷達(dá)點云的三維目標(biāo)檢測應(yīng)用范圍更為廣泛且研究意義更大。
目前,基于雷達(dá)點云的三維目標(biāo)檢測方法不多,早期的一部分方法是將目標(biāo)檢測從二維拓展到三維,例如DSS[6]算法將二維滑動窗拓展為三維滑動窗。另外,亦有算法將RGB-D圖轉(zhuǎn)換為點云并輸入到卷積網(wǎng)絡(luò)進(jìn)行三維目標(biāo)檢測,例如F-PointNet[7]算法。但在點云的新特征空間下,面臨的新問題是:點云存在稀疏性和無序性,深度學(xué)習(xí)直接作用點云上的效果較差,另外點云數(shù)目過大,直接對場景點云做處理導(dǎo)致計算復(fù)雜度過高且目前計算機(jī)性能亦無法滿足要求。然而,三維點云包含場景完整的幾何信息,基于點云進(jìn)行三維目標(biāo)檢測又是大勢所趨。
因此,本文旨在以雷達(dá)點云作為三維目標(biāo)檢測輸入的同時克服上述難題。本文輸入RGB圖與雷達(dá)點云,結(jié)合IP-Basic[8]算法在消除噪聲的同時將稀疏雷達(dá)點云補(bǔ)全成稠密深度圖;其次,采用降維原理縮小點云的搜索空間,結(jié)合Mask R-CNN[9]在RGB圖上進(jìn)行實例分割,并根據(jù)分割實例提取目標(biāo)在深度圖上對應(yīng)的區(qū)域;再者,結(jié)合點云的自然不變性,將目標(biāo)對應(yīng)的深度圖還原為點云后輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征學(xué)習(xí)。實驗結(jié)果表明:該方法在公開的三維目標(biāo)檢測數(shù)據(jù)集上達(dá)到了較好的檢測精度。
目前,三維目標(biāo)檢測大多基于深度像機(jī)獲取的RGB-D圖,然而深度像機(jī)受強(qiáng)光影響而存在不穩(wěn)定性,輸入雷達(dá)點云則更符合室外自動駕駛的應(yīng)用場景。但因雷達(dá)點云有噪聲且過于稀疏,直接輸入點云進(jìn)行三維目標(biāo)檢測的效果較差。本文利用IP-Basic算法對雷達(dá)點云做去噪的同時將稀疏雷達(dá)點云補(bǔ)全成稠密深度圖,從而提升深度信息的準(zhǔn)確率,該算法具體如下:
1)深度反演:反演旨在避免后期圖像處理時近處物體的邊緣丟失問題。本文采用Kitti數(shù)據(jù)集針對三維目標(biāo)檢測任務(wù)提供的RGB圖與雷達(dá)點云。在將稀疏雷達(dá)點云轉(zhuǎn)化為深度圖后觀察到,空像素其值為0 m,近處物體像素值接近0 m,遠(yuǎn)處物體像素值最大為80 m。若對該深度圖直接膨脹,不僅近處物體接近0 m的像素值被該物體中較大的像素值覆蓋而導(dǎo)致近處物體的邊緣信息丟失,且接近0 m的像素值與空像素值不易區(qū)分。因此,對有效(非空)像素運(yùn)用式(1)進(jìn)行反轉(zhuǎn),對空像素不做反轉(zhuǎn),既可保證有效像素和空像素存在20 m以上的差值,又可保留近處物體的邊緣信息。深度反演公式如下,Dinput為Kitti雷達(dá)點云直接轉(zhuǎn)化的深度圖,其中空像素處以零值填充,Dinverted為反演后的深度值
Dinverted=100.0-Dinput
(1)
2)以適宜內(nèi)核膨脹:通過有效像素填充鄰近空像素,試驗證明內(nèi)核設(shè)置為圖1(a)所示形狀可達(dá)到更好的效果。
3)小孔填充:深度圖膨脹后,仍存在許多未填充的孔洞。觀察物體結(jié)構(gòu)可知,物體邊緣為膨脹后相鄰深度的連線。因此,采用圖1(b)所示的5×5完整內(nèi)核進(jìn)行閉運(yùn)算來填充深度圖中的小孔洞。
4)較大孔洞填充:先計算較大孔洞的掩碼,后進(jìn)行7×7完整內(nèi)核的膨脹操作達(dá)到填充較大孔洞的效果。算法中完整內(nèi)核皆類似圖1(b),僅改變內(nèi)核大小。
5)每列頂端像素值向上延伸:在場景高度高于激光雷達(dá)攝像機(jī)掃描高度時,其超出部分的點云無法獲取,為了深度圖完整,將每一列頂端有效像素值向上延伸。
6)大孔填充:大孔洞因不含有效像素點,無可使用圖像數(shù)據(jù),因此依據(jù)周圍點來推斷特大孔洞的深度值,即采用31×31完整內(nèi)核進(jìn)行膨脹來填充大孔洞。
7)中值和高斯模糊:由于雷達(dá)點云自身存在噪聲和膨脹操作產(chǎn)生的噪聲影響算法的效果,因此,采用5×5內(nèi)核的中值模糊去除局部邊緣的離群點,而后使用5×5內(nèi)核的高斯模糊來平滑局部平面以及尖銳的物體邊緣。
8)恢復(fù)原始深度編碼:因步驟(1)中進(jìn)行了深度反演,因此在完成步驟(7)后通過式(2)恢復(fù)原始深度編碼。其中Doutput為最終的稠密深度圖,Dinverted為完成步驟(1)~步驟(7)后的深度圖。即
Doutput=100.0-Dinverted
(2)
完成上述步驟可在消除噪聲的同時將稀疏雷達(dá)點云補(bǔ)全成稠密深度圖。步驟(5)將每列頂端像素值向上延伸雖不合理,但自動駕駛系統(tǒng)關(guān)注的車輛、行人都沒超出激光雷達(dá)攝像機(jī)掃描高度,因此不受影響。此外,IP-Basic算法效果顯著且處理速度快,本文采用該算法即可解決雷達(dá)點云存在噪聲和稀疏性的問題。
圖1 膨脹操作和閉運(yùn)算操作的內(nèi)核形狀
深度圖像將三維點云表示為二維深度圖,導(dǎo)致點云的幾何信息大部分被丟失。將深度圖轉(zhuǎn)化為點云,恢復(fù)場景完整的幾何信息十分必要。另外,自動駕駛系統(tǒng)場景的點云數(shù)以萬計,直接對場景點云進(jìn)行3D搜索的計算復(fù)雜度過高。因此,采用降維原理,通過Mask R-CNN算法對RGB圖進(jìn)行實例分割,既可縮小網(wǎng)絡(luò)的搜索空間從而降低計算復(fù)雜度,亦可避免目標(biāo)檢測網(wǎng)絡(luò)將同類且距離較近的物體預(yù)測為一個物體的情況。
本文使用Kitti數(shù)據(jù)集對將Mask R-CNN網(wǎng)絡(luò)進(jìn)行訓(xùn)練,使實例分割模型更適用于自動駕駛場景,而后使用該模型對 RGB圖做實例分割,并將分割實例對應(yīng)到深度圖繼而通過式(3)轉(zhuǎn)換為點云,過程如圖2。式(3)如下
圖2 實例分割后提取目標(biāo)點云
xw=Ddepth·(u-u0)·dx/f,
yw=Ddepth·(v-v0)·dy/f,
zw=Ddepth
(3)
式中 (u0,v0)為圖像坐標(biāo)系下任意像素點的行列坐標(biāo)值,(u0,v0)為圖像坐標(biāo)系中心點坐標(biāo),(xw,yw,zw)為世界坐標(biāo)系下三維坐標(biāo)點,Ddepth為深度圖的深度值,相機(jī)坐標(biāo)系與世界坐標(biāo)系下同一點深度相等,即zw=Ddepth。其中,dx和dy為每一個像素在u軸和v軸方向上的物理尺寸,f為相機(jī)焦距。
在現(xiàn)實世界中,遮擋永遠(yuǎn)存在。物體被遮擋部分的顏色與深度信息缺失,導(dǎo)致遮擋過多的物體信息量過少,作為訓(xùn)練數(shù)據(jù)將對三維目標(biāo)檢測網(wǎng)絡(luò)的訓(xùn)練產(chǎn)生干擾。其次,過遠(yuǎn)處的物體,因設(shè)備分辨率無法滿足要求,作為訓(xùn)練數(shù)據(jù)也會影響網(wǎng)絡(luò)模型的性能。對從RGB圖分割出來的實例進(jìn)行條件限制,對于被遮擋過多的實例與過遠(yuǎn)處的實例通過式(4)排除
hstart-hend>nhthreshold,Ddepth (4) 式中 (hstart,hend)為實例像素點的起始行和終止行,nhthreshold為實例像素點行數(shù)的閾值,Ddepth為實例的深度值,Dthreshold為實例的深度閾值。 本文的三維目標(biāo)檢測網(wǎng)絡(luò)架構(gòu)如圖3。以RGB和雷達(dá)點云作為網(wǎng)絡(luò)輸入,將稀疏的雷達(dá)點云補(bǔ)全成稠密深度圖,將Mask R-CNN算法在RGB圖上提取得到的分割實例,對應(yīng)到稠密深度圖后轉(zhuǎn)化為點云輸入到三維目標(biāo)檢測網(wǎng)絡(luò)中進(jìn)行特征學(xué)習(xí)。 圖3 本文三維目標(biāo)檢測算法流程 三維目標(biāo)檢測網(wǎng)絡(luò)的目的是得到物體的類別和三維框的位置、尺寸和方向角,該三維目標(biāo)檢測網(wǎng)絡(luò)的損失函數(shù)定義如下 Lloss=Lseg+λ(Lc1-reg+Lc2-reg+Lh-cls+Lh-reg+Ls-cls+Ls-reg+γLcorner) (5) 式中Lseg為實例分割的損失值,Lc1-reg為用于網(wǎng)絡(luò)將目標(biāo)從相機(jī)坐標(biāo)系轉(zhuǎn)化到物體坐標(biāo)系的損失函數(shù),Lc2-reg為損失函數(shù)用于三維檢測框的中心點回歸。Lh-cls和Lh-reg為方向角預(yù)測的損失函數(shù),而Ls-cls和Ls-reg為三維框尺寸的損失函數(shù)。softmax用于所有分類任務(wù),smooth-l1(huber)損失用于所有回歸任務(wù)。 實驗基于Ubuntu16.04,64位操作系統(tǒng),訓(xùn)練平臺為Tensorflow,硬件配置為Nvidia 1080Ti。數(shù)據(jù)來源于Kitti數(shù)據(jù)集里的三維目標(biāo)檢測數(shù)據(jù)集。 實驗中,目標(biāo)點云的輸入大小為1 024,若物體點云數(shù)目小于1 024個則進(jìn)行雙線性插值,若大于1 024個則進(jìn)行下采樣從而滿足網(wǎng)絡(luò)輸入。實驗中λ值與β值的設(shè)置是經(jīng)過多次試驗得到的經(jīng)驗值,其中λ設(shè)為1,γ設(shè)置為10,梯度下降的參數(shù)β設(shè)為0.9,權(quán)值衰減系數(shù)為0.000 5,學(xué)習(xí)率為0.001。 本文對Kitti數(shù)據(jù)集中的三個類別進(jìn)行檢測,并通過三維目標(biāo)檢測通用的三維體積交集(Intersection over Union, IOU)[10]方法對檢測性能進(jìn)行評估。目前僅對車輛進(jìn)行三維目標(biāo)檢測的文獻(xiàn)居多,為和盡可能多的三維目標(biāo)檢測方法作對比,本文就車輛類別在Kitti驗證集上與Mono3D[11],3DOP[12],VeloFCN[13],MV3D[14]及F-PointNet等方法作對比,平均檢測精度(mean average precision,MAP)的對比結(jié)果見表1。 表1 Kitti驗證集上三維目標(biāo)檢測精度對比 由表1可知,本文方法較Mono3D,3DOP,VeloFCN及MV3D等方法有明顯的優(yōu)勢,在Kitti復(fù)雜度較低的場景(Easy)下,平均檢測精度較MV3D方法提高了14.43 %,較F-PointNet方法提高了2.36 %,在其它兩個復(fù)雜度較高的場景(Moderate,Hard)下,平均檢測精度仍舊高于F-PointNet方法2.15 %,1.89 %。 在Kitti測試集上的平均檢測精度比較結(jié)果如表2,同時本文就目前較為先進(jìn)的F-PointNet方法進(jìn)行了測試結(jié)果圖的對比,如圖4。由表2可知,在Kitti測試集上,對比DoBEM[15]方法、MV3D方法本文方法均有明顯優(yōu)勢。對比MV3D,本文方法在Kitti場景復(fù)雜度最高的數(shù)據(jù)集(Hard)下,就車輛類別仍舊提高了8.99 %。對比F-PointNet,本文方法在Kitti場景復(fù)雜度較低的數(shù)據(jù)集(Easy)下,對車輛、行人、騎自行車的人三類目標(biāo)分別提升了2.17 %,1.75 %,1.91 %的平均檢測精度,在Kitti場景復(fù)雜度最高的數(shù)據(jù)集(Hard)下,對車輛、行人、騎自行車的人三類目標(biāo)亦分別提升了1.92 %,1.66 %,1.73 %的平均檢測精度。實驗結(jié)果表明,本文方法對Kitti數(shù)據(jù)集中三類目標(biāo)的平均檢測精度均有明顯提高。 表2 Kitti測試集上結(jié)果對比 圖4 測試結(jié)果對比 隨著自動駕駛與智能機(jī)器人越來越受重視,三維目標(biāo)檢測技術(shù)的關(guān)注度也得到了提升,本文針對點云的三維目標(biāo)檢測,分析了基于點云方法存在的問題,充分利用雷達(dá)點云的三維幾何信息,并融合二維特征和三維特征,既解決了點云稀疏導(dǎo)致的深度信息不全問題和點云數(shù)目過大導(dǎo)致的計算復(fù)雜度過大問題,又避免了三維目標(biāo)檢測網(wǎng)絡(luò)將同類且距離較近的物體預(yù)測為一個物體導(dǎo)致檢測結(jié)果混淆問題。實驗結(jié)果表明:該方法在具有挑戰(zhàn)性的公開數(shù)據(jù)集Kitti上取得了較好的檢測精度。本文算法應(yīng)用于自動駕駛領(lǐng)域,若直接用于實時的自動駕駛場景,在計算速度上有待后續(xù)優(yōu)化。1.4 輸入物體點云到三維目標(biāo)檢測網(wǎng)絡(luò)進(jìn)行特征學(xué)習(xí)
2 實驗與分析
2.1 實驗環(huán)境與參數(shù)設(shè)置
2.2 結(jié)果與分析
3 結(jié) 論