梁振明 翟正利 周 煒
(青島理工大學信息與控制工程學院 山東 青島 266520)
3D點云數據是一種非常重要的空間幾何型數據,是一種無層次不規則的數據形式,一般用來構建表示立體幾何物體的表面形狀,同時點云數據也是激光雷達、3D傳感器和立體掃描儀等設備生成數據的原始表現形式。近年來,隨著自動駕駛、VR、AR等技術的發展,對點云數據的高效處理變得越來越重要。傳統的點云數據分類方法是通過人工特征工程提取數據點的屬性特征,建立數據點局部特征描述子,用來捕獲數據點的部分空間幾何信息。但是由于手工方法無法完全捕捉到三維點云數據的完整特征,因此分類效果一直不理想。近年來,深度學習技術在圖像識別、自然語言處理等領域取得了非常大的成功,使端到端的機器學習和模式識別技術邁向新的臺階。深度學習算法具有強大的特征提取與特征表達能力,能夠克服傳統機器學習中繁雜的人工特征工程預處理過程、自動地識別和提取訓練數據背后潛在的特征信息,并從中學習其特征規律用于建模。諸多研究人員利用深度學習技術對3D點云數據進行分類建模,例如:將3D點云數據投影成2D圖像,再利用常規卷積神經網絡CNN模型對其進行識別等。然而基于傳統深度學習方法的3D點云建模方式都無法有效地捕捉數據點之間的空間幾何信息,并且建模過程復雜,對內存資源消耗很大,因此更有效且適用性更強的3D點云數據建模方法一直以來都是熱門研究課題之一。
傳統深度學習算法對圖像、語音等數據的處理方式是將其簡化為多維數組或多維向量等網格型數據形式(即張量),然后利用卷積神經網絡(Convolutional Neural Networks,CNN)或循環神經網絡(Recurrent Neural Networks,RNN)對其進行識別與建模。對于這種能夠簡化為張量形式表示的數據,稱其為“歐幾里得域”數據[1]。深度學習的強大之處在于能夠高效地處理歐幾里得域數據。然而現實生活中有很多數據是不符合歐幾里得域的,例如:電子商務數據、社交網絡數據和蛋白質分子結構等,這些數據都無法簡單地簡化為張量形式表示,因此類似這種具有空間結構和空間連接關系的數據被稱為“非歐幾里得域”數據。3D點云數據就屬于非歐幾里得域數據,無法將其簡單地轉換為張量形式表示,因此傳統深度學習算法對3D點云數據的建模處理具有一定的局限性,處理效果不佳。
圖作為一種特殊形式的數據結構類型,其結構形式包含了豐富的應用價值,圖結構數據主要由節點和連接節點的邊組成,節點包含了數據的屬性特征,邊表示了節點間的依賴關系。對于非歐幾里得域數據的有效表示,圖結構表現出巨大的適用性和應用價值,因此利用圖結構結合深度學習技術對點云數據建模的方法,近來得到越來越多的關注,但同時也面臨著諸多的挑戰。
對于3D點云數據的建模任務,一般與傳統深度學習中對2D圖像數據的處理方式類似,可以分為點的分類、分割和匹配等任務。對點云數據的建模研究歷程可以以PointNet[2]模型為界線,分為前后兩個不同的時期:前PointNet時期和后PointNet時期。
前PointNet時期對點云數據的處理方式主要以人工特征工程和體素化預處理為主,如:通過人為手工標注,建立數據點局部特征描述子,使模型可以獲得數據點的部分空間幾何屬性的處理方法[3];將3D點云數據投影成2D圖像,再利用常規CNN模型進行處理的建模方法[4];利用體素化、網格化等技術將點云數據體素化為空間連續的3D型數據,再通過3D卷積神經網絡處理的分類方法[5]等。然而基于人工特征工程的處理方法受人為誤差因素限制,對3D點云數據的建模效果較差;基于投影的分類算法丟失了點云數據大量的空間幾何特性,無法充分體現3D點云的價值信息;基于體素化處理的建模算法雖然能盡量保留點云數據整體的空間幾何信息,但對內存開銷很大,處理過程效率很低。因此上述方法都需要對點云數據進行一定的簡化或抽象等預處理才能輸入到模型,勢必會造成一定的量化誤差,丟失點云數據部分內部細節特征,從而影響模型的表達效果,無法高效且合理地對3D點云數據進行處理和建模。
PointNet是一個具有開創性意義的3D點云建模模型,它無須對點云數據進行預處理,可直接將原始無規則的點云數據作為模型輸入,通過對單個數據點的分析,最終實現對數據整體的分類目標。PointNet將3D點云數據視為一組孤立的數據點的集合,首先利用兩個空間變換網絡,將原始點云旋轉到一個易于分割的角度;然后再對數據點的坐標進行旋轉對齊,在屬性特征層面上對數據進行空間變換,使相似特征位置相近;最后通過一個全局最大池化層提取全局特征信息用于分類。整個過程既保證提取了所有數據點的近似全局特征,又保證了數據點的交換不變性和旋轉不變性特點,驗證實驗證明了PointNet具有良好的表現力和高效性,比之前模型的表現效果都要好。
由于PointNet模型已經證明,直接對原始3D點云數據進行處理效果會更好,因此一些類似模型相繼被提出,例如:加入局部鄰接節點集合概念,捕捉更多局部特征的PointNet++模型[6];利用多層堆棧前饋網絡生成連續性加權卷積核,提高圖結構數據卷積效果的動態卷積模型[7];應用邊卷積操作捕獲鄰接節點與中心節點連接邊局部關系的動態圖卷積網絡模型[8]等。
傳統機器學習方法對圖結構數據的處理,一般將其映射為簡單的實向量表示,即對圖結構進行壓縮,但是這種處理方式會破壞圖數據的內部結構聯系,丟失部分空間結構信息,如丟失節點間的拓撲依賴關系等,而丟失的信息在某些特定的建模任務中可能十分重要,因此更合理的圖數據建模方法一直是數據處理領域的研究熱點。
2009年Scarselli等[9]提出了圖神經網絡(Graph Neural Networks,GNN)模型,GNN模型是基于信息傳遞機制的監督型網絡模型,不同圖節點之間通過相互連接的邊進行信息交互,更新各自的狀態直至全圖結構達到一個穩定的狀態,然后綜合各個節點的狀態作為圖神經網絡模型最終的輸出,同時引入相應的學習算法對GNN模型的參數進行估計。GNN模型將圖中的每個節點都視為一個概念目標,節點之間的連接邊表示兩個目標之間的依賴關系,因此每一個概念目標的表示都由其自身特征及與其相關聯的概念目標的特征共同構成,即每個節點的狀態向量都由其自身狀態信息及其鄰接點狀態信息共同構成:
xv=fw(lv,lN[v],xN[v],lE[v])
(1)
式中:xv為節點v狀態向量;lv表示節點v的屬性標簽;N[v]表示節點v鄰接節點的集合;E[v]表示與節點v連接的邊的集合;fw表示非線性變換函數。
圖卷積神經網絡(Graph Convolutional Networks,GCN)是卷積神經網絡CNN與圖神經網絡GNN的結合,主要借助卷積神經網絡中卷積操作的概念,對圖結構數據的屬性特征進行類卷積(Convolution-like)變換,從而增強GNN網絡模型的參數共享能力。目前,圖卷積神經網絡模型主要分為兩類:基于譜方法(Spectral-based)的圖卷積網絡模型[10]和基于時空域(Spatial-based)的圖卷積網絡模型[11]。
由于圖神經網絡模型是將圖結構分解為若干圖節點信息的聚合,因此整體圖結構數據的特征信息可以表示成所有圖節點特征信息的集合,即:X={xi}i∈N?RN×D。消息傳遞機制[12]概括了基于時空域卷積神經網絡模型的主要核心思想,如圖1所示。

圖1 GCN消息傳遞機制示意圖
節點之間通過連接邊進行信息交互與傳遞,并通過特定的信息傳遞函數將節點以及邊之間的特征信息在網絡不同層之間進行傳遞,然后通過一個全局變換函數對全局信息進行維度變換,得到模型的最終輸出。數學形式可以表示為:
(2)

GraphSAGE模型[13]通過引入聚合函數概念,對消息傳遞機制進行了實質性的總結,提出了基于時空域圖卷積網絡模型統一的表示形式:
Gl+1=Conv(Gl,ωl)=
(3)
(4)
式中:ωl表示第l層網絡的學習參數;aggregate()表示信息聚合函數;update()表示全局變換函數;即GCN網絡第l+1層的特征表示的輸入是第l層特征卷積變換過程的輸出。
最遠點采樣(Farthest Point Sampling,FPS)方法是圖結構數據中常見的節點采樣方法之一,也是點云建模任務中常用的下采樣方法之一。FPS算法的主要思想為:首先在整體點云數據集中隨機抽取一個數據點作為初始點,然后在剩余的數據點集中選取距離初始點歐氏距離最遠的點,作為第二個選取點并放入采樣集中,依次迭代,直至達到采樣數據點的數量要求。最遠點采樣方法能夠選取一系列物體表征的代表點,以少代多地表示物體的整體信息,能夠有效地降低點云數據的整體數量,降低分類模型的計算量,且不改變物體的整體語義信息,即FPS采用方法只會降低3D點云物體的分辨率和解析度,不會改變物體的整體形狀信息,因此在點云分類等粗粒度建模任務中,最遠點采樣是非常有效的降采樣方法,可以降低模型計算復雜度,加快模型訓練,且不過多降低模型的分類準確度。在現實的3D點云建模任務中,FPS降采樣方法表現出比圖數據建模中常用的隨機采樣方法更好的實驗效果,本文3D點云分類模型中也將使用FPS降采樣方法對點云數據進行數據點降采樣。
k最鄰近聚簇(k-NN Graph)算法是描述點云數據中不同數據點之間空間位置關系的表示方法,k-NN Graph算法利用了k最鄰近(k nearest neighborhood,k-NN)算法的思想,將3D點云數據中的每一個數據點當作一個中心節點,然后根據其與剩余節點空間歐氏距離的遠近程度,選取前k個與之位置關系最近的點,作為其鄰接節點,加入局部鄰接區域的概念,對同一局部區域的數據點聚集成簇,便于點云數據局部特征的提取。對不同k值的定義也實現了對3D點云數據的動態采樣,有利于增強圖神經網絡模型的適用性和泛化性。對于每一個中心節點來說,與之越相近的節點,其屬性特征與之越相似,因此基于k-NN Graph算法的局部特征聚合方式,更有利于突出局部代表性特征信息,更有利于局部特征的信息表達。
如圖2所示,邊卷積(EdgeConv) 操作與常規圖卷積網絡模型中卷積操作的區別在于,它并不是直接將鄰接節點的特性信息進行聚合,而是使用經過非線性變換提取的兩個互連節點之間連接邊的特征代替兩個互連節點特征的綜合,然后再對多條與中心節點相連接邊的特征信息進行聚合,以此來表示該中心節點的綜合特征信息。其數學表達式為:
(5)
式中:ei,j=MLP(xi,xj-xi)表示節點間連接邊的屬性特征;MLP表示含有非線性變換函數的多層前饋網絡;xj-xi表示鄰接節點與中心節點的特征差異。

