PointCNN 論文翻譯解析


1. 前言

卷積神經網絡在二維圖像的應用已經較為成熟了,但 CNN 在三維空間上,尤其是點雲這種無序集的應用現在研究得尤其少。山東大學近日公布的一項研究提出的 PointCNN 可以讓 CNN 在點雲數據的處理刷新了多項深度學習任務的紀錄。由於項目需要,我對PointCNN論文的核心部分做了翻譯及部分解析,希望能夠幫助大家更好地學習理解PointCNN。

2. 概述

Fig1

如Fig1,傳統的卷積作用在二維圖像上。在圖像中數據是結構化存儲的。直接對圖像應用卷積核 就能從這種二維空間結構中獲取信息。而點雲數據是無序集,如果直接使用卷積會出現(1)中ii,iii,iv的情況
直接卷積
如上圖所示,由於卷積操作的性質,在所有情況下\(f_{ii}\)\(f_{iii}\)的計算結果是相等的,而\(f_{iii}\)\(f_{iv}\)的計算結果在大多數情況是不相等的。很顯然,直接卷積會導致形狀信息的變形並且使卷積結果對於順序敏感。

而PointCNN里采用的是這樣的策略:

從前一層的數據中取K個候選點\((p_1,p_2,...p_K)\),使用MLP(多層感知器)來學習一個\(K×K\) 的變換矩陣(X-transformation,X變換)也就是說\(X=MLP(p_1,p_2,...p_K)\),然后用它同時對輸入特征進行加權和置換,最后對經過變換的特征應用典型卷積。我們稱這個過程為X-Conv,它是PointCNN的基本構建模塊。

對(1)中的 (ii),(iii),和(iii)的X-conv可以表示成這樣:
1527487472886

在這里 這些 X變換 是4×4的矩陣,因為Fig1中K=4。

因為\(X_{ii}\)\(X_{iii}\)是從不同形狀的點集中學習得到的變換,它們可以對不同的點對應的進行加權,因此使得\(f_{ii}\)不再等於\(f_{iii}\)

對於\(iii\)\(iv\),如果我們通過學習使得\(X_{iii}=X_{iv}×\Pi\) ,$\Pi $ 是一個排序矩陣用來將\((c,a,b,d)\)變成\((a,b,c,d)\),就可以實現\(f_{iii}\equiv f_{iv}\)

從Fig1 中的例子分析可以看出,當X-Conv 搭配 理想的X變換 時,能夠在考慮點集形狀的同時,不依賴於輸入點的順序。

在實驗中,我們發現學習到的X變換並不是很理想,特別是在排序等價性方面。

盡管如此,使用X-Conv構建的PointCNN仍然明顯優於直接對點雲應用傳統卷積,相比為點雲數據設計的最先進的非卷積神經網絡(例如,PointNet ++)有着相近甚至更好的表現。

3. 分層卷積

類比圖像CNN的卷積,圖像CNN的輸入是\(R_1×R_1×C_1\),而卷積核的大小是\(K×K×C_1×C_2\),從前一層\(F_1\)中大小為\(K×K× C_1\)的區域生成\(F_2\)形狀大小為\(R_2×R_2×C_2\)的特征。

而PointCNN的輸入點集\(F_1 = \{ ({p_{1,i} , f_{1,i} ) : i = 1,2,..., N_1}\}\), 其中\(\{p_{1,i}:p_{1,i}\in R^D\}\)是點的\(D\)維坐標(這里是三維),\(\{f_{1,i}:f_{1,i}\in R^{C_1}\}\)是點集對應的特征。

\(F1\)應用 X-Conv(就是帶X變換的卷積)得到\(F_2 =\{(p_{2,i} , f_{2,i} ) : f_{2,i} ∈ R^{C_2} , i =1, 2, ..., N_2\}\)\(\{p_ {2,i}\}\)\(\{p_ {1,i} \}\)的一個代表點集合。但請注意,\(\{p_ {2,i}\}\)不需要是\(\{p_ {1,i} \}\)的真子集。

