?

集改進圖卷積和多層池化的點云分類模型

2024-03-25 06:39周銳闖閆豐亭朱天曉
激光與紅外 2024年2期
關鍵詞:池化卷積局部

周銳闖,田 瑾,閆豐亭,朱天曉

(上海工程技術大學 電子電氣工程學院,上海 201620)

1 引 言

目前,三維點云數據在多個實際應用領域中具有重要的應用價值,例如自動駕駛[1]、虛擬現實[2]以及機器人[3-4]等領域。這是因為三維點云數據可以較好地保留三維模型的幾何信息,而三維點云的分類則成為以上實際應用中的關鍵步驟之一。但是,三維點云數據具有無序性、稀疏性以及高維性等特點,因此采用卷積神經網絡處理點云數據是當前備受關注的研究領域,也是一個具有高難度的挑戰。

近年來,三維成像技術逐漸成熟,三維點云的數據量急劇增加,手工提取點云特征的方式變得難以實現。目前針對點云分類任務的神經網絡方法主要分為三類:基于體素化的方法、基于多視圖的方法和基于點的方法?;隗w素化的方法是將無序的點云分成一系列占用一定空間的體素(Occupancy Voxels)的方法,再利用三維卷積進行體素級別的特征學習。第一個利用體素化方式進行點云分類任務的是Maturana等人[5]提出的VoxNet,通過三維卷積神經網絡提取體素數據的空間局部特征信息,但使用三維卷積造成計算空間和內存大量消耗的問題?;诙嘁晥D的方法是將三維對象按多個角度投影成二維圖像,MVCNN[6]網絡模型通過將點云中提取的視圖投影到二維空間,并利用二維卷積神經網絡進行特征提取。這種方法通過二維卷積降低了內存和計算資源的消耗,但多角度投影只能獲取外部結構信息,從而造成大量三維點云數據的丟失?;诙嘁晥D或體素化的方法都是將三維點云數據轉換為其他形式,導致有價值的信息丟失,影響分類任務的精度。

基于點的方法將三維點云數據直接作為模型的輸入,可以充分利用點云數據的空間幾何特征,降低數據預處理過程中的信息損失。Qi等人[7]提出了PointNet網絡框架,首次將原始點云數據作為輸入,該模型使用T-Net結構解決點云數據的旋轉不變性問題,通過共享的多層感知機(Multilayer Perceptron,MLP)提取每個點的特征,最后使用最大池化進行信息聚合得到全局特征。但是,該方法沒有考慮點與點之間的結構關系,因此對局部特征的提取不充分。Qi等人在PointNet基礎上進行了改善,提出了PointNet++[8]模型,通過層級下采樣的方式增強局部幾何信息的捕獲能力,但是仍無法提取到點對間的特征關系。梁振華等人[9]在PoinNet網基礎上提出注意力加權特征聚合模塊,改善了最大池化損失次要特征的問題,對局部特征信息的捕獲能力仍有不足。Te等人[10]提出了正則化圖卷積神經網絡RGCNN,該網絡模型利用了譜圖理論,可以進一步提高了局部特征的獲取能力。為了能夠更好地獲取點對的關系特征,Wang等人[11]提出了一種動態卷積神經網絡(Dynamic Graph CNN,DGCNN),借鑒了圖卷積神經網絡結構,利用共享參數的K近鄰算法(K Nearest Neighbors,KNN)和MLP從中心點及中心領域上提取局部特征,將不同層次的特征連接起來,計算出點對間的局部特征,但忽略了不同領域間的特征信息。王江安等人[12]提出結合殘差網絡[13]思想,通過搭建更深的圖卷積層來進行更深層局部特征的學習。田晟等人[14]提出結合注意力機制與圖卷積神經網絡的點云分類模型,利用注意力機制獲取更具代表性的局部特征。梁志強等人[15]提出使用圖卷積和注意力機制分別提取點云低維和高維特征,通過多個特征融合的方式來提高點云分類精度。利用圖卷積結構提取局部特征的方法已經成主流,然而,使用固定參數卷積核對不同語義區域點對的特征提取能力有限,此外,目前網絡都采用一次最大池化聚合特征,這會丟棄大量由復雜網絡結構學習到的特征集合。

