天天看點

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

文章目錄

  • ​​PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space​​
  • ​​做了什麼​​
  • ​​PointNet++​​
  • ​​PointNet++與CNN​​
  • ​​分層點集特征學習​​
  • ​​非均勻采樣密度下的魯棒特征學習​​
  • ​​分類​​
  • ​​分割​​
  • ​​實驗結果​​

PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

做了什麼

​​PointNet​​要麼對一個點操作,要麼對所有點操作,卻沒有對局部進行操作,這導緻它無法捕獲點集的局部特征,限制了其識别細節的能力以及對複雜場景的推廣能力。

PointNet++則是一種分層點集處理模型,它将PointNet卷積式地應用于輸入點集的嵌套分組,逐層學習點集的局部特征。

另外,點集在不同區域的密度不均勻會影響網絡訓練,PointNet++通過組合多個尺度範圍内的特征來解決這個問題。

實驗表明,PointNet++網絡能夠高效、穩健地學習深層點集特征,并在一些3D點雲基準測試中達到當時的最佳。

PointNet++

PointNet++與CNN

PointNet的基本思想是學習每個點的高維特征,然後将所有單獨的點特征聚合為一個全局點雲特征。可見,PointNet不捕獲由度量引起的局部特征。然而,利用局部特征已經被證明是CNN成功的重要因素。CNN以規則網格資料為輸入,能夠沿着多個層次逐漸捕獲越來越大區域的特征:

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

圖檔來源:3D ShapeNets: A Deep Representation for Volumetric Shapes

PointNet++與CNN相似,能夠逐層學習點集的局部特征。二者可以類比如下:

  • CNN的卷積核PointNet
  • 卷積核覆寫的區域使用特定方法對點集進行采樣,以采樣點為中心進行局部區域分組

下面介紹PointNe++的細節。

分層點集特征學習

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

PointNet++建構了點集的分層分組,并沿着層次結構逐漸抽象出越來越大的局部區域,其層次結構由多個集合抽象層( set abstraction)組成:

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

集合抽象層輸入輸出: 每個集合抽象層對一組點特征進行處理和抽象,生成具有較少元素的點特征新集。

(1)輸入:個點的3D坐标(維數為)與點的特征(維數為)沿着特征次元連起來,得到的的矩陣。

(2) 輸出:

個采樣點的3D坐标(維數為)與采樣點的特征(維數為)沿着特征次元連起來,得到的的矩陣。

集合抽象層組成:

(1)采樣層(Sampling layer):采樣層從輸入點中選擇一組點,作為局部區域的質心。

給定輸入點PointNet++使用最遠點采樣(farthest point sampling ,FPS)來選取質心,其中是距離(指定度量距離)集合最遠的點。

與随機抽樣相比,在質心數相同的情況下,FPS對整個點集具有更好的覆寫率。另外,與CNN不同,這種采樣政策使得PointNet++的感受野與資料相關。

(2)分組層(Grouping layer):分組層通過在質心周圍找到“相鄰”點來構造局部區域集。

該層的輸入是一個大小為的點集和一組大小為的質心的坐标。指定質心點領域内的點數,輸出一組大小為的點集,其中每組對應于一個局部區域。

在卷積神經網絡中,局部區域是由卷積核大小決定。而PointNet++的局部區域由指定度量距離定義。

有兩種構造局部區域集的方法:

  • k近鄰(kNN)搜尋:它查找采樣點在點集中固定數量的相鄰個點。
  • 球查找 (Ball query):以質心為圓心,指定半徑的球體範圍内的所有點(上限為)。

與kNN相比,球查找的局部鄰域保證了固定的局部區域大小,進而使局部區域特征在空間上更具泛化性。

最後還要将局部區域中點的坐标轉換為相對于質心點的相對坐标 ,局部區域内點下标 ;點位置次元。

(3)PointNet層:PointNet層使用PointNet卷積式地将局部區域點集抽象為特征向量。

輸入資料大小為的個局部區域。使用PointNet處理每個局部區域的的點進行抽象出局部特征。輸出資料大小為。

非均勻采樣密度下的魯棒特征學習

點集在不同區域的密度不均勻為點集特征學習帶來了重大挑戰。對于密集的區域,我們可以使用較小尺度的點集分組;而對于稀疏的區域,我們應該使用更大範圍的點集分組。前面介紹的抽象層都隻包含單個尺度的分組(single scale grouping,SSG)和特征提取。在PointNet++中,每個抽象層還可以使用多尺度分組(Multi-scale grouping,MSG)、多分辨率分組(Multi-resolution grouping ,MRG),來提取并組合多個局部區域特征。

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

(1)多尺度分組(Multi-scale grouping,MSG)

如圖3(a)所示,多尺度分組對每個質心使用多個不同尺度的分組,然後将提取到的每個尺度的特征連接配接起來,形成多尺度特征。

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

(2)多分辨率分組(Multi-resolution grouping ,MRG)

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

上面的MSG方法計算成本很高。為了降低計算成本,如圖(b),MRG則隻是将局部區域的每個特征向量(圖中左邊的特征向量)與全局彙總得到的一個特征向量(圖中右邊的特征向量)連起來。

當局部區域的密度較高時,局部區域的特征向量可以提供更精細的資訊,因為它處理的是更高分辨率(機關體積點的數量)的點集。然而,當局部區域的密度較低時,計算局部區域特征向量的點的分辨率較低,容易受到采樣不足的影響,這時全局的特征向量可以彌補。

另外,PointNet++還使用了随機輸入丢棄(random input dropout,DP)。這是通過以随機機率随機丢棄輸入點來實作的。具體地說,對于每個訓練點集,我們從()中均勻抽樣選擇一個機率率,對于每個點,以的機率将其丢棄。這使得PointNet++更穩健。

分類

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

對集合抽象層得到的特征使用全局PointNet,然後再輸入全連接配接網絡得到每個類别的分數。

分割

集合抽象層對原始點采樣,得到的點特征數量少于原始點。然而,在分割任務中,我們需要擷取與原始點相同數量的點特征。一種實作方案是在所有集合抽象級中以原始點作為質心進行采樣,但這會導緻較高的計算成本。另一種方案是将采樣點特征傳播回原始點。

PointNet++采用基于距離的插值和跨級别跳躍連接配接的分層特征傳播(feature propagation):

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

在特征傳播層,點特征從個傳播到個,其中和() 是集合抽象級别的輸入和輸出的點集大小。

例如,從到:

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

PointNet++使用基于目标位置的個最近鄰特征的距離權重平均值(如等式2所示,預設)插值實作從點到個點的特征傳播。目标位置的特征值:

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

得到的個插值特征将與從集合抽象級跳躍連接配接的點特征沿着特征次元連接配接起來。然後将得到的特征通過全局PointNet更新每個點的特征向量。

然後将得到的特征通過“unit PointNet(沒有最大值彙聚的全局PointNet)”更新每個點的特征向量。

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

重複該過程,直到特征數與原始點集相同。

實驗結果

歐幾裡德度量空間中的分類

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習
【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

基于點集分割的語義場景标注

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習
【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

非歐幾裡德度量空間中的分類

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

部件語義分割

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

鄰域查詢:kNN v.s.Ball查詢。

【NIPS 2017】PointNet++:度量空間中點集的深層次特征學習

繼續閱讀