\(N_2<N_1\), \(C_2>C_1\), 則隨着一層一層的映射,點的數量會越來越少,但是每個點的特征卻越來越豐富。

Fig2

Fig2 上半部分是圖像的CNN,通過conv提取特征,通過池化降采樣。

下半部分是PointCNN,通過X-Conv提取特征,通過降采樣削減樣本數量。

\(F_1\)中選取代表點集\(F_2\)的方法,暫時的實現是:

  • 對分類問題:\(p_2\)\(p_1\)的隨機下采樣。
  • 對語義分割問題:\(p_2\)\(p_1\)的最遠點采樣。

4. X-Conv算子

為了實現與圖像卷積類似的空間局部相關性,X-Conv只作用於局部區域。

\(F_2\)中的任何一個點\(p\), 其在\(F_1\)中的\(K\)近鄰點集稱作\(N\)

所以每一個X-Conv針對\(p\)的輸入是\(S = \{(p_i , f_i ) : p_i ∈ N\}\), \(S\)為一個無序集合。不失一般性,\(S\)可以分開表示為\(K×D\)的坐標矩陣\(P = (p_1,p_1, ...,p_K )^T\)\(K×C_1\)的特征矩陣\(F = (f_1, f_2, ..., f_K)^T\)。所以X-Conv的參數有\(K × (C_1 + C_δ ) × C_2\)個。

X-Conv 算子