針對以上問題,本文提出了一種基于動態自適應圖卷積和多層池化的三維點云分類模型。該模型首先采用KNN算法將輸入的點云組成局部有向圖,然后利用動態自適應圖卷積學習不同語義區域點的特征信息,生成多樣的自適應卷積核,動態更新點對間邊的權重,獲取更精確的局部特征。最后采用多層最大池化聚合特征,利用第一次最大池化丟棄的特征重復最大池化操作,收集更豐富的高維特征,從而提高點云分類任務精度。

2 相關工作

2.1 圖卷積神經網絡

傳統卷積神經網絡在處理固定尺寸的二維圖像分類任務中取得了很好的效果,但無法直接應用于無序數據的特征提取。Scarselli等人[16]提出圖卷積神經網絡,將圖結構與卷積神經網絡相結合,可以有效處理無序的數據。將圖卷積神經網絡應用于處理無序的點云數據,利用圖結構學習點對間的依賴關系,可以提取更豐富的局部結構特征。

利用圖卷積神經網絡處理點云分類任務是將n個點F維的點云數據直接輸入,表示為X={x1,x2,…,xn}?RF,當F=3時,每個點的空間三維坐標表示為:Xi=(xi,yi,zi)。局部特征提取過程如圖1所示,首先利用K近鄰算法構建局部有向圖G=(V,E),其中V={pi|i=1,2…,n}和E={ei=(ei1,…,eik)|i=1,2,…,n}表示圖結構中的中心節點和邊。

圖1 圖卷積局部結構示意圖

然后需要提取邊特征,邊特征的函數定義為eij=hθ(pi,pij),其中θ為一組可學習參數,hθ(·)表示學習邊特征的非線性函數。邊函數的選擇對局部特征提取有重要的影響,公式(1)為PointNet模型邊函數的定義,只提取了每個獨立點的特征,沒有考慮點對間的關聯;公式(2)中只對局部信息進行編碼,卻沒有考慮原始的全局特征信息;公式(3)是DGCNN網絡模型中邊函數的定義,該函數既考慮到每個中心點構成的全局信息,又考慮了點對間的局部關系,提高了獲取的局部特征信息的精度:

eij=hθ(pi)

(1)

eij=hθ(pj-pi)s

(2)

eij=hθ(pi,pj-pi)

(3)

最后使用最大池化函數聚合每個圖結構的特征信息,公式定義如(4)所示:

(4)

式中,Bn(Batch Normalization)是數據歸一化處理函數;ReLU(Rectified Linear Activation Function)是非線性激活函數,經過最大池化函數后得到局部特征向量li。

2.2 殘差結構

面對復雜且數量龐大的三維點云數據,構建更深層的網絡結構,可以提取不同層次的信息。然而,普通網絡結構中隨著卷積層數的增加,會出現梯度消失或梯度爆炸的問題。傳統的解決方案是采用數據出初始化和標準化技術,但這些方法會導致網絡性能的退化問題。使用殘差結構搭建深層網絡可以有效地解決這些問題。

殘差網絡是由多個殘差元組成,每個殘差塊由兩個卷積層、一個快捷連接和一個恒等映射構成,如圖2所示。

圖2 殘差結構

快捷連接通過跨越卷積層的直通路徑將輸入直接連接到卷積層的輸出上,這種方式可以使網絡從淺層的特征直接傳遞到深層,避免深度神經網絡訓練時梯度過度衰退的問題,從而更好地學習到特征。在快捷連接后,使用非常簡單的恒等函數,將殘差的輸出直接傳遞到下一層的輸入中,不會改變特征分布,這樣能夠保留輸入信息,稱為恒等映射,這樣使得網絡可以更深,同時避免網絡性能的退化。通過快捷連接和恒等映射的組合,殘差塊可以更靈活的設計深層網絡,提高網絡的表達能力和性能。