圖2 邊卷積操作示意圖
本文提出適用于3D點云分類任務的多尺度動態圖卷積網絡模型,首先利用最遠點采樣算法FPS對點云數據整體進行降采樣,減少模型輸入的數據量,降低模型的計算復雜度;然后分別利用三種不同尺度的k-NN Graph層對點云數據進行局部劃分,并利用不同尺度的邊卷積層對局部特征進行提取和聚合,最后通過一個全局最大池化層提取全局語義信息用于分類。
具體而言,首先利用FPS算法對每一個點云物體采樣512個特征點作為模型的輸入,然后分別利用k取20、30、40三種不同的k-NN Graph算法和邊卷積操作提取不同尺度的鄰接域特征信息,三個分支并行且各個分支深度不同,對局部特征進行不同維度、不同深度的非線性變換,使其具備更強大的適應性和表達能力,然后在三個分支的末端將不同尺度的屬性特征進行拼接,得到維度更高、局部細節特征更豐富的特征張量表示,最后經過兩個多層MLP網絡和一個全局最大池化層進行分類,模型整體架構如圖3所示。

圖3 多尺度動態圖卷積網絡模型架構
本文3D點云分類實驗所采用的數據集為ModelNet10和ModelNet40數據集[14]。ModelNet系列數據集是一系列網格化的3D CAD模型。ModelNet40數據集包含了40類物體共12 311個3D CAD模型,其中9 843個模型為訓練集用于模型訓練,2 468個模型為測試集用于模型性能測試;ModelNet10數據集是ModelNet40數據集的一個子集,共包含10類物體4 900個3D CAD模型,其中3 991個模型為訓練集,909個模型為測試集。按照PointNet模型對ModelNet數據集預處理方式一樣的方法對ModelNet10和ModelNet40數據集進行預處理:首先對每一個網格化3D CAD物體,在其表面均勻地采樣1 024個數據點,對于每一個數據點僅保留其(X,Y,Z)空間坐標信息,丟棄其表面網格化信息及其他附屬特征信息,然后對所有采樣數據點進行一定的旋轉和變換,并進行標準化處理。
本文采用的多尺度動態圖卷積網絡3D點云分類模型的參數設置與PointNet等成熟點云分類模型參數設置相一致,對于每一個邊卷積EdgeConv層和全連接MLP層都使用ReLU激活函數對特征參數進行非線性激活,并在每一層都使用批標準化(Batch Normalization,BN)操作對輸入數據進行標準化預處理;參數優化過程使用Adam優化函數,其調整動量設置為0.9,初始學習率設置為0.001,并設置學習率動態衰減,每經過20個訓練回合學習率衰減為原來的一半;批訓練的批次大小為16,訓練回合數為100。借助Pytorch Geometric深度學習框架[15]對本文模型進行構建,并配合NVIDIA GTX 1060 GPU對模型進行了訓練測試,實驗結果如圖4所示。

