梁志強,陳春梅,陳妍潔,陳國棟,劉桂華
(西南科技大學信息工程學院,四川 綿陽 621000)
深度學習技術已經成為計算機視覺中強大的數據處理工具,成為分類、分割和檢測等任務的首選技術[1]。點云是三維空間中的點的集合,是激光傳感器中重要的數據格式之一。深度學習在點云上的應用,對VR[2]/AR[3]、自動駕駛[4]和三維場景等研究有重要的意義。然而點云數據本身的非結構化特點,導致其特征提取的困難,因此對點云數據的分類和分割極具挑戰性。
早期的點云深度學習方法都是對點云的非直接處理,通過將其轉換為體素或多視圖的方式間接處理。Maturana[5]等人提出的VoxNet是將三維卷積神經網絡應用于體素化形狀的先驅,通過將3D點投影到32×32×32的三維網格上,再由三維CNN來處理。VoxNet相較于傳統人工方法精度有了明顯的提高,然而該方法受體素分辨率影響很大,當體素分辨率增長時,VoxNet的空間復雜度和時間復雜度會隨之呈三次方增長;而當體素分辨率過低時,會導致VoxNet識別精度降低。Su[6]等人提出的多視圖卷積神經網絡MVCNN是從點云中采集80個視圖,并將其投影到二維空間,再由二維CNN處理。然而該方法會造成點云數據信息的大量丟失。鑒于上述對點云數據間接處理存在的問題,對點云數據的直接處理逐漸成為點云深度學習的研究熱點。
Qi[7]等人提出的點云神經網絡PointNet,開啟了對點云數據直接處理的序幕。該網絡通過學習一個空間轉換網絡T-Net,生成一個空間轉換矩陣,使點云轉換到一個更有利于分類分割的方向,以解決點云的旋轉性問題;通過使用最大池化函數,以解決點云的無序性問題,然而PointNet在特征提取過程中僅考慮點云的全局特征,丟失了點云中重要的局部特征。為解決這一問題,Qi[8]等人在PointNet的基礎上提出了PointNet++,該網絡通過在PointNet特征提取之前劃分局部點云區域的方法引入局部特征,然而,該方法本質上和PointNet一樣,處理的是局部區域的每一個點,依然忽視了點與點之間局部關系。Li[9]等人提出的SO-Net使用自組織映射(SOM)選擇代表性的點,構建點云的空間分布,再進行分層的特征提取,其底層的特征提取使用的仍然是PointNet,所以依然缺少點云中的局部信息。鑒于圖卷積在二維圖像處理取得的優異表現,Wang[10]等人提出了動態圖卷積神經網絡DGCNN通過計算每一個點與相鄰點之間的邊緣特征,從而得到點與點之間的局部信息,該網絡較好的獲取了點云的局部特征,然而DGCNN對于稀疏點云的輸入不能夠有效識別。考慮到點云數據中噪點對網絡性能的影響,Yan[11]等人提出的PointASNL通過自注意力機制更新點云的位置和特征信息,以減弱噪點的影響。最近TransFormer在計算機視覺的應用越來越多,Guo[12]等人提出的PCT是在三維點云深度學習中TransFormer的應用之一,其在點云分類和分割的任務上取得了較高的精度。
根據上述分析,為解決現有網絡不能夠有效地提取點云局部特征,導致點云分類和分割精度較低的問題,本文提出一種高低維雙局部特征融合的點云分類分割網絡。通過圖卷積與注意力機制分別提取點云的低維局部特征與高維局部特征,以彌補現有網絡無法充分提取點云局部特征的缺點;同時使用多特征融合學習以提高網絡的性能。實驗表明,該方法能夠有效提高點云的分類和分割的精度,為后續自動駕駛等研究提供了堅實的技術基礎。
本文網絡主要由圖采樣模塊和注意力模塊組成,圖采樣模塊由圖卷積和采樣兩部分組成,圖拉普拉斯算子是圖卷積部分特征提取的關鍵;注意力模塊由圖拉普拉斯算子在自注意力機制上的應用——偏移自注意力機制組成。
圖拉普拉斯算子,與數學分析中拉普拉斯算子起到的作用是一樣的。拉普拉斯算子是N維空間中的一個二階微分算子,其計算可簡單的表示為(以二維空間為例):
(1)
=f(x+1,y)+f(x-1,y)-2f(x,y)+f(x,y+1)+
f(x,y-1)-2f(x,y)
=f(x+1,y)+f(x-1,y)+f(x,y+1)+
f(x,y-1)-4f(x,y)
(2)
公式(1)是拉普拉斯算子在笛卡爾坐標系下的表示法,公式(2)是公式(1)中二階偏導數轉化的離散的導數形式。如圖1所示,當f(x,y)受到擾動之后,其可能變為相鄰的f(x+1,y),f(x-1,y),f(x,y+1),f(x,y-1)之一,而拉普拉斯算子得到的是對點f(x,y)進行微小擾動后可能獲得的總增益。

圖1 拉普拉斯算子圖形化Fig.1 Graphical Laplace operator
就圖拉普拉斯算子而言,由于圖具有N個節點,因此f=(f1,f2,…,fN)。在二維空間中f(x,y)為函數f在節點(x,y)處的值,而在圖空間中,fi為函數f在圖中節點i處的值,已知拉普拉斯算子得到的是對點進行微小擾動后可能獲得的總增益,在圖空間中就是任意一個節點i變換到節點j所帶來的總增益,其中j∈Ni,Ni表示節點i的鄰域節點。如公式(3)所示,考慮圖中相鄰節點之間邊的權值Wij則有:

=difi-wif
(3)
其中,di是節點i的加權度;wi為節點i與所有鄰域節點的權重組成的行向量;f為所有鄰域節點的值構成的列向量。對于所有的N個節點而言:

=diag(di)f-wf
=(D-W)f
=Lf
(4)
綜上所述,D-W就是拉普拉斯算子在圖空間上的應用——圖拉普拉斯算子。
在點云數據中,遵循圖拉普拉斯算子的原則,視點云中每一個點為圖中的節點,并為每一個節點點與其鄰居點生成圖的有向邊。有向圖G由頂點V和邊E組成:G=(V,E),V={1,…,n}?RD,E?V×V。本文采用一種基于空間的圖卷積神經網絡,首先利用K近鄰[13](KNN)算法構建一個局部有向圖G,如圖2所示。

圖2 局部有向圖GFig.2 Local digraph G
在局部有向圖G中,每一個點Xi都是一個中心節點,計算中心節點與其K個鄰居點之間的邊ei,即:
(5)
其中,xij為中心節點Xi的一個鄰居點;eij為xij到其中心節點Xi的有向邊。本文同時考慮點云的全局特征和局部特征,定義邊的特征hθ(xi,eij):xi考慮了點云自身即點云的全局信息;eij=xij-xi考慮了點云中點與點之間的局部信息。其中hθ用來完成RD×RD→RD′的特征學習,是一個具有一組可學習參數θ的非線性函數。最后,每一個中心節點的輸出特征Xi,如公式(6)所示,其中∑為對稱聚合函數,本文采用最大池化函數作為對稱聚合函數:
(6)
圖采樣模塊主要由圖卷積和采樣兩部分組成,如圖3所示。在PointNet++中,特征提取僅通過li到li+1的多層感知機MLP實現,缺少對點云數據局部特征的提取過程,通過在li步驟前添加圖卷積li-1,以實現更加細粒度的特征提取與融合。具體過程如下:首先通過上述圖卷積網絡對輸入數據中每一個點進行特征更新,使每一個點都具備局部信息,為緩解因對大量點云數據編碼而導致計算量過大,消耗過多GPU資源的問題,通過采用最遠點采樣(FPS)選擇一組關鍵點,以代表整體輸入信息。由于同一個點xi在不同層之間的特征是不一樣的[14],對FPS采集到的具有局部信息的關鍵點,使用K近鄰(KNN)算法進行分組,構建局部點云區域,通過多層感知機(MLP)對每一個局部點云區域進行特征的再次更新,以實現更加細粒度的特征提取與融合。

圖3 圖采樣模塊Fig.3 Image sampling module
注意力機制最初被用于機器翻譯,現在已成為深度學習的一個重要概念,是神經網絡的重要組成部分[15]。注意力機制主要分為:硬注意力機制、鍵值對注意力機制、多頭注意力機制、自注意力機制。本文以自注意力機制作為基礎注意力機制,遵循Attention is all you need[16]原則,輸入Fin∈RN×de經過線性變換產生Q,K,V,分別為查詢、鍵和值:
(Q,K,V)=Fin·(Wq,Wk,Wv)
Q,K∈RN×da,V∈RN×de
Wq,Wk∈Rde×da,Wv∈Rde×de
(7)
其中,Wq,Wk和Wv是線性變換層共享學習到的;da是查詢和鍵的維度,在本文網絡中,設置da為de/4,即輸入數據維度的1/4。
首先,通過矩陣點積計算注意力權重A,即:
(8)

自注意力機制的輸出Fsa是值向量V和對應的注意力權重A的加權和:
Fsa=A·V
(9)
由于查詢,鍵和值向量以及輸入特征Fin是相互獨立的,因此整個網絡很好的解決了點云無序性這一關鍵問題。如公式(10)所示,使用自注意力機制的輸出Fsa和輸入特征Fin組合產生輸出特征Fout。其中LBR是由Linear,BatchNorm和ReLU組成的特征提取層。
Fout=SA(Fin)=LBR(Fsa)+Fin
(10)
鑒于圖拉普拉斯算子在DGCNN中的優異性能,本文注意力模塊采用和PCT[12](Point Cloud Transformer)一樣的偏移自注意力,如圖4所示。偏移自注意力機制相較于自注意力機制而言,在輸入特征提取層LBR之前,使用輸入特征和自注意力機制的輸出之差Fin-Fsa替換原始自注意力機制中的輸入Fsa:
Fout=OA(Fin)=LBR(Fin-Fsa)+Fin
(11)

圖4 偏移自注意力機制Fig.4 Offset self attention mechanism
通過偏移自注意力機制,本文網絡可以有效提取點云之間基于語義信息的高維局部特征。具體如公式(12)所示,其中I-A就是圖拉普拉斯算子在自注意力機制上的應用。
Fin-Fsa=Fin-AV=Fin-AFinWv≈Fin-AFin=(I-A)Fin≈LFin
(12)
本文網絡主要由圖采樣模塊和注意力模塊組成,其中圖采樣模塊主要用來提取點云基于位置信息的低維局部特征;自注意力模塊主要用來提取點云基于語義信息的高維局部特征。整體網絡結構,如圖5所示。

圖5 高低維雙局部特征融合的點云深度學習網絡框架Fig.5 Deep learning network framework of point cloud based on double local features fusion of high-dimensional and low-dimensional
輸入點云為P∈RN×3,N為點云的個數,3為每個點的維度。整個網絡由兩個分支結構組成:分類和分割。分類分支:首先進行特征升維,將輸入點云維度從3升至64,通過第一個圖采樣模塊輸出N1×128(N1=512)的特征信息;經過第二個圖采樣模塊得到N2×256(N2=256)的特征信息,再將此低維局部特征信息輸入到兩層級聯的自注意力模塊中,得到高維的局部特征信息N2×512,將得到的低維局部特征信息和高維局部特征信息融合得到雙局部特征信息N2×768,最后經過最大池化(MaxPool)和平均池化(AveragePool)輸出1×2048的特征信息,使其既包含低維和高維的局部特征信息又包含全局特征信息,最后使用三個全連接層(512,256,40),得到輸入點云屬于40個類別的得分情況。分割分支:首先經過一個可訓練的空間轉換網絡,使輸入點云的坐標對齊,更有利于點云分割。由于點云分割相較于分類任務對點云特征的要求更高,因此該分支沒有采樣模塊。和大多數點云分割網絡一樣,點云部件分割中,需要將每個點的特征信息同池化的特征信息相結合,同時加入編碼為64維的one-hot編碼,最后使用三個全連接層(512,256,50),得到輸入點云中每一點屬于50個類別的得分。
本文網絡的訓練和測試實驗參數設置如下:學習率為0.001,迭代次數為250,batchsize為32,且使用Adam優化器。配置的GPU型號為GeForce RTX 2070 Super,實驗軟件環境為Ubuntu系統、python3.7、CUDA10.0,通過python平臺下的Pytorch框架進行網絡的實現。
分類實驗在ModelNet40分類數據集進行,ModelNet40有40個物體類別,共計12311個CAD模型。表1列出了本文網絡和現有網絡的總體分類精度和平均分類精度。

表1 ModelNet40數據集上的分類實驗結果Tab.1 Experimental results of classification on ModelNet40 Dataset
從表1可以看出,無論是平均分類精度還是總體分類精度,本文網絡都達到了較好的性能:在平均分類精度方面,本文網絡比PointNet高出4.1 %,比DGCNN高出0.3 %,比PCT高出0.1 %;在總體分類精度方面,本文網絡比PointNet高出4.2 %,比PointNet++高出2.9 %,比DGCNN高出0.6 %,比PCT高出0.7 %。
圖6和圖7分別給出了DGCNN、PCT和本文網絡在ModelNet40數據集上的損失和精度曲線。從圖中可以看出,當迭代次數逐漸增加的時候,本文網絡相較于DGCNN、PCT兩種網絡而言,損失下降的更快且更加平穩;精度上升的更快并且精度更高。

