梁振明 翟正利 周 煒
(青島理工大學(xué)信息與控制工程學(xué)院 山東 青島 266520)
3D點云數(shù)據(jù)是一種非常重要的空間幾何型數(shù)據(jù),是一種無層次不規(guī)則的數(shù)據(jù)形式,一般用來構(gòu)建表示立體幾何物體的表面形狀,同時點云數(shù)據(jù)也是激光雷達(dá)、3D傳感器和立體掃描儀等設(shè)備生成數(shù)據(jù)的原始表現(xiàn)形式。近年來,隨著自動駕駛、VR、AR等技術(shù)的發(fā)展,對點云數(shù)據(jù)的高效處理變得越來越重要。傳統(tǒng)的點云數(shù)據(jù)分類方法是通過人工特征工程提取數(shù)據(jù)點的屬性特征,建立數(shù)據(jù)點局部特征描述子,用來捕獲數(shù)據(jù)點的部分空間幾何信息。但是由于手工方法無法完全捕捉到三維點云數(shù)據(jù)的完整特征,因此分類效果一直不理想。近年來,深度學(xué)習(xí)技術(shù)在圖像識別、自然語言處理等領(lǐng)域取得了非常大的成功,使端到端的機(jī)器學(xué)習(xí)和模式識別技術(shù)邁向新的臺階。深度學(xué)習(xí)算法具有強(qiáng)大的特征提取與特征表達(dá)能力,能夠克服傳統(tǒng)機(jī)器學(xué)習(xí)中繁雜的人工特征工程預(yù)處理過程、自動地識別和提取訓(xùn)練數(shù)據(jù)背后潛在的特征信息,并從中學(xué)習(xí)其特征規(guī)律用于建模。諸多研究人員利用深度學(xué)習(xí)技術(shù)對3D點云數(shù)據(jù)進(jìn)行分類建模,例如:將3D點云數(shù)據(jù)投影成2D圖像,再利用常規(guī)卷積神經(jīng)網(wǎng)絡(luò)CNN模型對其進(jìn)行識別等。然而基于傳統(tǒng)深度學(xué)習(xí)方法的3D點云建模方式都無法有效地捕捉數(shù)據(jù)點之間的空間幾何信息,并且建模過程復(fù)雜,對內(nèi)存資源消耗很大,因此更有效且適用性更強(qiáng)的3D點云數(shù)據(jù)建模方法一直以來都是熱門研究課題之一。
傳統(tǒng)深度學(xué)習(xí)算法對圖像、語音等數(shù)據(jù)的處理方式是將其簡化為多維數(shù)組或多維向量等網(wǎng)格型數(shù)據(jù)形式(即張量),然后利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)或循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,RNN)對其進(jìn)行識別與建模。對于這種能夠簡化為張量形式表示的數(shù)據(jù),稱其為“歐幾里得域”數(shù)據(jù)[1]。深度學(xué)習(xí)的強(qiáng)大之處在于能夠高效地處理歐幾里得域數(shù)據(jù)。然而現(xiàn)實生活中有很多數(shù)據(jù)是不符合歐幾里得域的,例如:電子商務(wù)數(shù)據(jù)、社交網(wǎng)絡(luò)數(shù)據(jù)和蛋白質(zhì)分子結(jié)構(gòu)等,這些數(shù)據(jù)都無法簡單地簡化為張量形式表示,因此類似這種具有空間結(jié)構(gòu)和空間連接關(guān)系的數(shù)據(jù)被稱為“非歐幾里得域”數(shù)據(jù)。3D點云數(shù)據(jù)就屬于非歐幾里得域數(shù)據(jù),無法將其簡單地轉(zhuǎn)換為張量形式表示,因此傳統(tǒng)深度學(xué)習(xí)算法對3D點云數(shù)據(jù)的建模處理具有一定的局限性,處理效果不佳。
圖作為一種特殊形式的數(shù)據(jù)結(jié)構(gòu)類型,其結(jié)構(gòu)形式包含了豐富的應(yīng)用價值,圖結(jié)構(gòu)數(shù)據(jù)主要由節(jié)點和連接節(jié)點的邊組成,節(jié)點包含了數(shù)據(jù)的屬性特征,邊表示了節(jié)點間的依賴關(guān)系。對于非歐幾里得域數(shù)據(jù)的有效表示,圖結(jié)構(gòu)表現(xiàn)出巨大的適用性和應(yīng)用價值,因此利用圖結(jié)構(gòu)結(jié)合深度學(xué)習(xí)技術(shù)對點云數(shù)據(jù)建模的方法,近來得到越來越多的關(guān)注,但同時也面臨著諸多的挑戰(zhàn)。
對于3D點云數(shù)據(jù)的建模任務(wù),一般與傳統(tǒng)深度學(xué)習(xí)中對2D圖像數(shù)據(jù)的處理方式類似,可以分為點的分類、分割和匹配等任務(wù)。對點云數(shù)據(jù)的建模研究歷程可以以PointNet[2]模型為界線,分為前后兩個不同的時期:前PointNet時期和后PointNet時期。
前PointNet時期對點云數(shù)據(jù)的處理方式主要以人工特征工程和體素化預(yù)處理為主,如:通過人為手工標(biāo)注,建立數(shù)據(jù)點局部特征描述子,使模型可以獲得數(shù)據(jù)點的部分空間幾何屬性的處理方法[3];將3D點云數(shù)據(jù)投影成2D圖像,再利用常規(guī)CNN模型進(jìn)行處理的建模方法[4];利用體素化、網(wǎng)格化等技術(shù)將點云數(shù)據(jù)體素化為空間連續(xù)的3D型數(shù)據(jù),再通過3D卷積神經(jīng)網(wǎng)絡(luò)處理的分類方法[5]等。然而基于人工特征工程的處理方法受人為誤差因素限制,對3D點云數(shù)據(jù)的建模效果較差;基于投影的分類算法丟失了點云數(shù)據(jù)大量的空間幾何特性,無法充分體現(xiàn)3D點云的價值信息;基于體素化處理的建模算法雖然能盡量保留點云數(shù)據(jù)整體的空間幾何信息,但對內(nèi)存開銷很大,處理過程效率很低。因此上述方法都需要對點云數(shù)據(jù)進(jìn)行一定的簡化或抽象等預(yù)處理才能輸入到模型,勢必會造成一定的量化誤差,丟失點云數(shù)據(jù)部分內(nèi)部細(xì)節(jié)特征,從而影響模型的表達(dá)效果,無法高效且合理地對3D點云數(shù)據(jù)進(jìn)行處理和建模。
PointNet是一個具有開創(chuàng)性意義的3D點云建模模型,它無須對點云數(shù)據(jù)進(jìn)行預(yù)處理,可直接將原始無規(guī)則的點云數(shù)據(jù)作為模型輸入,通過對單個數(shù)據(jù)點的分析,最終實現(xiàn)對數(shù)據(jù)整體的分類目標(biāo)。PointNet將3D點云數(shù)據(jù)視為一組孤立的數(shù)據(jù)點的集合,首先利用兩個空間變換網(wǎng)絡(luò),將原始點云旋轉(zhuǎn)到一個易于分割的角度;然后再對數(shù)據(jù)點的坐標(biāo)進(jìn)行旋轉(zhuǎn)對齊,在屬性特征層面上對數(shù)據(jù)進(jìn)行空間變換,使相似特征位置相近;最后通過一個全局最大池化層提取全局特征信息用于分類。整個過程既保證提取了所有數(shù)據(jù)點的近似全局特征,又保證了數(shù)據(jù)點的交換不變性和旋轉(zhuǎn)不變性特點,驗證實驗證明了PointNet具有良好的表現(xiàn)力和高效性,比之前模型的表現(xiàn)效果都要好。
由于PointNet模型已經(jīng)證明,直接對原始3D點云數(shù)據(jù)進(jìn)行處理效果會更好,因此一些類似模型相繼被提出,例如:加入局部鄰接節(jié)點集合概念,捕捉更多局部特征的PointNet++模型[6];利用多層堆棧前饋網(wǎng)絡(luò)生成連續(xù)性加權(quán)卷積核,提高圖結(jié)構(gòu)數(shù)據(jù)卷積效果的動態(tài)卷積模型[7];應(yīng)用邊卷積操作捕獲鄰接節(jié)點與中心節(jié)點連接邊局部關(guān)系的動態(tài)圖卷積網(wǎng)絡(luò)模型[8]等。
傳統(tǒng)機(jī)器學(xué)習(xí)方法對圖結(jié)構(gòu)數(shù)據(jù)的處理,一般將其映射為簡單的實向量表示,即對圖結(jié)構(gòu)進(jìn)行壓縮,但是這種處理方式會破壞圖數(shù)據(jù)的內(nèi)部結(jié)構(gòu)聯(lián)系,丟失部分空間結(jié)構(gòu)信息,如丟失節(jié)點間的拓?fù)湟蕾囮P(guān)系等,而丟失的信息在某些特定的建模任務(wù)中可能十分重要,因此更合理的圖數(shù)據(jù)建模方法一直是數(shù)據(jù)處理領(lǐng)域的研究熱點。
2009年Scarselli等[9]提出了圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Networks,GNN)模型,GNN模型是基于信息傳遞機(jī)制的監(jiān)督型網(wǎng)絡(luò)模型,不同圖節(jié)點之間通過相互連接的邊進(jìn)行信息交互,更新各自的狀態(tài)直至全圖結(jié)構(gòu)達(dá)到一個穩(wěn)定的狀態(tài),然后綜合各個節(jié)點的狀態(tài)作為圖神經(jīng)網(wǎng)絡(luò)模型最終的輸出,同時引入相應(yīng)的學(xué)習(xí)算法對GNN模型的參數(shù)進(jìn)行估計。GNN模型將圖中的每個節(jié)點都視為一個概念目標(biāo),節(jié)點之間的連接邊表示兩個目標(biāo)之間的依賴關(guān)系,因此每一個概念目標(biāo)的表示都由其自身特征及與其相關(guān)聯(lián)的概念目標(biāo)的特征共同構(gòu)成,即每個節(jié)點的狀態(tài)向量都由其自身狀態(tài)信息及其鄰接點狀態(tài)信息共同構(gòu)成:
xv=fw(lv,lN[v],xN[v],lE[v])
(1)
式中:xv為節(jié)點v狀態(tài)向量;lv表示節(jié)點v的屬性標(biāo)簽;N[v]表示節(jié)點v鄰接節(jié)點的集合;E[v]表示與節(jié)點v連接的邊的集合;fw表示非線性變換函數(shù)。
圖卷積神經(jīng)網(wǎng)絡(luò)(Graph Convolutional Networks,GCN)是卷積神經(jīng)網(wǎng)絡(luò)CNN與圖神經(jīng)網(wǎng)絡(luò)GNN的結(jié)合,主要借助卷積神經(jīng)網(wǎng)絡(luò)中卷積操作的概念,對圖結(jié)構(gòu)數(shù)據(jù)的屬性特征進(jìn)行類卷積(Convolution-like)變換,從而增強(qiáng)GNN網(wǎng)絡(luò)模型的參數(shù)共享能力。目前,圖卷積神經(jīng)網(wǎng)絡(luò)模型主要分為兩類:基于譜方法(Spectral-based)的圖卷積網(wǎng)絡(luò)模型[10]和基于時空域(Spatial-based)的圖卷積網(wǎng)絡(luò)模型[11]。
由于圖神經(jīng)網(wǎng)絡(luò)模型是將圖結(jié)構(gòu)分解為若干圖節(jié)點信息的聚合,因此整體圖結(jié)構(gòu)數(shù)據(jù)的特征信息可以表示成所有圖節(jié)點特征信息的集合,即:X={xi}i∈N?RN×D。消息傳遞機(jī)制[12]概括了基于時空域卷積神經(jīng)網(wǎng)絡(luò)模型的主要核心思想,如圖1所示。
圖1 GCN消息傳遞機(jī)制示意圖
節(jié)點之間通過連接邊進(jìn)行信息交互與傳遞,并通過特定的信息傳遞函數(shù)將節(jié)點以及邊之間的特征信息在網(wǎng)絡(luò)不同層之間進(jìn)行傳遞,然后通過一個全局變換函數(shù)對全局信息進(jìn)行維度變換,得到模型的最終輸出。數(shù)學(xué)形式可以表示為:
(2)
GraphSAGE模型[13]通過引入聚合函數(shù)概念,對消息傳遞機(jī)制進(jìn)行了實質(zhì)性的總結(jié),提出了基于時空域圖卷積網(wǎng)絡(luò)模型統(tǒng)一的表示形式:
Gl+1=Conv(Gl,ωl)=
(3)
(4)
式中:ωl表示第l層網(wǎng)絡(luò)的學(xué)習(xí)參數(shù);aggregate()表示信息聚合函數(shù);update()表示全局變換函數(shù);即GCN網(wǎng)絡(luò)第l+1層的特征表示的輸入是第l層特征卷積變換過程的輸出。
最遠(yuǎn)點采樣(Farthest Point Sampling,FPS)方法是圖結(jié)構(gòu)數(shù)據(jù)中常見的節(jié)點采樣方法之一,也是點云建模任務(wù)中常用的下采樣方法之一。FPS算法的主要思想為:首先在整體點云數(shù)據(jù)集中隨機(jī)抽取一個數(shù)據(jù)點作為初始點,然后在剩余的數(shù)據(jù)點集中選取距離初始點歐氏距離最遠(yuǎn)的點,作為第二個選取點并放入采樣集中,依次迭代,直至達(dá)到采樣數(shù)據(jù)點的數(shù)量要求。最遠(yuǎn)點采樣方法能夠選取一系列物體表征的代表點,以少代多地表示物體的整體信息,能夠有效地降低點云數(shù)據(jù)的整體數(shù)量,降低分類模型的計算量,且不改變物體的整體語義信息,即FPS采用方法只會降低3D點云物體的分辨率和解析度,不會改變物體的整體形狀信息,因此在點云分類等粗粒度建模任務(wù)中,最遠(yuǎn)點采樣是非常有效的降采樣方法,可以降低模型計算復(fù)雜度,加快模型訓(xùn)練,且不過多降低模型的分類準(zhǔn)確度。在現(xiàn)實的3D點云建模任務(wù)中,F(xiàn)PS降采樣方法表現(xiàn)出比圖數(shù)據(jù)建模中常用的隨機(jī)采樣方法更好的實驗效果,本文3D點云分類模型中也將使用FPS降采樣方法對點云數(shù)據(jù)進(jìn)行數(shù)據(jù)點降采樣。
k最鄰近聚簇(k-NN Graph)算法是描述點云數(shù)據(jù)中不同數(shù)據(jù)點之間空間位置關(guān)系的表示方法,k-NN Graph算法利用了k最鄰近(k nearest neighborhood,k-NN)算法的思想,將3D點云數(shù)據(jù)中的每一個數(shù)據(jù)點當(dāng)作一個中心節(jié)點,然后根據(jù)其與剩余節(jié)點空間歐氏距離的遠(yuǎn)近程度,選取前k個與之位置關(guān)系最近的點,作為其鄰接節(jié)點,加入局部鄰接區(qū)域的概念,對同一局部區(qū)域的數(shù)據(jù)點聚集成簇,便于點云數(shù)據(jù)局部特征的提取。對不同k值的定義也實現(xiàn)了對3D點云數(shù)據(jù)的動態(tài)采樣,有利于增強(qiáng)圖神經(jīng)網(wǎng)絡(luò)模型的適用性和泛化性。對于每一個中心節(jié)點來說,與之越相近的節(jié)點,其屬性特征與之越相似,因此基于k-NN Graph算法的局部特征聚合方式,更有利于突出局部代表性特征信息,更有利于局部特征的信息表達(dá)。
如圖2所示,邊卷積(EdgeConv) 操作與常規(guī)圖卷積網(wǎng)絡(luò)模型中卷積操作的區(qū)別在于,它并不是直接將鄰接節(jié)點的特性信息進(jìn)行聚合,而是使用經(jīng)過非線性變換提取的兩個互連節(jié)點之間連接邊的特征代替兩個互連節(jié)點特征的綜合,然后再對多條與中心節(jié)點相連接邊的特征信息進(jìn)行聚合,以此來表示該中心節(jié)點的綜合特征信息。其數(shù)學(xué)表達(dá)式為:
(5)
式中:ei,j=MLP(xi,xj-xi)表示節(jié)點間連接邊的屬性特征;MLP表示含有非線性變換函數(shù)的多層前饋網(wǎng)絡(luò);xj-xi表示鄰接節(jié)點與中心節(jié)點的特征差異。
圖2 邊卷積操作示意圖
本文提出適用于3D點云分類任務(wù)的多尺度動態(tài)圖卷積網(wǎng)絡(luò)模型,首先利用最遠(yuǎn)點采樣算法FPS對點云數(shù)據(jù)整體進(jìn)行降采樣,減少模型輸入的數(shù)據(jù)量,降低模型的計算復(fù)雜度;然后分別利用三種不同尺度的k-NN Graph層對點云數(shù)據(jù)進(jìn)行局部劃分,并利用不同尺度的邊卷積層對局部特征進(jìn)行提取和聚合,最后通過一個全局最大池化層提取全局語義信息用于分類。
具體而言,首先利用FPS算法對每一個點云物體采樣512個特征點作為模型的輸入,然后分別利用k取20、30、40三種不同的k-NN Graph算法和邊卷積操作提取不同尺度的鄰接域特征信息,三個分支并行且各個分支深度不同,對局部特征進(jìn)行不同維度、不同深度的非線性變換,使其具備更強(qiáng)大的適應(yīng)性和表達(dá)能力,然后在三個分支的末端將不同尺度的屬性特征進(jìn)行拼接,得到維度更高、局部細(xì)節(jié)特征更豐富的特征張量表示,最后經(jīng)過兩個多層MLP網(wǎng)絡(luò)和一個全局最大池化層進(jìn)行分類,模型整體架構(gòu)如圖3所示。
圖3 多尺度動態(tài)圖卷積網(wǎng)絡(luò)模型架構(gòu)
本文3D點云分類實驗所采用的數(shù)據(jù)集為ModelNet10和ModelNet40數(shù)據(jù)集[14]。ModelNet系列數(shù)據(jù)集是一系列網(wǎng)格化的3D CAD模型。ModelNet40數(shù)據(jù)集包含了40類物體共12 311個3D CAD模型,其中9 843個模型為訓(xùn)練集用于模型訓(xùn)練,2 468個模型為測試集用于模型性能測試;ModelNet10數(shù)據(jù)集是ModelNet40數(shù)據(jù)集的一個子集,共包含10類物體4 900個3D CAD模型,其中3 991個模型為訓(xùn)練集,909個模型為測試集。按照PointNet模型對ModelNet數(shù)據(jù)集預(yù)處理方式一樣的方法對ModelNet10和ModelNet40數(shù)據(jù)集進(jìn)行預(yù)處理:首先對每一個網(wǎng)格化3D CAD物體,在其表面均勻地采樣1 024個數(shù)據(jù)點,對于每一個數(shù)據(jù)點僅保留其(X,Y,Z)空間坐標(biāo)信息,丟棄其表面網(wǎng)格化信息及其他附屬特征信息,然后對所有采樣數(shù)據(jù)點進(jìn)行一定的旋轉(zhuǎn)和變換,并進(jìn)行標(biāo)準(zhǔn)化處理。
本文采用的多尺度動態(tài)圖卷積網(wǎng)絡(luò)3D點云分類模型的參數(shù)設(shè)置與PointNet等成熟點云分類模型參數(shù)設(shè)置相一致,對于每一個邊卷積EdgeConv層和全連接MLP層都使用ReLU激活函數(shù)對特征參數(shù)進(jìn)行非線性激活,并在每一層都使用批標(biāo)準(zhǔn)化(Batch Normalization,BN)操作對輸入數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化預(yù)處理;參數(shù)優(yōu)化過程使用Adam優(yōu)化函數(shù),其調(diào)整動量設(shè)置為0.9,初始學(xué)習(xí)率設(shè)置為0.001,并設(shè)置學(xué)習(xí)率動態(tài)衰減,每經(jīng)過20個訓(xùn)練回合學(xué)習(xí)率衰減為原來的一半;批訓(xùn)練的批次大小為16,訓(xùn)練回合數(shù)為100。借助Pytorch Geometric深度學(xué)習(xí)框架[15]對本文模型進(jìn)行構(gòu)建,并配合NVIDIA GTX 1060 GPU對模型進(jìn)行了訓(xùn)練測試,實驗結(jié)果如圖4所示。
圖4 模型分類準(zhǔn)確度
實驗對本文所提出的多尺度動態(tài)圖卷積網(wǎng)絡(luò)點云分類模型,分別在ModelNet10和ModelNet40數(shù)據(jù)集進(jìn)行了驗證測試。實驗結(jié)果顯示,對于ModelNet10數(shù)據(jù)集的分類任務(wù),本文模型在經(jīng)過大約70個訓(xùn)練回合之后,分類準(zhǔn)確率幾乎都能保證在94%以上,并且當(dāng)100回合訓(xùn)練結(jié)束時,模型的整體分類準(zhǔn)確率能達(dá)到95.15%;對于ModelNet40數(shù)據(jù)集的分類任務(wù),本文模型在經(jīng)過大約37個訓(xùn)練回合之后,分類準(zhǔn)確率幾乎都能保證在90%以上,并且當(dāng)100回合訓(xùn)練結(jié)束時,模型的整體測試分類準(zhǔn)確率能達(dá)到91.79%,并且仍有上升的趨勢。
除此之外,將本文模型的分類準(zhǔn)確率和模型生成參數(shù)的大小與當(dāng)前眾多成熟的3D點云分類模型做了性能對比,結(jié)果如表1所示。在分類準(zhǔn)確率方面,本文提出的多尺度動態(tài)圖卷積網(wǎng)絡(luò)模型已經(jīng)達(dá)到與當(dāng)前眾多成熟模型較為一致的水平;在生成參數(shù)方面,本文模型較之前的眾多模型實現(xiàn)了質(zhì)的飛躍,模型生成的參數(shù)更少,計算復(fù)雜度更低。
表1 分類準(zhǔn)確度與模型參數(shù)量對比表
本文提出了一種適用于3D點云分類任務(wù)的多尺度動態(tài)圖卷積網(wǎng)絡(luò)模型。首先利用最遠(yuǎn)點采樣方法對點云數(shù)據(jù)整體進(jìn)行降采樣;然后分別利用三種不同尺度的k最鄰近聚簇層對點云數(shù)據(jù)進(jìn)行局部劃分,確定不同范圍的局部特征區(qū)域,并利用不同尺度、不同深度的邊卷積操作對局部特征進(jìn)行提取和聚合;然后將不同尺度的局部特征進(jìn)行拼接,并通過多層全連接網(wǎng)絡(luò)層對拼接的不同尺度局部信息進(jìn)行整體維度變換;最后通過一個全局最大池化層總結(jié)和提取全局語義信息用于分類。
為了驗證本文模型的分類有效性,將該模型在ModelNet10和ModelNet40數(shù)據(jù)集上進(jìn)行了實驗驗證。實驗結(jié)果表明,本文提出的多尺度動態(tài)圖卷積網(wǎng)絡(luò)模型在3D點云數(shù)據(jù)的分類準(zhǔn)確度和模型復(fù)雜度上都實現(xiàn)了非常良好的效果在分類準(zhǔn)確率方面,本文模型已經(jīng)達(dá)到與當(dāng)前眾多成熟模型分類性能一致的水平;在生成參數(shù)方面,本文模型生成的參數(shù)更少,計算復(fù)雜度更低。