3 算法描述

本文提了一種基于改進圖卷積和多層池化的點云分類模型,整體網絡結構如圖3所示。該模型直接將無序的點云數據(N×3)作為輸入,其中N表示輸入的點數,3表示點云的三維坐標(x,y,z)。數據進入局部特征提取模塊中的動態自適應調整卷積層(Dynamics Adaptive Graph Conv,DAGraphConv)后,首先利用KNN算法構建以K個節點為一組的有向圖結構,然后提取圖結構中每個點的特征,通過殘差結構的深層卷積對點的特征進行學習,生成可適用不同語義區域點對的動態調整卷積核,并利用根據點的特征生成的卷積核處理圖結構中對應點對,獲得更精確的特征向量,最后使用最大池化進行聚合,得到局部特征向量。本文模型的局部特征提取模塊由2個DAGraphConv和2個GraphConv組成,局部特征的維度設置為(64,64,128,256)。局部特征提取模塊提取到的特征會被拼接,并通過MLP(1024)對特征向量進行更深層的學習。隨后,通過多層最大池化模塊,利用前一次最大池化丟棄的部分再進行多層最大池化,更高效的利用特征信息且減少冗余信息的產生,得到全局特征向量。最后,將得到的全局特征向量經過全連接層進行分類,獲得最終的分類結果。

圖3 點云分類模型總體架構

3.1 動態自適應圖卷積

在圖卷積神經網絡中,固定參數的卷積層僅能提取點云數據中片面的幾何信息,無法充分考慮組成圖結構的不同語義區域點所攜帶的特征信息。因此,使用圖卷積神經網絡提取特征存在一定程度的局限性。為此,本文提出了一種動態自適應圖卷積方法,該方法通過學習不同點對之間的獨特關系,形成動態自適應調整卷積核,以便精確提取每一點對的特征信息。過程如圖3所示,步驟描述如下:

首先通過KNN算法將無序的點云構成以K個點為集合的有向圖結構G=(V,E)。然后通過殘差結構的卷積層學習圖中點對特征關系,生成動態自適應調整卷積核,公式如下:

(5)

式中,(fi,fj)分別表示圖中心點特征及鄰居點特征;g(·)表示特征映射函數,將第一層卷積學習到的特征信息結果歸一化處理,再使用ReLU激活函數進行進一步優化,最終,通過將第二層卷積后的結果與初始傳入的特征進行拼接,得到動態自適應調整卷積核DAconvk。如圖4所示,通過動態自適應調整卷積核處理圖中點對,更新每對獨特點對間邊的權重,如式(6)所示:

(6)

圖4 DAGraphConv局部結構示意圖

最后通過最大池化函數聚合更新后每個圖的特征信息,得到局部特征,如式(7):

(7)

由于點的特征會隨著卷積層深度變化,每次提取局部特征后重新使用KNN算法更新圖結構,這樣可以讓信息在相似的結構之間更好的傳播,加快局部語義信息的學習能力。

3.2 多層池化

目前主流點云分類網絡模型采用一次最大池化聚合局部特征,以獲得全局特征集合,然后,這種方式存在局部特征利用率低的問題,因為只有少部分局部局部特征被用于全局特征的生成。另一種解決方式是將一次最大池化和平均池化得到的特征向量拼接,但這會產生冗余信息,影響分類精度。為了解決以上問題,本文提出了多層最大池化(Multi-layer Max Pooling,MMPooing)方法,該方法利用前一次最大池化丟棄的特征集合進行多層最大池化,可以更高效地利用經過復雜計算學習到的特征集合,同時降低了冗余信息的產生,提高點云分類模型的精度。具體步驟如下:

首先將每個卷積層提取的局部特征進行并聯,再經過MLP(1024)將特征維度提升到1024維,得到一個整體的高維特征,公式定義如式(8):

f=MLP1024[l1⊕l2⊕l3⊕l4]

(8)

式中,⊕為特征向量的拼接。然后將拼接的N×M高維特征矩陣作為輸入,分別使用多層的最大池化,第一層最大池化提取1×M維特征后,將剩下的(N-1)×M作為下一層最大池化的輸入,得到的F1,F2,…,Fn表示每層最大池化聚合后的特征矩陣,每層聚合函數對應的分類損失函數定義如式(9):

Li=Φ(yi,φ(Fi))

(9)

式中,yi表示真實標簽值;φ(·)表示soft-max激活函數;Φ(·)表示交叉熵損失函數。整體的分類損失定義如式(10):

(10)

僅僅將每個池化層得到的損失串聯或者相加并不能得到最優的實驗結果,本文引入了修正損失函數,如圖5所示。

圖5 多層最大池化結構圖

通過F2,F3,…,Fn的損失來修正F1,讓L1在其中保持是最小的值,維持網絡的穩定,修正損失函數定義如式(11):

LCR=|1-e(Li-(βi·γ)L1)|

(11)

(12)

公式(12)中n表示類別數量。在訓練早期,收集到的特征并不是十分可靠,修正損失函數獲得的收益不大,隨著迭代次數增加,每一層的預測逐漸穩定,修正損失函數發揮作用,保證Li>L1,第一次池化得到的特征信息保持最佳利用。

最后聯合修正損失函數以及分類損失函數,得到整體損失表達式:

Loss=ρLCR+(1-ρ)LC

(13)

其中ρ表示為可學習參數。

4 實 驗

4.1 實驗環境和參數

本文算法的實驗硬件環境為Intel Core i5-12400F、16 GB內存,GPU為NVIDIA GE-FORCE RTX 3060;軟件環境為Linux Ubuntu 18.04操作系統、CUDA 10.1、Pytorch 1.6、Python 3.7。

訓練和測試的實驗參數設置為:訓練迭代次數為250次,Batch Size設置為32或16,Batch Size的大小會影響顯存的消耗以及模型訓練的收斂速度,本文實驗中Batch Size會根據整體參數進行對應的調整。選擇隨機梯度下降法[17]作為網絡的優化器,將動量設置為0.9,采用余弦退火法[18]將學習率從0.1降低到0.001。每個全連接層后都加入了dropout層,比例設置為0.5,使用ReLU激活函數,防止訓練過程中出現過擬合。

經過訓練的模型在測試集中進行測試得出最終的總體準確率以及平均準確率,整體準確率Aoacc(overall accuracy)和平均準確率Amacc(mean accuracy)表示如下:

(14)

(15)

其中,TP為真陽性,表示實際為真,預測也為真的樣本數;FP為假陽性,表示實際為假但預測為真的樣本數;TN為真陰性,表示實際為假預測也為假的樣本數;FN為假陰性,表示實際為真但是卻預測為假的樣本數。

4.2 實驗數據集

為了方便文中提出的點云分類模型實驗數據與其他主流模型作對比,本文選擇在ModelNet40數據集[18]上進行訓練和測試。該數據集共有40個類別,含12311個CAD模型,其中有9842個物體用于訓練,2469個物體用于模型測試,該數據集中每個物體都有2048個點的三維坐標。其中部分實例展示在圖6中,圖中的飛機、鋼琴和汽車等三維模型特征明顯,在網絡模型中較容易被區分。但長椅和椅子的模型相似度較高,需要能提取更精確特征信息的網絡模型才能準確的區分。本文實驗僅使用采樣點的(x,y,z)坐標作為輸入,采用隨機旋轉、縮放以及逐點抖動的方式進行數據增強。

圖6 三維點云模型可視化

4.3 實驗結果與分析

4.3.1 分類結果分析

為了驗證本文提出算法的優勢,在ModelNet40數據集上與目前主流的點云分類模型DGCNN、PoinNet++、PointCNN等進行分類精度的對比,結果如表1所示。表中不同模型的輸入的數據形式不同,其中Voxels表示使用體素作為輸入,View表示使用多視圖作為輸入,Points+Noraml表示使用三維坐標和法線向量作為輸入,本文實驗僅使用點的三維坐標信息作為輸入。從實驗結果可以看到,本文提出算法整體的分類精度達到93.3 %,平均分類精度為90.4 %,相比于其他點云分類模型,本文模型在分類精度上有明顯提升。

