胡永東,張正文,李 婕
(湖北工業(yè)大學(xué) 電氣與電子工程學(xué)院,湖北 武漢430068)
傳統(tǒng)的點云分類方法是通過人工設(shè)計一系列的特征,然后使用合適的分類器對三維點云直接進行分類[1]。這種分類方法在很多特定場景中取得了成功,但該分類方法只能在特定數(shù)據(jù)集下實現(xiàn)不錯的分類效果,應(yīng)用到新的數(shù)據(jù)集中效果并不是很理想[2]。
近些年,深度學(xué)習(xí)在計算機視覺領(lǐng)域快速發(fā)展。常用的方法是先將三維點云數(shù)據(jù)進行體素化,使其變成規(guī)則的三維網(wǎng)格結(jié)構(gòu)[2],然后使用三維卷積神經(jīng)網(wǎng)絡(luò)對規(guī)則化后的數(shù)據(jù)進行操作。但是隨著點云密度的增長,這種方法所需要的內(nèi)存和計算量將會隨分辨率的提高呈三次方增長。所以該方法只適用于較淺的三維網(wǎng)絡(luò)模型。在2017年,Qi 等提出了PointNet 網(wǎng)絡(luò)[3],通過使用多層感知器(MLP)學(xué)習(xí)每個點的高維特征,同時,將最大池化層作為對稱函數(shù),實現(xiàn)了對無序點云的直接處理,網(wǎng)絡(luò)獲得了不錯的分類效果。但PointNet 無法獲取每個點的鄰域幾何信息,所以在復(fù)雜的點云場景中使用時,表現(xiàn)不佳。之后,Qi 等又提出了PointNet++[3],該網(wǎng)絡(luò)使用歐氏距離差值法對點進行上采樣,并將插值計算得到的語義特征與低層學(xué)習(xí)的語義特征融合,從而獲取到每個點更加豐富的語義特征,但該方法對局部空間內(nèi)每個點進行的依舊是單獨處理,仍有部分結(jié)構(gòu)信息的損失。
近些年,由于圖卷積在二維圖像處理領(lǐng)域獲得了較好的效果。在2018年,Wang 等人提出了一種動態(tài)圖卷積神經(jīng)網(wǎng)絡(luò)DGCNN[2],通過引入邊緣卷積模塊來獲取到點云數(shù)據(jù)的局部特征,獲得較好的分類效果。然而,該方法只能捕獲到有限鄰域內(nèi)的邊緣特征,缺少多尺度特征,最終還是損失了部分局部幾何信息[4]。
針對以上問題,本文在提出一種可以獲取多尺度點云局部特征的深度學(xué)習(xí)網(wǎng)絡(luò)。通過獲取不同范圍內(nèi)等間隔采樣的k個鄰近點,將點云數(shù)據(jù)構(gòu)造成包含頂點和邊信息的圖結(jié)構(gòu)數(shù)據(jù),然后使用圖卷積模塊學(xué)習(xí)其高維度特征。該網(wǎng)絡(luò)的多尺度圖卷積結(jié)構(gòu),既保證了點云的置換不變性,又可以獲取到多個尺度的局部幾何信息和全局特征。本文網(wǎng)絡(luò)通過在ModelNet40[5]數(shù)據(jù)集上進行實驗,結(jié)果顯示,網(wǎng)絡(luò)在點云分類準(zhǔn)確度上有所提高。
由于點云本身存在的無序性、稀疏性,很多網(wǎng)絡(luò)在構(gòu)建大型鄰域圖時,通常會使用KNN 鄰近算法獲取距離最近的k個鄰近點,從而提取到點云中固定大小的單尺度局部特征信息。然而很多點云數(shù)據(jù)中的物體是以多尺度形式呈現(xiàn)的,所以,這種網(wǎng)絡(luò)并不能獲取到足夠的特征,分類性能相對較低。本文提出一種M-KNN 多尺度鄰近算法,通過對不同范圍內(nèi)的鄰近點進行等間隔采樣獲取到k個點,用來表示點云數(shù)據(jù)不同尺度的局部特征信息,而且該方法不會增加網(wǎng)絡(luò)的計算量。
將一個具有n個點的D 維點云表示為:
其中X 表示一個點云集合,Xi表示每一個點。每個點具有D 維特征,當(dāng)D=3 時,表示每個點只包含三維坐標(biāo)信息,即xi=(xi,yi,zi)。以點xi為中心,計算它與每個點的歐式距離,然后進行排序。傳統(tǒng)KNN 鄰近算法是將距離xi最近的k個點提取出來作為其鄰近點,本文為了達到提取多尺度局部特征的目的,提出M-KNN 鄰近算法,即在距離xi點最近的前n/m個點中進行等間隔采樣,獲取到k個鄰近點。m 值的大小表示對點云集合不同程度的劃分,越小的m 值對應(yīng)獲取到的k個鄰近點所表征的鄰域范圍越大。
點云的局部結(jié)構(gòu)可以用一個有向圖表示:
其中,V={1,...,n} 表示圖結(jié)構(gòu)的頂點,E?V×V 表示圖結(jié)構(gòu)的邊。
首先,通過xi及其鄰近點構(gòu)建點云的圖結(jié)構(gòu)G。對于點xi,其k個鄰近點(用xji1,...,xjik表示),與鄰近點之間的定向邊為(i,ji1),...,(i,jik)。定義有向圖的邊緣特征為:
其中,xj-xi代表鄰近點構(gòu)成的局部塊信息。hθ是由可學(xué)習(xí)參數(shù)θ 構(gòu)成的非線性激活函數(shù),這里使用多層感知器(MLP)對中心點xi的局部信息進行提取和學(xué)習(xí)。然后再用一個最大池化層MaxPooling 來聚合特征,用來完成RD×RD→RD′,即輸入具有n個點的D 維點云,通過圖卷積后輸出具有D′維點云特征的n個點。圖卷積模塊(GraphConv)的數(shù)學(xué)表達式如下:
本文中提出的多尺度圖卷積點云分類網(wǎng)絡(luò)結(jié)構(gòu)的框架如圖1 所示。網(wǎng)絡(luò)中所有卷積核參數(shù)設(shè)置為(1×1),k取值為16。網(wǎng)絡(luò)讀取到點云數(shù)據(jù)后,首先使用兩個通道數(shù)都為64 的圖卷積模塊提取點云的局部特征,此時設(shè)置m=n/k=64,即以距離xi最近的k個點作為鄰近點。然后再對提取到的點云數(shù)據(jù)的高維特征進行多尺度特征提取,分別設(shè)置m=64、32、16、8,逐步擴大鄰域范圍,每個尺度的特征提取都包含兩個圖卷積模塊,通道數(shù)分別為64、128。然后使用concat 操作將多個尺度的特征融合,接著再添加一個通道數(shù)為1024 的卷積層。使用MaxPooling獲取到點云集合中最大的1024 維特征值。
最后再引入三層全連接層,通道數(shù)分別為:(512,256,c),其中c 表示數(shù)據(jù)集的類別數(shù),即網(wǎng)絡(luò)的最終輸出為c個類別的語義標(biāo)簽。為了防止網(wǎng)絡(luò)過擬合,在全連接層中加入了dropout 層,閾值設(shè)置為0.5。
訓(xùn)練過程中使用交叉熵?fù)p失函數(shù),表示為:
其中:M 表示數(shù)據(jù)集中的類別數(shù);yic為指示變量,若該類別和樣本i 相同則為1,否則為0;pic表示樣本i 屬于類別c 的預(yù)測概率。
圖1 多尺度圖卷積網(wǎng)絡(luò)模型
圖2 分類準(zhǔn)確率隨迭代次數(shù)的變化趨勢
本文網(wǎng)絡(luò)使用ModelNet4 數(shù)據(jù)集進行訓(xùn)練和測試。ModelNet40 中包含40個類別的人造物體,共12311個模型。參照PointNet,均勻采樣1024個點,并且僅將采樣點的坐標(biāo)作為模型的輸入。本文使用Ubuntu18.04 作為系統(tǒng)環(huán)境,Python 版本為2.7,TensorFlow 版本為1.15。
網(wǎng)絡(luò)通過200 輪迭代學(xué)習(xí),獲得的總體分類準(zhǔn)確度、平均分類準(zhǔn)確度變化趨勢如圖2 所示。網(wǎng)絡(luò)的總體分類準(zhǔn)確度隨迭代次數(shù)的增加維持在92.8%附近,平均準(zhǔn)確率維持在90.2%附近。
對比本文網(wǎng)絡(luò)與現(xiàn)有點云分類網(wǎng)絡(luò)在測試集上的分類準(zhǔn)確度,結(jié)果如表1 所示:
表1 ModelNet40 數(shù)據(jù)集上的分類實驗結(jié)果對比
根據(jù)表1 結(jié)果顯示,在總體分類準(zhǔn)確度和平均分類準(zhǔn)確度上,本文所提出的網(wǎng)絡(luò)都獲得了較好的性能。在平均分類準(zhǔn)確度上,本文網(wǎng)絡(luò)比PointNet 高出4.2%,比DGCNN 高出1.1%,比GAPNet 高出0.5%。在總體分類準(zhǔn)確度上,本文網(wǎng)絡(luò)比PointNet 高出3.6%,比DGCNN 高出0.6%,比GAPNet 高出0.4%。
本文針對傳統(tǒng)點云分類網(wǎng)絡(luò)在進行特征學(xué)習(xí)時存在的局部特征不足、多尺度信息缺失等問題,提出一種基于多尺度圖卷積的點云分類網(wǎng)絡(luò),通過獲取不同范圍內(nèi)等間隔采樣的k個點,以搭建不同尺度的圖卷積模塊來學(xué)習(xí)點云數(shù)據(jù)的多尺度局部特征,最后再將這些特征進行融合處理獲得點云分類的結(jié)果。實驗結(jié)果表明,本文所提出的網(wǎng)絡(luò)總體分類準(zhǔn)確度能達到92.8%,平均分類準(zhǔn)確度能達到90.2%,相比于其他網(wǎng)絡(luò),本文提出的網(wǎng)絡(luò)分類準(zhǔn)確度更高。