算法

  1. \(P′ \gets P−p\) 將點集\(P\)變換到以\(p\)點為中心的局部坐標系

  2. \(F_δ ← MLP_δ (P′)\) 逐點應用\(MLP_δ\),將\(P'\)\(R^3\)坐標空間映射到\(R^{C_\delta}\)特征空間

  3. \(F_∗ ← [F_δ , F]\)\(F_\delta\)\(F\)拼接起來,\(F_*\) 是一個 \(K × (C_δ + C_1)\) 矩陣

  4. \(X← MLP(P′)\)\(MLP\)學習\(P'\)獲得\(K×K\)的X變換矩陣

  5. \(F_X ← X × F_∗\) 應用X變換矩陣加權置換 \(F_*\)

  6. \(F_p ←Conv(K, F_X)​\) 做卷積

    Fig3

5. PointCNN 架構

從圖2中我們可以看出,圖像CNN中的卷積層和PointCNN中的X-Conv層僅在兩個方面有所不同:

  1. 提取局部區域的方式(圖像CNN中的K×K區域 與 PointCNN中代表點周圍的K個鄰近點)
  2. 對於局部區域的信息學習方式(圖像CNN的Conv 與PointCNN中的X-Conv)。

除此之外,與圖像CNN中的卷積層相比,用X-Conv層組裝的深度網絡沒有多大區別。

Fig4

5.1 分類任務

在Fig4(a)中,我們展示了一個簡單的PointCNN,帶有兩個X-Conv層,逐漸將輸入點(帶有或不帶有特征)轉換為較少的代表點,但每個點都具有更豐富的特征。
在第二個X-Conv層之后,只剩下一個代表點,它從前一層的所有點接收信息。

在PointCNN中,我們可以將每個代表點的感受野粗略地定義為比率K / N,其中K是相鄰點的數目,N是前一層中的點的數目。通過這個定義,最后一個剩下的點“看到”來自上一層的所有點,因此具有接受域1.0 -- 它具有整個形狀的全局視圖,因此它的特征為形狀的語義理解提供了信息。
我們可以在最后一個X -conv層輸出的頂部增加一些完全連接的層,然后是用於訓練網絡的損失。
請注意,Fig4(a)中PointCNN的頂層X-Conv層的訓練樣本數量迅速下降,使得徹底訓練頂層X-Conv層的效率很差。

為了解決這個問題,我們提出了Fig4(b)中的PointCNN,其中更多的代表點被保留在X-Conv層中。但是,我們希望保持網絡的深度,同時保持感受野的增長率,使得更深層的代表點“看到”整個形狀的越來越大的部分。我們通過將圖像CNN中的空洞卷積思想應用到PointCNN中來實現這一目標。我們可以不總是以\(K\)個鄰近點作為輸入,而是從K×D個鄰近點對K個輸入點進行均勻采樣,其中D是膨脹率。在這種情況下,感受野從\(K / N\)增加到\((K×D)/N\),而不增加實際相鄰點數量,也不增加內核大小。

在Fig4(b)中的PointCNN的第二個X-Conv層中,使用了膨脹率D = 2,因此剩下的所有四個代表點“看到”整個形狀,並且它們都適合做出預測。請注意,通過這種方式,與Fig4(a)的PointCNN相比,我們可以更徹底地訓練頂層X-Conv層,因為網絡涉及更多的連接。在測試時間內,多個代表點的輸出在sof tmax之前進行平均,以穩定預測結果。這種設計非常類似於網絡中[Lin et al]的網絡。我們的分類任務使用的是密度更高的PointCNN(Fig4(b))。

5.2 分割任務

對於分割任務,需要高分辨率逐點輸出,這可以通過在Conv-DeConv之后構建PointCNN來實現[Noh et al. 2015]架構,DeConv部分負責將全局信息傳播到高分辨率預測中(見Fig4(c))。

請注意,PointCNN分段網絡中的“Conv”和“DeConv”都是相同的X-Conv算子。對於“DeConv”圖層,與“Conv”圖層唯一的區別在於,輸出中的點數比輸入點中的點數多,但特征通道少。“DeConv”層的更高分辨率點從早期的“Conv”層轉發,遵循U-Net的設計[Ronneberger et al.2015年]。

\(ELU\) [Clevert et al. 2016]是PointCNN中使用的非線性激活函數,因為我們發現它比ReLU更穩定並且性能更好些。在\(P'\)\(F_p\)和FC層輸出(除了最后的FC層的輸出)上應用Batch Normalization [loffe和Szegedy 2015]以減少內部協變量偏移(Internal covariate shift)。要注意,Batch Normalization不應該應用於\(MLP_δ\)\(MLP\),因為\(F_*\)\(X\),特別是\(X\),對於特定代表點來說應該是的相當具體的。對於算法1第6行的Conv,可用分離卷積(Separable convolution )替代傳統卷積來減少參數數量和計算量。在PointCNN的訓練中,我們使用ADAM優化器,初始學習率為0.01。

在最后完全連接的層之前施加Dropout以減少過擬合。我們還采用了Qi等人的“子體積監督(Subvolume supervision)”理念來解決過擬合問題。在最后的X-Conv層中,感受野 被設置為小於1,使得最后的X-Conv層中的代表點僅“看到”部分信息。在訓練時促使網絡更加深入了解局部信息,並在測試時表現更好。

在本文中,PointCNN用分類任務的簡單前饋網絡和簡單的前饋圖層以及分割網絡中的跳躍鏈接來演示。然而,由於暴露於其輸入和輸出層的接口X-Conv與Conv非常相似,我們認為許多來自圖像CNN的先進神經網絡技術可以用於X-Conv,比如說循環PointCNN。我們將在未來的工作中沿着這些方向展開探索。

數據增強 對於X-Conv中的參數的訓練,顯然,如果相鄰點對於特定代表點始終是相同順序的相同集合,是很不利的。為了提高可推廣性,我們提出隨機抽樣縮減輸入點,使得相鄰點集和順序可能因批次不同而不同。為了訓練以N個點為輸入的模型,應有\(\boldsymbol N(N,{(N / 8)}^2)\)個點用於訓練,其中\(\boldsymbol N\)表示高斯分布。我們發現這一策略對於PointCNN的訓練至關重要。

6. 致謝

上述翻譯及解析 由於本人知識水平有限,難免有些錯漏,還望各位在評論指出,必定及時改正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM