朱天曉,閆豐亭
(上海工程技術大學 電子電氣工程學院,上海 201620)
隨著深度傳感器和相關掃描軟件的發(fā)展,三維點云數(shù)據的類型和數(shù)量顯著增長。點云數(shù)據被廣泛應用于定位繪圖[1]、醫(yī)學影像[2]等領域,因此基于三維點云的分類、分割等技術的應用需求也大大提升。傳統(tǒng)的點云分類方法往往需要手工設計特征提取方式,為了有效識別點云,基于數(shù)據驅動的深度學習方法[3]被提出用于點云特征學習。
Qi等[4]提出了一種深度學習網絡PointNet,直接處理點云數(shù)據,有效解決了點云無序性問題。該方法使用T-Net模塊對點云數(shù)據進行仿射變換,然后使用多層感知機(Multilayer Perceptron,MLP)對點云每個點進行特征提取,并使用最大池化函數(shù)提取全局特征。由于PointNet只對每個點提取特征,沒有定義點云鄰域,因此該方法只考慮了點云的全局特征,沒有考慮局部特征。PointNet++[5]是對該方法的改進,該方法通過對點云進行采樣并使用球查詢建立鄰域,在每個鄰域使用PointNet提取局部特征并與全局特征相結合,取得了更好的效果。Li等[6]提出了PointCNN,引入 X-Conv模塊實現(xiàn)無序點云的規(guī)則化,使常規(guī)的卷積操作可以應用于點云數(shù)據。PointCNN證明了特征提取結構對點云學習的重要性,獲得了較高的分類準確率。但是該方法無法有效聚合全局特征,魯棒性較差。顧礫[7]等將PointCNN與MVCNN[8]相結合,提出了一種基于多模態(tài)特征融合的三維點云分類方法。該方法將點云數(shù)據與圖像數(shù)據作為輸入,對PointCNN 提取的點云特征與CNN 提取的圖像特征進行加權融合,從而得到最終分類結果。該方法使用ResNext101[9]作為CNN 模型,參數(shù)量較大,并且只能選擇一個固定視圖的二維圖像作為輸入,無法適用于純點云數(shù)據,泛化性不高。Wang等[10]提出了動態(tài)圖卷積神經網絡(Dynamic Graph CNN,DGCNN),在原始點云空間中構造圖結構用于特征提取,其核心模塊邊卷積可以動態(tài)聚合鄰域邊的特征。但是DGCNN會構造很多無意義的圖結構,計算復雜度較高,同時該方法在稀疏點云上性能下降嚴重,魯棒性不高。
為了提高點云深度學習分類模型對有效特征的提取能力,增強模型魯棒性,本文提出了一種結合偏移自注意力機制和殘差連接的點云分類網絡。本文在PointCNN方法的基礎上做出改進,引入了偏移自注意力模塊,更好地關注于X-Conv模塊輸出的有效特征。引入殘差網絡的思想,構造殘差連接進行特征融合,可以有效利用點云的多尺度特征。經分類實驗驗證,本文方法在ModelNet40[11]數(shù)據集上取得了較好的分類效果,分類準確率高于現(xiàn)有的大多數(shù)方法。經魯棒性實驗驗證,本文方法對于稀疏點云和噪聲點云有較好的適應性,相比于PointCNN,魯棒性有了顯著提升,并且優(yōu)于其他對比方法。
點云數(shù)據具有無序性,若不考慮點云的顏色、法向量等因素,只考慮坐標,則點云數(shù)據可以用一個n×3的矩陣表示。對n個點進行讀入,一共有n!種組合情況。要想在點云數(shù)據上使用卷積操作,必須解決點云無序性問題。圖1中i與ii是一組讀入順序相同的點,但是坐標不同;ii與iii是一組坐標相同的點,但是讀入順序不同。因此,點云上理想的卷積操作需要提取出i、ii不同的特征,提取出ii、iii相同的特征。
圖1 點云無序性
PointCNN[6]可以一定程度上解決點云的輸入順序對卷積操作的影響,提出的X-Conv模塊能將特定輸入順序的點云數(shù)據轉換為與順序無關的特征,PointCNN結構如圖2所示。
圖2 PointCNN結構
X-Conv模塊使用最遠點采樣(Farthest Point Sampling,FPS)和K鄰近(K-nearest neighbor,KNN)算法計算點云鄰域,并將鄰域內點的坐標變換到該點的局部坐標系。通過 MLP學習得到變換矩陣X,對特征矩陣進行變換處理,可以對變換后的特征矩陣應用典型的卷積運算。X-Conv模塊使得點云數(shù)據變少,但每個點都包含了更豐富的高維信息。同時X-Conv模塊還引入了膨脹卷積的思想,降低點云數(shù)目的減少對特征提取的影響,可以保持網絡的深度和感受野的大小。X-Conv模塊中參數(shù)N為輸出點數(shù),C為輸出特征維度,K為鄰域大小,D為膨脹系數(shù),具體計算過程將在3.1節(jié)描述。
自注意力(Self Attention,SA)機制由Vaswani 等[12]提出,并迅速在自然語言處理領域取得了巨大進展。為了增加感受野大小,Wang[13]等將自注意力機制引入計算機視覺領域,使用的SA模塊結構如圖3所示。
圖3 自注意力模塊
以2D圖像為例,給定一個特征矩陣Fin∈C×H×W,自注意力機制首先通過線性變換得到查詢矩陣、鍵矩陣和值矩陣,Q,K,V∈C′×M,M=H×W。自注意力矩陣由下式計算得出:
A=(a)i,j=Softmax(Q·KT)
(1)
其中ai,j是第i個和第j個元素之間的注意力權重。最后可得注意力特征:
FSA=A·V
(2)
自注意力機制作為一種強大的全局特征學習機制,已經發(fā)展出了多種變體[14],在很多深度學習網絡中都有應用[15]。由于SA模塊中的查詢、鍵和值矩陣都是由輸入特征Fin線性變換得到的,它們都是順序無關的。因此,整個自注意力的計算過程是置換不變的,適用于點云數(shù)據。
隨著卷積神經網絡的深度加深,網絡將會面臨性能退化的問題。針對該問題,He 等[16]提出的殘差網絡(Residual network,ResNet),引入了殘差連接,讓輸入特征可以跨越多個卷積層傳播,同時反向傳播的梯度也可以跨越多層傳播,有效避免了梯度消失現(xiàn)象,一定程度上解決了因深度加深引起的網絡性能退化的問題。ResNet中提出的兩種殘差模塊如圖4所示。
圖4 殘差模塊
模塊(a)的公式表達為H(X)=F(X)+X,因為該模塊的輸入、輸出的維度相同,因此短連接的輸出為X。模塊(b)的公式表達為H(X)=F(X)+G(X),該模塊的輸入、輸出的維度不同,因此短連接的輸出為G(X),主要作用是變換特征矩陣的大小與維度,通過1×1卷積實現(xiàn)。
王江安等[17]在DGCNN的基礎上,引入殘差連接,提出了Linked-DGCNN。該方法通過增加卷積層數(shù),獲得更深層的點云特征;同時引入殘差連接,連接不同網絡層的輸出特征。該方法獲得了較高的分類準確率,表明在點云網絡中引入殘差連接有利于提升網絡性能。
本文對PointCNN網絡進行改進,提出了一種結合偏移自注意力機制和殘差連接的深度學習網絡,結構如圖5所示。在X-Conv模塊后引入了偏移自注意力模塊(Offset Attention,OA),可以更好地關注于特征矩陣的有效區(qū)域。同時引入了殘差網絡的思想連接不同層次特征進行融合,可以有效利用點云的多尺度特征。
圖5 本文網絡結構
X-Conv模塊是PointCNN[6]的核心模塊,可以一定程度上實現(xiàn)無序點云的規(guī)則化,使常規(guī)的卷積操作可以應用在點云數(shù)據上。X-Conv模塊結構如圖6所示。
圖6 X-Conv模塊
X-Conv模塊的輸入數(shù)據為坐標矩陣Pin=[p1,1,…,p1,N1]T和特征矩陣Fin=[f1,1,…,f1,N1]T;p1,i為代表輸入數(shù)據第i個點的空間坐標(x,y,z),p1,i∈3;f1,i代表第i個點的特征,f1,i∈C1;N1為輸入點個數(shù),C1為特征維度。
第一層X-Conv模塊會將輸入的坐標矩陣Pin作為特征矩陣Fin輸入MLP(其他層的X-Conv模塊會將特征矩陣Fin輸入MLP),學習生成新的特征矩陣F:
F=MLP(Fin)
(3)
對坐標矩陣Pin使用FPS計算采樣坐標矩陣P′,采樣點數(shù)為P:
P′=FPS(Pin,P)
(4)
X-Conv模塊引入膨脹卷積的思想,使用KNN算法對矩陣P′、Pin計算膨脹鄰域,在膨脹鄰域內采樣選擇最終鄰域的索引Index,鄰域大小為K,膨脹系數(shù)為D,膨脹鄰域大小為K×D:
Index=KNN(P′,Pin,K,D)
(5)
然后根據Index對坐標矩陣Pin和特征矩陣F進行采樣、變換得到局部矩陣Plocal和Flocal。對Flocal使用卷積和MLP學習得到變換矩陣X:
X=MLP(Conv(Plocal))
(6)
其中,Conv為卷積算子。
對矩陣Plocal使用MLP進行學習,同時將結果與Flocal進行拼接;將拼接矩陣與變換矩陣X相乘,輸入卷積得到X-Conv模塊的輸出特征:
Fout=Conv(Cat(MLP(Plocal),Flocal)·X)
(7)
其中,Conv為卷積算子,Cat為拼接算子。
最后X-Conv模塊將P′作為Pout,并與Fout以out的形式一一對應輸出。
在自注意力機制的基礎上,Guo等[18]提出了一種改進的偏移自注意力模塊(Offset Attention,OA)。OA模塊計算注意力特征與輸入特征的差值,將其與輸入特征相加,作為輸出特征。
本文模型引入了4個OA模塊,在每個X-Conv模塊后都連接了OA模塊,其維度分別為48、96、192和384。OA模塊結構如圖7所示。
圖7 偏移自注意力模塊
Q、K、V分別為輸入特征Fin∈N×de通過線性變換生成的查詢矩陣、鍵矩陣和值矩陣:
(Q,K,V)=Fin·(Wq,Wk,Wv)
(8)
其中,Q,K∈N×da,V∈N×de,Wq,Wk∈de×da,Wv∈de×de。Wq,Wk和Wv是共享的可學習的變換矩陣,da是查詢矩陣和鍵矩陣的維度,de是值矩陣的維度。
然后計算查詢矩陣和鍵矩陣的乘積,得到注意力權重:
(9)
對注意力權重進行Softmax和l1正則化處理得到A=(α)i,j:
(10)
(11)
式(10)中,exp是以自然常數(shù)e為底的指數(shù)函數(shù)。將注意力權重與值矩陣相乘得到自注意力特征:
Fsa=A·V
(12)
最后,將輸入特征Fin與注意力特征Fsa相減,將差值輸入 LBR 網絡(分別為Linear、BatchNorm和ReLU層),再與輸入特征Fin相加,得到整個OA層的輸出特征Fout:
Fout=OA(Fin)=LBR(Fin-Fsa)+Fin
(13)
OA模塊對點云數(shù)據有較好的適應性,相比于SA模塊,更有助于提升模型的分類準確率。本文將在4.5節(jié)中證明該模塊的有效性。
本文引入的OA模塊中包含了可學習的LBR 層,相當于增加了模型深度。因此,可以引入殘差連接,讓輸入特征跨越多個X-Conv模塊傳播,對不同尺度的特征進行融合。
為了有效利用X-Conv模塊和OA模塊學習到的特征,可以在OA模塊上建立殘差連接。本文模型包含4個OA模塊,每個模塊的輸出特征數(shù)目和特征維度均不相同,特征數(shù)目分別為1024、384、128、128,特征維度分別為48、96、192、384。最多可以引入3個殘差連接,并且需要使用1×1卷積Conv1d模塊對特征進行數(shù)目和維度的對齊。
可以使用的Conv1d模塊分別為Conv1d(48,384,stride=8)、Conv1d(96,384,stride=3)、Conv1d(192,384,stride=1)。經4.6節(jié)對比實驗驗證,使用后兩個Conv1d模塊構建殘差連接時,模型分類效果最好。
本文的實驗環(huán)境為Ubuntu 18.04 LTS,CPU為Intel Xeon Silver 4210R @ 2.40 GHz,GPU配置為NVIDIA GeForce GTX 3090,實驗框架為Jittor[19],Python版本為3.8。
為了驗證本文模型的分類效果,本文在ModelNet40[11]數(shù)據集上進行訓練和評估。ModelNet40有40個類別共計12311個CAD模型,使用9843個物體作為訓練集,2468個物體作為驗證集,該數(shù)據集中每個物體包含1024個點的三維坐標,即輸入數(shù)據是維度為1024×3的矩陣。對ModelNet40中部分點云數(shù)據進行可視化處理,如圖8所示。
圖8 點云數(shù)據
在分類實驗中,本文使用隨機梯度下降(SGD)進行優(yōu)化,將批處理大小設為32,動量設為0.9,初始學習率設為0.02,學習率調整策略為MultiStepLR,采用Soft Cross Entropy Loss損失函數(shù)作為損失函數(shù)。對訓練數(shù)據進行了一定程度的隨機平移和放縮,實現(xiàn)對數(shù)據的增強。整個模型一共訓練了300輪,使用總體分類準確率(overall accuracy,oAcc)對分類模型性能進行評估。
本文將PointNet、PointCNN、DGCNN等模型在ModelNet40數(shù)據集上的測試結果加入對比,如表1所示。實驗結果表明,本文模型的oAcc為92.9 %,相比與其他網絡模型,本文模型的獲得了最高的oAcc??梢姳疚哪P拖啾绕渌P驮贛odelNet40 數(shù)據集上具有更好的分類效果。
表1 分類實驗準確率
圖9和圖10分別給出了本文分類模型的訓練準確率曲線和訓練損失曲線。從圖中可以看出,隨著迭代次數(shù)的增加,訓練準確率不斷提高,訓練損失不斷下降。當?shù)螖?shù)達到250次左右時,訓練準確率和訓練損失基本穩(wěn)定,網絡趨于收斂,說明網絡中的參數(shù)已經達到最優(yōu)。
圖9 訓練準確率曲線
圖10 訓練損失曲線
為驗證引入的OA模塊以及殘差連接的有效性,本文對所提模型進行了消融實驗,實驗設置與4.3節(jié)相同。
消融實驗通過分別刪除OA模塊以及殘差連接驗證其對于分類任務的有效性。從表2可以看到,初始PointCNN的oAcc為92.2 %。當增加OA模塊時,相較原模型oAcc提升了0.5 %。當增加殘差連接時,相較原模型oAcc提升了0.1 %,由于沒有增加網絡深度,所以只增加殘差連接時分類效果提升不明顯。當同時增加OA模塊和殘差連接時,相較原模型oAcc提升了0.7 %。實驗結果表明同時增加OA模塊和殘差連接對于模型分類性能有著明顯的提升作用,主要原因為OA模塊可以更好地關注于有效特征,同時殘差連接可以有效利用點云的多尺度特征。
表2 消融實驗準確率
本文在PointCNN基礎上引入OA模塊,該模塊在SA模塊上進行了改進。為驗證SA模塊、OA模塊的分類效果,本文設置了注意力模塊實驗,分別在PointCNN和引入殘差連接的PointCNN上進行對比實驗,實驗設置與4.3節(jié)相同。
實驗結果如表3所示??梢?引入OA模塊的PointCNN的準確率比引入SA模塊的oAcc高0.2 %,引入OA模塊和殘差連接的PointCNN的oAcc比引入SA模塊和殘差連接的準確率高0.4 %??梢奜A模塊和殘差連接的適應性優(yōu)于SA模塊,更有利于提升分類效果。
表3 引入不同注意力模塊的準確率
同時可見,引入SA模塊和殘差連接的PointCNN的oAcc與只引入SA模塊的oAcc相近。其原因是SA模塊沒有可學習的LBR 層,相當于沒有增加網絡深度,所以引入殘差連接時對于提升oAcc效果不明顯。因此,引入OA模塊和殘差連接的方案更為合適,同時其分類準確率也更高。
為有效利用不同層次OA模塊的輸出特征,本文模型在OA模塊上引入殘差連接。本文模型包含4個OA模塊,最多可以引入3個殘差連接,如表4所示。
表4 殘差模塊
為確定殘差連接添加的最優(yōu)數(shù)目,本文在ModelNet40數(shù)據集上進行對比實驗,引入數(shù)目分別為1、2、3的殘差連接,實驗設置與4.3節(jié)相同,實驗結果如表5所示??梢娫谝隦es1、Res2時分類準確率最高,為92.9 %,只引入Res1時分類準確率為92.8 %,引入全部3個殘差連接時分類準確率為92.7 %。為了進行特征維度對齊,Res3模塊的步長設置為8,步長過大,不利于特征的提取。因此本文最后引入的殘差連接為Res1、Res2。
表5 引入不同殘差連接的準確率
驗證本文模型對于點云分類的魯棒性,本文在ModelNet40數(shù)據集上測試稀疏點云和噪聲點云的分類效果。
在稀疏點云實驗中,點云的采樣點數(shù)量分別被設置為896、768、640、512、384,本文將原始點云與部分稀疏點云進行可視化對比,如圖11所示。
圖11 稀疏點云數(shù)據
在采樣點數(shù)分別為896、768、640、512、384的稀疏點云數(shù)據上,本文模型的oAcc分別為92.4 %、91.9 %、91.3 %、90.2 %、88.4 %??梢?隨著采樣點數(shù)的急劇減少,本文模型的oAcc并沒有大幅度下降。相比于PointCNN,本文模型在稀疏點云上的oAcc平均提升了2.4 %。
本文與PointNet、PointCNN、PointConv、DGCNN在稀疏點云數(shù)據上的分類效果進行對比,結果如圖12所示??梢婋S著采樣點數(shù)的減少,PointConv和DGCNN的oAcc大幅度下降,PointCNN的oAcc也明顯下降。由于PointNet沒有定義點云鄰域,因此oAcc下降幅度很小。本文模型的oAcc也有一定下降幅度,但oAcc均高于其他對比方法??梢?本文模型對稀疏點云具有較好的適應性,魯棒性較高。
圖12 不同網絡抗稀疏性對比
在噪聲點云的實驗中,通過在初始點云中引入噪聲來生成噪聲點云,分別引入了均值為0,標準差分別為0.005、0.01、0.015、0.02、0.025、0.03的高斯噪聲。本文將高斯噪聲標準差定義為噪聲強度,并對部分噪聲點云進行可視化對比,如圖13所示。
圖13 噪聲點云數(shù)據
在噪聲強度分別0.005、0.01、0.015、0.02、0.025、0.03的噪聲點云上,本文模型的oAcc分別為92.5 %、91.8 %、90.8 %、88.4 %、81.8 %、72.9 %。相比于PointCNN,本文模型在噪聲點云上的oAcc平均提升了11.6 %。
與PointNet、PointCNN、PointConv、DGCNN在噪聲點云數(shù)據上的分類效果進行對比,結果如圖14所示??梢婋S著噪聲強度的增加,PointCNN和PointConv的oAcc大幅度下降,本文模型和DGCNN的oAcc也下降了一定幅度。在噪聲強度為0.005至0.02時,本文模型的oAcc高于其他對比方法;在噪聲強度為0.02至0.03時,本文模型的oAcc基本與DGCNN持平,高于PointCNN、PointConv,但低于PointNet。PointNet由于沒有定義點云鄰域,只對每個點使用MLP進行特征提取,所以抗噪性較好,oAcc下降幅度很小。
圖14 不同網絡抗噪性對比
經過稀疏點云和噪聲點云的魯棒性實驗驗證,結果表明本文網絡的魯棒性好于PointCNN、PointConv、DGCNN方法,主要原因是引入了偏移自注意力模塊,可以有選擇性地對有效特征進行加強,同時引入的殘差連接可以融合不同尺度的特征,減少信息的損失。
為了提高點云深度學習分類模型的特征提取能力,增強模型魯棒性,本文提出了一種結合偏移自注意力機制和殘差連接的點云分類網絡。分類實驗結果表明,本文網絡在ModelNet40分類數(shù)據集上達到了較高的分類準確率。同時本文消融實驗表明,引入偏移自注意力機制和殘差連接是有效的,可以提高點云分類準確率。本文魯棒性實驗表明,本文模型對稀疏點云和噪聲點云有較好的適應性。本文網絡相比于PointCNN,在稀疏點云上的總體分類準確率提升了2.4 %,在噪聲點云上提升了11.6 %;與PointNet、PointConv、DGCNN網絡相比,本文模型也有較高的分類準確率,表明本文模型魯棒性較好。
下一步的工作是完成點云分割任務,PointCNN分割模型是基于編解碼架構的,參數(shù)量較大,如何設計一個輕量級的結合注意力機制的分割模型是接下來的研究重點。