表1 不同模型在ModelNet40數據集上的分類精度

對比使用多視圖或體素作為輸入的MVCNN和VoxNet模型,本文提出的方法直接將原始點作為輸入,可以更高效的提取點云特征,減少了將數據轉化為二維圖像或體素形式造成的信息丟失,使整體準確率有3.2 %~8.8 %的提升。相比于同樣使用點作為輸入的PointNet++和PointNet模型,本文模型不僅提取了每個單獨點的特征信息,還考慮到了點與點之間的關聯信息,加強了對局部特征信息的提取,在總體精度上有1.6 %~3.3 %提升。對比于DGCNN算法模型,本文模型考慮到不同語義部分點對差異性,使用固定參數卷積無法提取到準確的特征信息,本文中使用根據點對特征學習獲得的自適應卷積進行特征提取,進一步增強了提取局部特征的能力,使整體精度有0.7 %的提升。對比于增加了法向量信息作為輸入的SpiderCNN以及融入了注意力機制的Point Transformer和DTNet模型,本文模型沒有通過增加輸入或采用更復雜且更耗費計算資源的特征提取方法來提高分類精度,而是采用多層最大池化更高效的利用特征信息,提高分類精度的同時不會額外增加模型復雜度,讓整體精度有0.4 %~0.9 %的提升。通過對比實驗表明,本文提出的模型與經典模型或當前主流的點云分類模型比較,都有著突出的表現,充分說明本文模型的實際可行性。

4.3.2 消融實驗

為了驗證本文提出的動態自適應圖卷積及多層最大池化模塊在三維點云分類任務中的有效性,構建了4組模型的自身消融對比實驗進行驗證,使用不同模塊的研究結果如表2所示。

表2 不同模塊的消融實驗

表中“√”表示該方法被采用,“×”表示沒有采用該方法。模型A作為對比實驗的基礎模型,采用圖卷積提取特征,僅使用一次最大池化聚合特征信息。模型B在模型A的基礎上增加了本文提出的動態自適應圖卷積進行特征提取。模型C在模型A的基礎上增加了多層最大池化模塊,增加卷積層提取的局部特征的利用率。模型D在模型A的基礎上同時增加了動態自適應圖卷積和多層最大池化模塊。通過對比實驗可以得到,采用可以提取更精確局部特征的動態自適應圖卷積模塊后,模型的整體精度提高了0.3 %,平均精度提高了0.8 %。采用多層最大池化后,將提取的特征更高效的利用,模型整體精度提高了0.4 %。同時加入動態自適應圖卷積及多層最大池化模型,模型的整體精度提高了0.9 %,平均精度提高了2.1 %。實驗結果表明,本文提出的2個模塊均可明顯提升模型的分類精度。

4.3.3 池化層數測試

為了研究多層最大池化(MMPooling)模塊中使用不同層數對模型分類精度的影響,本文在ModelNet40數據集上分別使用(1、2、3、4)層最大池化,實驗結果如表3所示。

表3 最大池化層數測試

表中層數為1表示未使用多層最大池化模塊,僅用一次最大池化聚合特征,僅保留一組特征信息,無法充分利用經過復雜計算得到的局部結構信息。當使用最大池化層數增到2層,可以用于分類的特征信息增加,模型的整體精度提高了0.2 %。當采用3層最大池化聚合特征,進一步提高由復雜卷積計算得到的特征信息的利用率,對比僅使用一層最大池化,整體精度提高了0.7 %。但當使用的最大池化層數繼續增加,會造成聚合過多冗余信息,從而干擾最后的分類結果,無法提高模型的分類精度。實驗結果表明,使用最大池化的層數不同會對實驗結果產生影響,合適的層數可以顯著提高模型性能,實驗中三層效果最佳,因此本文使用三層最大池化。