圖6 分類損失曲線Fig.6 Classification loss

圖7 分類精度曲線Fig.7 Classification accuracy curve
相比于目標分類,部件分割更加考驗網絡性能,其目的是能夠給出已知點云模型中每一個點所屬零部件的類別標簽得分,如飛機,可以分出機身、機翼和機尾三個部件。部件分割實驗在ShapeNet分割數據集進行。整個ShapeNet分割數據集包含168881個模型,共16個類別,每一個模型由2~5個部件組成,注釋了50個部件標簽。部分模型的分割結果如表2所示。采用分割任務中常用的評估指標mIoU[17],mIoU是特定類別中所有形狀的并集的平均交集即平均交并比。
如表2所示,可以看出,本文網絡的mIoU高出PointNet 2.5 %,高出PointNet++1.1 %,高出DGCNN 1.0 %,和PCT持平,然而在aero、earphone和guitar等的8個類別上,都具有更高的mIoU。
為了直觀展示本文網絡在部件分割任務上,各個類別上的分割效果,以mIoU提高的8個類別為例,如圖8所示,上面一行是實際分割效果(Ground Truth),下面一行是本文網絡的分割效果。

表2 部件分割精度Tab.2 Component segmentation accuracy

圖8 部分零件分割可視化Fig.8 Visualization of partial part segmentation
根據表2所列,laptop和rocket分別是現有分割網絡效果最好和最差的兩個類別,在圖9進一步給出了本文網絡在這兩種類別的分割效果和實際分割效果的對比。從圖中可以看出,laptop分割效果和實際效果已經基本無法通過肉眼識別出來;rocket分割效果和實際效果相差比較大,其中方框框出了與實際效果不同的地方,不同的地方主要集中在rocket的機翼和尾部地方。

圖9 Laptop和rocket分割可視化Fig.9 Visualization of laptop and rocket segmentation
3.4.1 K近鄰數分析
本文網絡的圖采樣模塊,分為圖卷積和采樣兩部分,兩部分都需要通過K近鄰(KNN)算法構建局部領域,選取不同的K值有利于提高點云深度學習網絡的適用性和泛化性。
實驗結果如表3所示,鑒于DGCNN和PCT在構建局部鄰域K值的選擇,對K值進行了三組實驗:(K1,K2)={(20,20),(32,32),(20,32)},其中K1,K2分別屬于圖卷積和采樣兩部分局部鄰域的K近鄰數目。本文以ModelNet40分類實驗進行對比實驗,當對圖卷積和采樣兩部分采用相同的K值時,對點云的分類任務不能夠達到最好的效果,當K1=20,K2=32的時候,點云分類的精度最高。從中可以看出,K近鄰數的選擇影響網絡的性能。

表3 K近鄰數分析Tab.3 K-nearest neighbor analysis
3.4.2 魯棒性分析
通常由于激光等傳感器設備自身的原因,或者是由于待測物體被遮擋等原因,會導致最終輸入網絡的點云數據過于稀疏。
為了測試本文網絡對于稀疏點云輸入問題的魯棒性,分別選取4種采樣點個數:128、256、512、1024,使用與之前相同的實驗參數進行測試,一共運行了80個epoch。如表4結果所示:即使點云數據下降到128,依然能夠達到近90 %的總體分類精度,87.1 %的平均分類精度。這說明本文所設計的雙局部特征和全局特征的融合可以使網絡具有較強的魯棒性。

表4 采樣點數分析Tab.4 Sampling point analysis
為有效提高點云分類和分割的精度,本文提出了一種高低維雙局部特征融合的點云分類分割網絡。本文網絡在ModelNet40分類數據集上達到了較高的分類與分割精度,在ShapeNet分割數據集上也達到了較高的mIoU。綜上所述,通過使用圖卷積和注意力機制提取低維和高維的雙局部特征,可以有效提高點云分類與分割精度,為自動駕駛等精度要求高的研究提供了基礎;同時由于本文網絡對稀疏點云的輸入具有較強的魯棒性,使其適用于環境復雜或遮擋嚴重場景下的三維目標識別。