胡永東,張正文,李 婕
(湖北工業大學 電氣與電子工程學院,湖北 武漢430068)
傳統的點云分類方法是通過人工設計一系列的特征,然后使用合適的分類器對三維點云直接進行分類[1]。這種分類方法在很多特定場景中取得了成功,但該分類方法只能在特定數據集下實現不錯的分類效果,應用到新的數據集中效果并不是很理想[2]。
近些年,深度學習在計算機視覺領域快速發展。常用的方法是先將三維點云數據進行體素化,使其變成規則的三維網格結構[2],然后使用三維卷積神經網絡對規則化后的數據進行操作。但是隨著點云密度的增長,這種方法所需要的內存和計算量將會隨分辨率的提高呈三次方增長。所以該方法只適用于較淺的三維網絡模型。在2017年,Qi 等提出了PointNet 網絡[3],通過使用多層感知器(MLP)學習每個點的高維特征,同時,將最大池化層作為對稱函數,實現了對無序點云的直接處理,網絡獲得了不錯的分類效果。但PointNet 無法獲取每個點的鄰域幾何信息,所以在復雜的點云場景中使用時,表現不佳。之后,Qi 等又提出了PointNet++[3],該網絡使用歐氏距離差值法對點進行上采樣,并將插值計算得到的語義特征與低層學習的語義特征融合,從而獲取到每個點更加豐富的語義特征,但該方法對局部空間內每個點進行的依舊是單獨處理,仍有部分結構信息的損失。
近些年,由于圖卷積在二維圖像處理領域獲得了較好的效果。在2018年,Wang 等人提出了一種動態圖卷積神經網絡DGCNN[2],通過引入邊緣卷積模塊來獲取到點云數據的局部特征,獲得較好的分類效果。然而,該方法只能捕獲到有限鄰域內的邊緣特征,缺少多尺度特征,最終還是損失了部分局部幾何信息[4]。
針對以上問題,本文在提出一種可以獲取多尺度點云局部特征的深度學習網絡。通過獲取不同范圍內等間隔采樣的k個鄰近點,將點云數據構造成包含頂點和邊信息的圖結構數據,然后使用圖卷積模塊學習其高維度特征。該網絡的多尺度圖卷積結構,既保證了點云的置換不變性,又可以獲取到多個尺度的局部幾何信息和全局特征。本文網絡通過在ModelNet40[5]數據集上進行實驗,結果顯示,網絡在點云分類準確度上有所提高。
由于點云本身存在的無序性、稀疏性,很多網絡在構建大型鄰域圖時,通常會使用KNN 鄰近算法獲取距離最近的k個鄰近點,從而提取到點云中固定大小的單尺度局部特征信息。然而很多點云數據中的物體是以多尺度形式呈現的,所以,這種網絡并不能獲取到足夠的特征,分類性能相對較低。本文提出一種M-KNN 多尺度鄰近算法,通過對不同范圍內的鄰近點進行等間隔采樣獲取到k個點,用來表示點云數據不同尺度的局部特征信息,而且該方法不會增加網絡的計算量。
將一個具有n個點的D 維點云表示為:

其中X 表示一個點云集合,Xi表示每一個點。每個點具有D 維特征,當D=3 時,表示每個點只包含三維坐標信息,即xi=(xi,yi,zi)。以點xi為中心,計算它與每個點的歐式距離,然后進行排序。傳統KNN 鄰近算法是將距離xi最近的k個點提取出來作為其鄰近點,本文為了達到提取多尺度局部特征的目的,提出M-KNN 鄰近算法,即在距離xi點最近的前n/m個點中進行等間隔采樣,獲取到k個鄰近點。m 值的大小表示對點云集合不同程度的劃分,越小的m 值對應獲取到的k個鄰近點所表征的鄰域范圍越大。
點云的局部結構可以用一個有向圖表示:

其中,V={1,...,n} 表示圖結構的頂點,E?V×V 表示圖結構的邊。
首先,通過xi及其鄰近點構建點云的圖結構G。對于點xi,其k個鄰近點(用xji1,...,xjik表示),與鄰近點之間的定向邊為(i,ji1),...,(i,jik)。定義有向圖的邊緣特征為:

其中,xj-xi代表鄰近點構成的局部塊信息。hθ是由可學習參數θ 構成的非線性激活函數,這里使用多層感知器(MLP)對中心點xi的局部信息進行提取和學習。然后再用一個最大池化層MaxPooling 來聚合特征,用來完成RD×RD→RD′,即輸入具有n個點的D 維點云,通過圖卷積后輸出具有D′維點云特征的n個點。圖卷積模塊(GraphConv)的數學表達式如下:

本文中提出的多尺度圖卷積點云分類網絡結構的框架如圖1 所示。網絡中所有卷積核參數設置為(1×1),k取值為16。網絡讀取到點云數據后,首先使用兩個通道數都為64 的圖卷積模塊提取點云的局部特征,此時設置m=n/k=64,即以距離xi最近的k個點作為鄰近點。然后再對提取到的點云數據的高維特征進行多尺度特征提取,分別設置m=64、32、16、8,逐步擴大鄰域范圍,每個尺度的特征提取都包含兩個圖卷積模塊,通道數分別為64、128。然后使用concat 操作將多個尺度的特征融合,接著再添加一個通道數為1024 的卷積層。使用MaxPooling獲取到點云集合中最大的1024 維特征值。
最后再引入三層全連接層,通道數分別為:(512,256,c),其中c 表示數據集的類別數,即網絡的最終輸出為c個類別的語義標簽。為了防止網絡過擬合,在全連接層中加入了dropout 層,閾值設置為0.5。
訓練過程中使用交叉熵損失函數,表示為:

其中:M 表示數據集中的類別數;yic為指示變量,若該類別和樣本i 相同則為1,否則為0;pic表示樣本i 屬于類別c 的預測概率。

圖1 多尺度圖卷積網絡模型

圖2 分類準確率隨迭代次數的變化趨勢
本文網絡使用ModelNet4 數據集進行訓練和測試。ModelNet40 中包含40個類別的人造物體,共12311個模型。參照PointNet,均勻采樣1024個點,并且僅將采樣點的坐標作為模型的輸入。本文使用Ubuntu18.04 作為系統環境,Python 版本為2.7,TensorFlow 版本為1.15。
網絡通過200 輪迭代學習,獲得的總體分類準確度、平均分類準確度變化趨勢如圖2 所示。網絡的總體分類準確度隨迭代次數的增加維持在92.8%附近,平均準確率維持在90.2%附近。
對比本文網絡與現有點云分類網絡在測試集上的分類準確度,結果如表1 所示:

表1 ModelNet40 數據集上的分類實驗結果對比
根據表1 結果顯示,在總體分類準確度和平均分類準確度上,本文所提出的網絡都獲得了較好的性能。在平均分類準確度上,本文網絡比PointNet 高出4.2%,比DGCNN 高出1.1%,比GAPNet 高出0.5%。在總體分類準確度上,本文網絡比PointNet 高出3.6%,比DGCNN 高出0.6%,比GAPNet 高出0.4%。
本文針對傳統點云分類網絡在進行特征學習時存在的局部特征不足、多尺度信息缺失等問題,提出一種基于多尺度圖卷積的點云分類網絡,通過獲取不同范圍內等間隔采樣的k個點,以搭建不同尺度的圖卷積模塊來學習點云數據的多尺度局部特征,最后再將這些特征進行融合處理獲得點云分類的結果。實驗結果表明,本文所提出的網絡總體分類準確度能達到92.8%,平均分類準確度能達到90.2%,相比于其他網絡,本文提出的網絡分類準確度更高。