圖4 模型分類準確度
實驗對本文所提出的多尺度動態圖卷積網絡點云分類模型,分別在ModelNet10和ModelNet40數據集進行了驗證測試。實驗結果顯示,對于ModelNet10數據集的分類任務,本文模型在經過大約70個訓練回合之后,分類準確率幾乎都能保證在94%以上,并且當100回合訓練結束時,模型的整體分類準確率能達到95.15%;對于ModelNet40數據集的分類任務,本文模型在經過大約37個訓練回合之后,分類準確率幾乎都能保證在90%以上,并且當100回合訓練結束時,模型的整體測試分類準確率能達到91.79%,并且仍有上升的趨勢。
除此之外,將本文模型的分類準確率和模型生成參數的大小與當前眾多成熟的3D點云分類模型做了性能對比,結果如表1所示。在分類準確率方面,本文提出的多尺度動態圖卷積網絡模型已經達到與當前眾多成熟模型較為一致的水平;在生成參數方面,本文模型較之前的眾多模型實現了質的飛躍,模型生成的參數更少,計算復雜度更低。

表1 分類準確度與模型參數量對比表
本文提出了一種適用于3D點云分類任務的多尺度動態圖卷積網絡模型。首先利用最遠點采樣方法對點云數據整體進行降采樣;然后分別利用三種不同尺度的k最鄰近聚簇層對點云數據進行局部劃分,確定不同范圍的局部特征區域,并利用不同尺度、不同深度的邊卷積操作對局部特征進行提取和聚合;然后將不同尺度的局部特征進行拼接,并通過多層全連接網絡層對拼接的不同尺度局部信息進行整體維度變換;最后通過一個全局最大池化層總結和提取全局語義信息用于分類。
為了驗證本文模型的分類有效性,將該模型在ModelNet10和ModelNet40數據集上進行了實驗驗證。實驗結果表明,本文提出的多尺度動態圖卷積網絡模型在3D點云數據的分類準確度和模型復雜度上都實現了非常良好的效果在分類準確率方面,本文模型已經達到與當前眾多成熟模型分類性能一致的水平;在生成參數方面,本文模型生成的參數更少,計算復雜度更低。