李豪杰,楊海清
(浙江工業(yè)大學(xué) 信息工程學(xué)院,杭州 310012)
三維激光掃描技術(shù)被廣泛應(yīng)用于自動駕駛[1]、建筑施工[2]以及遙感測繪等領(lǐng)域[3],其通過三維激光掃描儀或者三維激光雷達(dá)等掃描設(shè)備來獲取被測物體空間和表面紋理等信息,具有分辨率高,采集速度快以及非接觸式等優(yōu)點(diǎn)。三維掃描設(shè)備得到的是被測物體的三維點(diǎn)云信息,其抗干擾能力強(qiáng),不受外界因素影響,從而更有利于目標(biāo)識別與姿態(tài)估計[4]。然而,傳統(tǒng)基于三維點(diǎn)云數(shù)據(jù)的目標(biāo)識別方法有著計算數(shù)據(jù)量大以及速度慢等問題[5],因此,對基于激光點(diǎn)云數(shù)據(jù)的三維目標(biāo)識別方法進(jìn)行研究具有十分重要的現(xiàn)實(shí)意義。
近年來,學(xué)術(shù)界對基于點(diǎn)云數(shù)據(jù)的三維目標(biāo)識別方法進(jìn)行了很多相關(guān)研究。在以深度神經(jīng)網(wǎng)絡(luò)為代表的深度學(xué)習(xí)還沒有興起之前,計算機(jī)視覺領(lǐng)域主要采用傳統(tǒng)的機(jī)器學(xué)習(xí)方法對點(diǎn)云目標(biāo)進(jìn)行分類和檢測,如支持向量機(jī)(SVM,support vector machine)[6]和決策樹(Decision Tree)[7]等。文獻(xiàn)[8]采用基于點(diǎn)云梯度的局部最優(yōu)分割方法對激光雷達(dá)掃描的點(diǎn)云目標(biāo)進(jìn)行梯度分割以提取出障礙物輪廓,并根據(jù)障礙物三維點(diǎn)云數(shù)據(jù)特征,利用基于核的支持向量機(jī)有效完成了障礙物分類。然而,傳統(tǒng)機(jī)器學(xué)習(xí)算法的魯棒性能和泛化能力較差,無法滿足現(xiàn)實(shí)生活中復(fù)雜場景下應(yīng)用的需要。因此,研究人員將研究重點(diǎn)轉(zhuǎn)向了對點(diǎn)云數(shù)據(jù)特性的挖據(jù)上,引入降維思想將三維點(diǎn)云轉(zhuǎn)化為深度圖,借助圖像中的關(guān)鍵點(diǎn)檢測方法提取點(diǎn)云特征點(diǎn)。文獻(xiàn)[9]利用三維激光雷達(dá)傳感器的隱式拓?fù)鋵⑷S點(diǎn)云目標(biāo)映射到二維圖像上,并提出了一種基于深度直方圖的移動對象半自動分割方法和引入變分圖像修復(fù)方法來重建被物體遮擋的區(qū)域,實(shí)際三維激光雷達(dá)街道場景驗(yàn)證了該算法的有效性。
隨著人工智能時代的到來,深度學(xué)習(xí)算法在目標(biāo)識別任務(wù)中取得了廣泛的應(yīng)用和突破性的進(jìn)展[10]。典型的卷積結(jié)構(gòu)需要高度規(guī)則的輸入數(shù)據(jù)格式,所以無序散亂點(diǎn)云數(shù)據(jù)首先需要轉(zhuǎn)換為常規(guī)的三維體素網(wǎng)格或圖像集合[11],這會導(dǎo)致數(shù)據(jù)不必要的損失,且?guī)眍~外的工作量。針對上述問題,文獻(xiàn)[12]提出了一種三維點(diǎn)云目標(biāo)分類和語義分割神經(jīng)網(wǎng)絡(luò)-Pointnet,該模型保證了輸入點(diǎn)云的排列不變性,學(xué)習(xí)每個輸入點(diǎn)對應(yīng)的空間編碼并通過對稱函數(shù)得到全局特征,Pointnet為從目標(biāo)分類到場景語義分析應(yīng)用程序提供了統(tǒng)一的體系結(jié)構(gòu),測試效果證明該模型的有效性和優(yōu)越性。
針對Pointnet網(wǎng)絡(luò)無法獲得空間點(diǎn)局部結(jié)構(gòu)信息的問題,文中將方向卷積編碼方式應(yīng)用到深度卷積網(wǎng)絡(luò)中,通過對由FPS算法選取的局部區(qū)域中心點(diǎn)進(jìn)行3次方向編碼卷積來捕獲局部形狀特征。同時,針對點(diǎn)云數(shù)據(jù)旋轉(zhuǎn)性會造成目標(biāo)識別結(jié)果不穩(wěn)定的問題,引入空間變換網(wǎng)絡(luò)(STN,spatial transform network)來使點(diǎn)云目標(biāo)識別模型具有空間不變性,從而進(jìn)一步提高目標(biāo)識別精確度和魯棒性。在ModelNet40、ShapeNetCore數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明了文中提出的點(diǎn)云目標(biāo)識別方法的有效性和優(yōu)越性。
在獲取點(diǎn)云數(shù)據(jù)時,三維掃描設(shè)備的旋轉(zhuǎn)會導(dǎo)致不同時刻采集的同一點(diǎn)云目標(biāo)的空間坐標(biāo)信息(x,y,z)發(fā)生旋轉(zhuǎn)變化,如圖1所示。
圖1 點(diǎn)云旋轉(zhuǎn)性
雖然圖1中的(a)和(b)是相同點(diǎn)云,但坐標(biāo)值因?yàn)榻?jīng)過旋轉(zhuǎn)變化而發(fā)生改變,對應(yīng)的卷積操作結(jié)果分別入式(1)和式(2)所示:
Ga=Conv(K,[e1,e2,e3,e4,e5])
(1)
Gb=Conv(K,[f5,f4,f3,f2,f1])
(2)
其中:G為卷積結(jié)果,e1~e5和f1~f5為輸入點(diǎn)云的各個點(diǎn)的坐標(biāo)信息,Conv(·)為卷積操作。
根據(jù)式(1)~(2)的計算結(jié)果,Ga≠Gb。雖然(a)和(b)是相同的點(diǎn)云,但是因?yàn)榻?jīng)過旋轉(zhuǎn),坐標(biāo)發(fā)生改變,卷積結(jié)果也不同,所以卷積操作對點(diǎn)云的旋轉(zhuǎn)變化不具有魯棒性。文獻(xiàn)[12]采用T-net姿態(tài)對齊網(wǎng)絡(luò)對點(diǎn)云的旋轉(zhuǎn)特征進(jìn)行學(xué)習(xí),但是受限于訓(xùn)練數(shù)據(jù)規(guī)模,以及點(diǎn)云旋轉(zhuǎn)特征難以捕捉等問題,模型效果還有待提高。因此,文中提出一種空間變換網(wǎng)絡(luò)來更好地解決點(diǎn)云旋轉(zhuǎn)性問題。
三維點(diǎn)云通常呈無規(guī)則隨機(jī)分布,且點(diǎn)與點(diǎn)之間沒有順序之分,具有排列不變性,每一組點(diǎn)云數(shù)據(jù)可以有N!(N為點(diǎn)數(shù))種排列方式,即相同的點(diǎn)云可以有N!種矩陣表示,如圖2所示。
圖2 點(diǎn)云排列不變性
圖2中, (a)和(b)是相同的點(diǎn)云數(shù)據(jù),但矩陣表示不同。假設(shè)分別對(a)、(b)中的點(diǎn)云數(shù)據(jù)進(jìn)行卷積操作,如式(3)~(4)所示:
Ga=Conv(K,[f1,f2,f3,f4,f5])
(3)
Gb=Conv(K,[f5,f4,f3,f2,f1])
(4)
其中:G為卷積結(jié)果,f1~f5為輸入點(diǎn)云的各個點(diǎn)的坐標(biāo)信息,Conv(·)為卷積操作。
根據(jù)式(3)~(4)的計算結(jié)果,Ga≠Gb。雖然(a)和(b)是相同的點(diǎn)云數(shù)據(jù),但是因?yàn)榫仃嚤硎静煌?,卷積結(jié)果也不相等,所以卷積操作無法保證點(diǎn)云的排列不變性。因此,將點(diǎn)云數(shù)據(jù)直接輸入到傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的進(jìn)行學(xué)習(xí)的方法存在困難。為了解決上述問題,文中采用max-pooling池化操作解決點(diǎn)云數(shù)據(jù)排列不變性問題。
為了使三維點(diǎn)云目標(biāo)識別模型具有空間不變性,即對于發(fā)生旋轉(zhuǎn)變換的點(diǎn)云輸入,模型仍能夠?qū)ζ湔_進(jìn)行分類,本文采用空間變換網(wǎng)絡(luò)(STN,spatial transform networks)來自適應(yīng)三維點(diǎn)云的旋轉(zhuǎn)變換,將數(shù)據(jù)進(jìn)行空間變換和對齊[13]。STN由本地化網(wǎng)絡(luò)(Localisation network)、網(wǎng)格生成器(grid generator)及采樣器(sampler)3個部分構(gòu)成,如圖3所示。
圖3 STN 結(jié)構(gòu)
本地化網(wǎng)絡(luò)以feature map或者是點(diǎn)云數(shù)據(jù)為輸入,輸出為空間變換所需的參數(shù)θ,變換矩陣可以為任意形式。網(wǎng)格生成器通過θ和定義的空間變換方式得出輸出V與輸入U的映射T(θ),即實(shí)現(xiàn)點(diǎn)云坐標(biāo)的對應(yīng)關(guān)系,如式(5)所示:
(5)
輸出V的所有坐標(biāo)點(diǎn)是先定義好的,根據(jù)Aθ和V中每個坐標(biāo)就可以計算出輸入U的坐標(biāo),為了使求得的U中的坐標(biāo)為整數(shù),利用雙線性差值法進(jìn)行取值,采樣器根據(jù)該坐標(biāo)點(diǎn)獲取到U中的特征,并將其填充到輸出V中,如式(6)所示:
(6)
STN可用于輸入層,也可插入到卷積層或者其它層的后面,不需要改變原 CNN模型的內(nèi)部結(jié)構(gòu)[14]。
將STN應(yīng)用到傳統(tǒng)的深度卷積神經(jīng)網(wǎng)絡(luò)中,以避免三維點(diǎn)云旋轉(zhuǎn)性造成的網(wǎng)絡(luò)識別結(jié)果不穩(wěn)定,并采用max-pooling差異化對稱函數(shù)來解決因點(diǎn)云數(shù)據(jù)排列不變性導(dǎo)致的點(diǎn)云數(shù)據(jù)無法
直接輸入到傳統(tǒng)CNN網(wǎng)絡(luò)的問題,搭建的深度CNN點(diǎn)云特征提取網(wǎng)絡(luò)入圖4所示。
圖4 點(diǎn)云特征提取網(wǎng)絡(luò)結(jié)構(gòu)
網(wǎng)絡(luò)中重復(fù)的mlp是通過共享權(quán)重的卷積實(shí)現(xiàn)的,第一層是1×3卷積核(對應(yīng)三維坐標(biāo)輸入),之后都是1×1大小的卷積核。經(jīng)過兩個空間變換網(wǎng)絡(luò)和兩個mlp之后,將原始輸入的三維特征映射到高維空間,通過max-pooling層得到1×1 024的全局特征。最后經(jīng)過全連接層得到k個score,連接Softmax輸出層得到分類結(jié)果。
針對圖4中點(diǎn)云特征提取網(wǎng)絡(luò)無法提取點(diǎn)云局部拓?fù)涮卣鞯膯栴},引入了方向卷積編碼方法,如圖5所示。
圖5 點(diǎn)云局部特征提取網(wǎng)絡(luò)
首先,采用FPS采樣方法[15]選取局部區(qū)域中心點(diǎn),具體過程為:先隨機(jī)選擇一個點(diǎn),再以離此點(diǎn)最遠(yuǎn)的點(diǎn)為起點(diǎn)繼續(xù)迭代,直至獲得需要的點(diǎn)數(shù),該方法相比隨機(jī)采樣能夠更完整得通過區(qū)域中心點(diǎn)采樣到全局點(diǎn)云。
然后,對中心點(diǎn)分別沿X,Y和Z軸3個方向進(jìn)行3級編碼卷積來捕獲局部形狀特征,將中心點(diǎn)的特征放入張量M∈R2×2×2×d,三階段定向卷積如式(7)~(9)所示:
M1=g[Convx(Ax,M) ]∈R2×2×d
(7)
M2=g[Convy(Ay,M1) ]∈R2×d
(8)
M3=g[Convz(Az,M2) ]∈R1×d
(9)
Ax,Ay,Az是要優(yōu)化的卷積權(quán)重,Convx,Convy和Convz是沿X,Y和Z軸方向的卷積,g是激活函數(shù)。經(jīng)過方向編碼卷積后,每個點(diǎn)被表示為能夠以方向編碼方式表示中心點(diǎn)周圍的形狀圖案的d維度的矢量。
Softmax回歸是邏輯函數(shù)在多類分類問題上的推廣[16],其可以將一個含任意實(shí)數(shù)的K維向量映射到到另一個K維實(shí)向量中,并保證向量中每個元素值都在 (0,1) 之間且所有元素的和為1。文中采用Softmax回歸函數(shù)對上一節(jié)深度卷積網(wǎng)絡(luò)提取的全局特征進(jìn)行處理,得到每一個類別的概率值,如圖6所示。
圖6 點(diǎn)云目標(biāo)分類結(jié)構(gòu)
對于給定樣本,Softmax回歸預(yù)測的是屬于某一類別的概率如式(10)所示:
(10)
其中:x為樣本,c是類別,wc是第c類的權(quán)重向量。
實(shí)驗(yàn)的硬件環(huán)境為Intel Xeon W-2123處理器,Tesla v100 32G顯存顯卡。
實(shí)驗(yàn)使用ModelNet40[17]和ShapeNetCore[18]兩個形狀分類基準(zhǔn)數(shù)據(jù)集來驗(yàn)證模型的性能。ModelNet40數(shù)據(jù)集是由40類人造目標(biāo)產(chǎn)生的12 311個數(shù)據(jù)樣本組成,該數(shù)據(jù)集將其中9 843個數(shù)據(jù)模型作為訓(xùn)練集,剩余2 468個數(shù)據(jù)作為測試集。而ShapeNetCore數(shù)據(jù)集更為豐富,有高達(dá)51 300數(shù)據(jù)樣本總數(shù),分為55個類別,數(shù)據(jù)集按70%/10%/20%的比例劃分為訓(xùn)練機(jī)、驗(yàn)證集和測試集。
網(wǎng)絡(luò)模型疊加不同區(qū)域的局部特征獲得的全局特征可進(jìn)一步用于目標(biāo)識別,如圖5網(wǎng)絡(luò)結(jié)構(gòu)所示。 在網(wǎng)格表面區(qū)域均勻的選取1 000個點(diǎn),將每個點(diǎn)的空間坐標(biāo)歸一化后輸入到網(wǎng)絡(luò)模型中,同時為了提高模型的泛化能力,采用數(shù)據(jù)增強(qiáng)[19]的方法,對點(diǎn)云數(shù)據(jù)繞Z軸隨機(jī)旋轉(zhuǎn)一定角度,并在每個點(diǎn)的空間坐標(biāo)加上均值為0標(biāo)準(zhǔn)差為0.02的高斯噪聲。
在相同數(shù)據(jù)集上使用基于體素化、多視角二維圖像的傳統(tǒng)點(diǎn)云數(shù)據(jù)處理方法,以及PointNet基準(zhǔn)點(diǎn)云處理卷積網(wǎng)絡(luò)來和文中提出的直接輸入數(shù)據(jù)的三維點(diǎn)云目標(biāo)識別模型作對比,得到的結(jié)果如表1和表2所示。
表1 不同模型在ModelNet40上的目標(biāo)分類效果比較
表2 不同模型在ShapeNetCore上的目標(biāo)分類效果比較
從表1~2可以看出,文中提出的點(diǎn)云識別模型相比于基于體素的方法與基準(zhǔn)點(diǎn)云模型取得了最佳準(zhǔn)確率,文中所提點(diǎn)云卷積網(wǎng)絡(luò)模型直接采用點(diǎn)云數(shù)據(jù)輸入,避免了復(fù)雜的手工提取特征過程。相比于點(diǎn)云基準(zhǔn)網(wǎng)絡(luò)PointNet,文中所提模型加入了方向卷積編碼模塊具備利用點(diǎn)云局部特征的能力,在兩個數(shù)據(jù)集上準(zhǔn)確率分別提升了1.2%、1.4%。
三維點(diǎn)云目標(biāo)經(jīng)過剛性旋轉(zhuǎn)后的坐標(biāo)信息將發(fā)生改變,為了克服點(diǎn)云目標(biāo)旋轉(zhuǎn)所造成的識別結(jié)果不穩(wěn)定,在已有的深度卷積網(wǎng)絡(luò)結(jié)構(gòu)中引入STN方法來自適應(yīng)的將數(shù)據(jù)進(jìn)行空間變換和對齊,和其它對無序點(diǎn)云輸入數(shù)據(jù)處理方法在ModelNet40數(shù)據(jù)集上進(jìn)行對比,結(jié)果如表3所示。
表3 STN網(wǎng)絡(luò)對模型準(zhǔn)確率的影響
從表3中可以看出,在輸入層之后加入STN之后,模型的識別率提高了1.3%。此外,對STN加入正則化約束以后,識別率進(jìn)一步提高了0.4%。本次實(shí)驗(yàn)輸入的點(diǎn)云數(shù)據(jù)僅包含(x,y,z)三維坐標(biāo)信息,在處理更高維的點(diǎn)云輸入數(shù)據(jù)(如包含RGB顏色信息)時,采用正則化約束的識別效果將有更大的提升。
由于實(shí)際采集的點(diǎn)云數(shù)據(jù)的點(diǎn)云位置信息易受到腐蝕,部分點(diǎn)云數(shù)據(jù)會產(chǎn)生丟失,從而造成點(diǎn)云密度分布不均,因此需要進(jìn)一步驗(yàn)證文中所提模型對采樣數(shù)據(jù)的魯棒性。在ModelNet40數(shù)據(jù)集上測試不同實(shí)驗(yàn)條件下的分類精確度,如圖7所示。實(shí)驗(yàn)條件為隨機(jī)刪除一定比例的采樣點(diǎn)數(shù)。
圖7 不同數(shù)據(jù)缺失比例下的識別率變化
從圖7可以看出,在60%采樣點(diǎn)丟失的情況下,文中所提模型分類準(zhǔn)確率僅下降了7.4%,實(shí)驗(yàn)結(jié)果表明了點(diǎn)云方向編碼卷積網(wǎng)絡(luò)模型在處理輸入數(shù)據(jù)缺失和不均勻時有較強(qiáng)的魯棒性。
深度卷積點(diǎn)云目標(biāo)識別網(wǎng)絡(luò)實(shí)質(zhì)上將輸入的低維特征(N*3)映射到高維特征(N*1 024),再采取對稱函數(shù)(max-pooling)來綜合得到全局特征,整個網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。為便于分析,將進(jìn)入對稱函數(shù)前一層的特征進(jìn)行可視化,具體做法是標(biāo)注在每個維度上取最大值的點(diǎn)云數(shù)據(jù)點(diǎn)坐標(biāo),得到這些標(biāo)注的關(guān)鍵點(diǎn)坐標(biāo)與原始點(diǎn)云目標(biāo)如圖8所示。
圖8 輸入點(diǎn)云目標(biāo)(左)與網(wǎng)絡(luò)模型提取的關(guān)鍵點(diǎn)(右)對比圖
所標(biāo)注的關(guān)鍵點(diǎn)決定了最后網(wǎng)絡(luò)輸出的全局特征,從圖8中可以看出它們描繪了一個點(diǎn)云目標(biāo)的大致骨架結(jié)構(gòu),這樣意味著即使一些非關(guān)鍵點(diǎn)數(shù)據(jù)的缺失也不會影響到網(wǎng)絡(luò)的最終判斷,也證明文中提出的卷積點(diǎn)云目標(biāo)識別網(wǎng)絡(luò)的魯棒性。
鑒于已有的深度卷積點(diǎn)云目標(biāo)識別模型無法有效提取點(diǎn)云局部拓?fù)涮卣?,文中通過FPS算法選取局部區(qū)域中心點(diǎn),并對中心點(diǎn)進(jìn)行3次方向編碼卷積來捕獲點(diǎn)云目標(biāo)局部形狀特征。同時,采用空間變換網(wǎng)絡(luò)來解決因點(diǎn)云數(shù)據(jù)旋轉(zhuǎn)性會造成導(dǎo)致的目標(biāo)識別結(jié)果不穩(wěn)定問題,進(jìn)一步提高了目標(biāo)識別精確度和魯棒性。文中提出的點(diǎn)云目標(biāo)識別方法有效提高了識別精度,相較于PointNet在ModelNet40和ShapeNetCore兩個數(shù)據(jù)集分別提高1.2%和1.4%。