李夢(mèng)吉,韓 燮
(中北大學(xué)大數(shù)據(jù)學(xué)院,太原 030051)
隨著激光掃描技術(shù)的快速發(fā)展,在遙感測(cè)繪、虛擬現(xiàn)實(shí)、自動(dòng)駕駛、機(jī)器人等領(lǐng)域采集點(diǎn)云數(shù)據(jù)變得方便快捷。但如何有效地處理三維點(diǎn)云數(shù)據(jù)就顯得至關(guān)重要。
近年來(lái),利用深度學(xué)習(xí)處理三維數(shù)據(jù)(體素、點(diǎn)云、網(wǎng)格模型等)的相關(guān)研究發(fā)展迅速。由于早期深度學(xué)習(xí)在二維圖像分類和分割領(lǐng)域上的巨大成功,對(duì)于三維數(shù)據(jù)處理的方法之一是從多視角獲得二維圖像序列,對(duì)圖像序列采用成熟的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行三維模型分類。如MVCNN[1]將二維圖像的深度學(xué)習(xí)算法應(yīng)用于三維模型多視角下的二維圖像上,獲得了三維模型的分類結(jié)果。MVCNN通過(guò)融合不同視角下的2D特征,得到一種聚合的3D描述子進(jìn)行模型分類。其缺點(diǎn)是處理方式煩瑣,三維模型變換到二維圖片損失了部分幾何信息,且無(wú)法解決物體自遮擋問(wèn)題,難以擴(kuò)展到自動(dòng)駕駛?cè)蝿?wù)或其他3D分類、分割等任務(wù)中?;隗w素的分類模型,融合了體素和多視角方法的VoxNet[2]、直接處理體素化模型的3D-ShapeNets[3],通過(guò)對(duì)三維模型體素化之后,再利用3D CNN訓(xùn)練。ShapeNets與VoxNet存在的問(wèn)題,一方面是維度爆炸的問(wèn)題,在體素化后模型由30×30×30的小體素塊組成,以較低的分辨率來(lái)表示三維模型,與原始輸入的三維模型的信息相比,帶來(lái)較大的信息損失,若以高分辨率的小體素塊表示又引入較高的計(jì)算復(fù)雜度。另一方面,現(xiàn)有深度學(xué)習(xí)框架對(duì)于CNN的設(shè)計(jì)較適用于結(jié)構(gòu)化的規(guī)整數(shù)據(jù)(例如圖像數(shù)據(jù)),三維模型的數(shù)據(jù)是一種非歐氏空間的表示,當(dāng)使用3D 卷積核處理邊緣部分時(shí)的填充(padding)操作會(huì)產(chǎn)生較大的誤差?;邳c(diǎn)云的分類模型,直接處理點(diǎn)云數(shù)據(jù)類型的三維模型PointNet[4]、PointNet++[5]。PointNet指出點(diǎn)云數(shù)據(jù)具有置換不變性,同一個(gè)點(diǎn)集通過(guò)變換依然表示的是同一個(gè)點(diǎn)集。所以網(wǎng)絡(luò)本身也應(yīng)該具有置換不變性,因此設(shè)計(jì)對(duì)稱函數(shù)來(lái)解決點(diǎn)云的無(wú)序性問(wèn)題,進(jìn)而可以直接對(duì)點(diǎn)集的特征進(jìn)行訓(xùn)練。PointNet的問(wèn)題在于模型本身直接提取的是全局特征而沒(méi)有考慮到局部特征的提取。與圖像中的卷積神經(jīng)網(wǎng)絡(luò)(CNN)可以通過(guò)逐層的卷積學(xué)習(xí)到圖像的局部特征不同。于是Charles等[5]提出了PointNet++,在不同尺度提取局部特征,融合不同層次的局部特征。PointNet++的局限在于在最遠(yuǎn)點(diǎn)采樣后通過(guò)Pointnet聚合點(diǎn)集的特征的操作十分耗時(shí)。Kd-Network[6]在結(jié)構(gòu)化輸入數(shù)據(jù)時(shí)提供了不同的思路。利用Kd-Tree讀入點(diǎn)云,使點(diǎn)云結(jié)構(gòu)化后再通過(guò)網(wǎng)絡(luò)學(xué)習(xí)每個(gè)節(jié)點(diǎn)的權(quán)重。Kd-Network的問(wèn)題在于對(duì)數(shù)據(jù)輸入敏感,Kd-Tree構(gòu)造的過(guò)程中,樹的深度和劃分的點(diǎn)云塊大小都會(huì)影響模型的精確度。
上述部分網(wǎng)絡(luò)對(duì)于三維模型局部信息的特征提取過(guò)于復(fù)雜,或者沒(méi)有考慮局部信息的提取。而圖卷網(wǎng)絡(luò)(graph convolution network, GCN)[10]擅長(zhǎng)對(duì)于非歐數(shù)據(jù)鄰近頂點(diǎn)信息的處理。針對(duì)圖數(shù)據(jù)的處理查閱文獻(xiàn),查閱到相關(guān)的非歐空間下圖數(shù)據(jù)處理的工作[7-9]。結(jié)合上述文獻(xiàn),應(yīng)用圖卷積網(wǎng)絡(luò)于三維點(diǎn)云數(shù)據(jù),提出一個(gè)結(jié)合CAD數(shù)據(jù)特點(diǎn),利用圖卷積網(wǎng)絡(luò)改進(jìn)局部信息特征提取的點(diǎn)云分類模型。
本文模型由兩部分組成:一是建圖模塊,通過(guò)KNN(K-nearest neighbours)建立圖卷積計(jì)算所需的鄰接矩陣;二是分類網(wǎng)絡(luò)的模型設(shè)計(jì),如圖1所示。
圖1 分類網(wǎng)絡(luò)結(jié)構(gòu)圖
本文輸入的原始點(diǎn)云為X∈RN×3,點(diǎn)的三維坐標(biāo)信息為x、y、z坐標(biāo)。N是原始點(diǎn)云包含的點(diǎn)的個(gè)數(shù)。對(duì)于輸入的原始點(diǎn)云,需要做一次下采樣,以減少輸入的運(yùn)算量并將采樣后的模型歸一化到以原點(diǎn)為中心的單位球內(nèi)。
圖2 鄰接頂點(diǎn)示意圖
其次,需要計(jì)算出采樣后的點(diǎn)的鄰接矩陣。關(guān)于這個(gè)鄰接矩陣,本文有兩種計(jì)算方式。第一種方式,從off格式的CAD模型中三角面片的面片列表建立無(wú)向圖的鄰接矩陣信息,面片列表包含組成三角面片的頂點(diǎn)集,通過(guò)面片列表中的公共頂點(diǎn)來(lái)建立鄰接矩陣,但對(duì)于一些極端情況或者錯(cuò)誤的三角面片信息,鄰接頂點(diǎn)并不一定是一個(gè)確定的值,如圖2所示,紅色節(jié)點(diǎn)的鄰接頂點(diǎn)有5個(gè),藍(lán)色節(jié)點(diǎn)的鄰接頂點(diǎn)有6個(gè),黃色節(jié)點(diǎn)的鄰接頂點(diǎn)有4個(gè)。所以提出直接對(duì)三角面片存儲(chǔ)的頂點(diǎn)建立鄰接關(guān)系的方法,用鄰接表先存儲(chǔ)邊的關(guān)系,最后建立整個(gè)頂點(diǎn)的矩陣,頂點(diǎn)之間可到達(dá)的權(quán)值置為1,反之置為0。第二種方式,針對(duì)只有點(diǎn)云數(shù)據(jù)的情況,可以通過(guò)KNN搜索近鄰點(diǎn)的方式得到鄰接關(guān)系,如圖3。通過(guò)鄰接關(guān)系就能以中心頂點(diǎn)和鄰近頂點(diǎn)建立邊的關(guān)系。并仍然使用鄰接表存儲(chǔ)邊的關(guān)系,最后建立所有頂點(diǎn)的鄰接矩陣的方式與第一種相同。
圖3 KNN建立鄰接頂點(diǎn)關(guān)系
根據(jù)文獻(xiàn)[10],將譜圖卷積定義為:在傅里葉域中,信號(hào)x∈RN與濾波器gθ=diag(θ),(θ∈RN)的乘積表示如下:
gθx=UgθUTx
(1)
式(1)中,圖的對(duì)稱歸一化拉普拉斯矩陣定義為
(2)
式(2)中:IN是單位矩陣;D為頂點(diǎn)的度矩陣,A是鄰接矩陣;Λ是拉普拉斯矩陣的特征值矩陣;U是拉普拉斯矩陣L的特征向量矩陣。但是特征值矩陣U的計(jì)算復(fù)雜度為O(N2)。這對(duì)于大型圖計(jì)算代價(jià)過(guò)高。通過(guò)利用切比雪夫多項(xiàng)式來(lái)近似表示gθ。Chebyshev polynomial定義為遞歸形式:
T0(x)=1,T1(x)=x,…,Tk(x)=2xTk-1(x)-
Tk-2(x)
(3)
可得:
(4)
根據(jù)式(1)代入式(4)得:
(5)
當(dāng)k=1時(shí),展開(kāi)式(5),得:
(6)
(7)
通過(guò)再歸一化:
(8)
(9)
式(9)中:Θ∈RC×F為濾波器參數(shù)矩陣。X∈RN×C;C表示輸入通道數(shù);F表示輸出的特征圖;最終的輸出權(quán)重Z∈RN×F。
參考了PointNet系列和文獻(xiàn)[10]的部分結(jié)構(gòu),對(duì)于輸入數(shù)據(jù)是經(jīng)過(guò)處理后的點(diǎn)云數(shù)據(jù)。然后經(jīng)過(guò)第一層GCN層,聚合一度鄰接頂點(diǎn)的信息。為了更好地?cái)M合非線性特征,在經(jīng)過(guò)GCN層后添加線性整流函數(shù)(rectified linear unit, ReLU)激活函數(shù)。輸出的特征再經(jīng)過(guò)多層感知機(jī)(multilayer perceptron, MLP)共享權(quán)重,以增加網(wǎng)絡(luò)的容量和學(xué)習(xí)到的隱含特征。緊接著再堆疊一層與上一步相同的特征提取層,這樣又經(jīng)過(guò)一層GCN后會(huì)得到二度鄰接頂點(diǎn)的聚合信息,如圖4所示黑色頂點(diǎn)的一度鄰接頂點(diǎn)為藍(lán)色,二度鄰接頂點(diǎn)為紅色。圖5表示點(diǎn)云輸入后,兩層圖卷積計(jì)算方式,第一層聚合一度鄰接頂點(diǎn),第二層聚合二度鄰接頂點(diǎn)。拼接一度頂點(diǎn)與二度頂點(diǎn)的特征后經(jīng)過(guò)最大池化層,得到了融合局部與全局特征的信息,再經(jīng)過(guò)MLP與Softmax層后,輸出最終的多分類概率K。
圖4 黑色頂點(diǎn)的一度、二度頂點(diǎn)示意圖
圖5 兩層圖卷積計(jì)算方法示意圖
實(shí)驗(yàn)訓(xùn)練采用的數(shù)據(jù)集是ModelNet40。其含有標(biāo)定物體類別的40類三維數(shù)據(jù),共計(jì)12 311個(gè)CAD模型,如圖6所示。其中9 843個(gè)模型作為訓(xùn)練集,2 468個(gè)模型作為測(cè)試集。ModelNet40是有面片信息的,所以可以從面片信息來(lái)建圖,確定計(jì)算所需的鄰接矩陣。需要注意的是,既然頂點(diǎn)經(jīng)過(guò)下采樣,那么三角面片也需要下采樣。
圖6 ModelNet40中的部分CAD模型
表1展示了本文方法與文獻(xiàn)中的模型在ModelNet40數(shù)據(jù)集中的各個(gè)衡量指標(biāo)。MVCNN的參數(shù)量取決于預(yù)訓(xùn)練模型的參數(shù)量,單位為兆字節(jié)(MB)。預(yù)訓(xùn)練網(wǎng)絡(luò)選取的不同,模型的參數(shù)量也就不同,故不做統(tǒng)計(jì)。對(duì)于體素化的方法,不統(tǒng)計(jì)點(diǎn)云的輸入信息。除了總體模型的分類精確度外。表1中對(duì)比利用KNN和利用面片信息建立鄰接矩陣的方法,面片信息建圖的方法在本文模型參數(shù)量一致的情況下,精確度要比KNN建圖方法提高1.6%。而Pointnet++模型、KD-NET模型雖然分別比KNN建圖的模型精確度高1%、0.9%,但兩者參數(shù)量要分別多出0.54、6.54 MB。由此可見(jiàn)本文模型是簡(jiǎn)潔有效的。
表1 模型衡量指標(biāo)對(duì)比
表2展示了模型訓(xùn)練中的參數(shù)設(shè)置,優(yōu)化器選擇自適應(yīng)矩估計(jì)(adaptive moment estimation, Adam)。硬件配置如下:CPU為Intel E5-1607V3四核3.1 GHz,顯卡為RTX2070(8 G),內(nèi)存為16 G,操作系統(tǒng)為Ubuntu 16.04,使用PyTorch 1.1.0深度學(xué)習(xí)框架,Open3D庫(kù)用于處理CAD模型的面片信息。實(shí)際實(shí)現(xiàn)中由于ModelNet數(shù)據(jù)集中off文件有錯(cuò)誤的格式信息,故采用文件讀取的方式轉(zhuǎn)化為Numpy數(shù)組后,可利用Open3D庫(kù)從Numpy數(shù)組中讀取。
表2 實(shí)驗(yàn)參數(shù)設(shè)置
注:Batchsize為每批樣本數(shù)量,Epochs為迭代訓(xùn)練集的次數(shù),Lr為學(xué)習(xí)率,Gamma為PyTorch深度學(xué)習(xí)框架中指數(shù)衰減學(xué)習(xí)率控制器的參數(shù)。
基于圖卷積網(wǎng)絡(luò),通過(guò)分析ModelNet40數(shù)據(jù)集的CAD模型特點(diǎn),提出了基本三維數(shù)據(jù)本身的特征處理方法,通過(guò)面片信息建立可供圖卷積網(wǎng)絡(luò)計(jì)算所需的鄰接矩陣,并對(duì)比KNN的建圖方法,通過(guò)面片信息建圖的方法精確度提升明顯?;诿嫫畔⒔▓D的圖卷積網(wǎng)絡(luò)分類模型相對(duì)于文獻(xiàn)中的分類模型,結(jié)合面片信息建圖方法的三維數(shù)據(jù)表示優(yōu)勢(shì)和堆疊圖卷積層在聚合鄰近頂點(diǎn)信息的優(yōu)勢(shì),可得出本文模型在參數(shù)量上更為輕巧、分類精確度高且處理方式簡(jiǎn)潔。
研究工作還有不足之處。對(duì)提到的圖卷積核[10],存儲(chǔ)計(jì)算所需的鄰接矩陣是十分耗費(fèi)存儲(chǔ)空間的。使用的圖卷積核屬于圖神經(jīng)網(wǎng)絡(luò)的經(jīng)典方法,但圖神經(jīng)網(wǎng)絡(luò)的發(fā)展十分迅速,其中很多后續(xù)發(fā)展的思想也值得深入研究,但在處理三維數(shù)據(jù)上依然具有挑戰(zhàn)性。未來(lái)將把重點(diǎn)放在避免全局建立鄰接矩陣計(jì)算的方式,同時(shí)兼顧全局與局部信息的提取。