4.3.4 超參數實驗

本文使用KNN算法構建有向圖結構,其中的超參數K值決定有向圖中節點個數,為了研究K大小對點云分類模型準確率的影響,本文設置了在同樣參數環境下,選擇不同K值(K為10、15、20、25、30、35)在ModelNet40數據集上進行測試,分類精度如圖7所示。由圖中的數據可以發現,當K值較小時,構建的有向圖中節點個數少,導致無法充分提取中心點與其相鄰節點的特征。但當K值過大時,鄰居節點的數量過多會產生大量冗余信息,局部領域的幾何結構被破壞,導致點云模型分類精度下降,同時還會增加網絡模型的訓練時間。當K=20時,本文模型的性能達到最優,因此一個合適的K值對模型的分類精度有至關重要的影響。

圖7 K值對分類精度的影響

4.3.5 模型魯棒性實驗

為了驗證本文網絡模型對稀疏輸入和遮擋問題的魯棒性,在ModelNet40數據集上采用隨機依次減少25 %的采樣點(1024、768、512、256)。稀疏三維點云模型可視化如圖8所示,圖8(a)不減少輸入點數,物體的結構特征可以充分地展現出來,圖中8(b)、(c)、(d)依次減少輸入點數,物體的結構逐漸模糊,因此需要網絡模型有更強提取特征信息的能力,才能在減少采樣點情況下可以準確分類。

圖8 稀疏點云可視化

實驗中使用表2中模型D與DGCNN等模型進行對比實驗,結果如圖9所示。從圖中可以看出,與同樣使用圖卷積的DGCNN模型比較,隨著采樣點數減少,本文模型的整體精度從93.3 %下降到91.5 %,下降了1.8 %,下降趨勢較平緩,DGCNN模型從92.6 %下降到47.1 %,下降趨勢較明顯。對比針對單個點提取特征PointNet和PointNet++網絡模型,減少采樣點數對獲取局部特征影響較小,PointNet++模型整體精度從91.7 %下降到89.9 %,PointNet模型整體精度從90.0 %下降到85.8 %,本文模型整體精度始終高于PoinNet和PointNet++模型,且隨著采樣點減少,分類精度差距逐漸增加。這說明在面對遮擋和稀疏點輸入問題時,能夠識別不同語義點信息和高效利用提取的局部特征可以使網絡具有較強的魯棒性。

圖9 采樣點密度對分類精度的影響

5 結 論

為了提高點云分類模型對不同語義區域點對特征的提取能力,本文提出了一種集改進圖卷積和多層池化的點云分類模型。該模型通過學習不同點的特征,生成可動態調整點對關系的卷積核,以處理圖結構中不同語義區域的點對,捕獲更精確的局部特征信息。此外,該模型使用多層最大池化來聚合高維特征以得到全局特征,從而更高效地利用局部特征,同時減少冗余信息的產生,提高模型的分類準確度。在公共數據集ModelNet40上的實驗結果表明,相較于目前經典的點云分類模型,本文模型的分類精度提高了0.7 %~3.3 %。消融實驗、超參數實驗以及逐漸減少采樣點數實驗進一步驗證了本文對圖卷積和池化層的改進可以提高點云分類任務的精度,并增加模型的魯棒性。然而,更有效的卷積層和池化層會使網絡模型更加復雜,模型的參數數量也會隨之增加。因此,未來的研究將注重于在不降低分類精度的前提下,實現模型更輕量化的目標。

猜你喜歡
池化卷積局部
面向神經網絡池化層的靈活高效硬件設計
基于Sobel算子的池化算法設計
卷積神經網絡中的自適應加權池化
局部分解 巧妙求值
基于3D-Winograd的快速卷積算法設計及FPGA實現
非局部AB-NLS方程的雙線性B?cklund和Darboux變換與非線性波
從濾波器理解卷積
基于卷積神經網絡和池化算法的表情識別研究
基于傅里葉域卷積表示的目標跟蹤算法
局部遮光器
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合