天天看點

pointNet++創新點

目錄

    • 描述3D實體世界的幾種方式
    • 單層級特征學習元件
      • 采樣
      • 分組
      • PointNet提取特征
      • 小結
    • 在不同的點雲的采樣密度下進行魯棒的特征學習
    • 點雲分割
    • 總結

描述3D實體世界的幾種方式

  • 體素結構

    可以看成一個一個的立方體格子搭建起來的3D世界,比如《我的世界》遊戲中,所有的物體包括建築物、樹木、人物、錘子等都是由一個一個的小立方格子按照一定的方式組合起來的。與圖像類似,4k的分辨率看起來會比2k的分辨率要清晰很多,如果這個最小的小立方格子太大,就會讓人感覺畫面非常粗糙,很多細節丢失。

  • multi-view
  • mesh
  • pointcloud

單層級特征學習元件

pointNet++的特征學習由以下幾個步驟組成:采樣,分組,對每組利用pointNet網絡提取特征。

采樣

問題:假設由n個點,需要從這n個點中提出m個點,使得這m個點彼此之間相距盡可能遠。

方法:

随機選擇一個點作為初始點放入集合C中
while len(C) < m:
	周遊所有點,找到離集合中所有點最遠的一個點,加入集合中。
           

分組

問題:對于集合C中的每一個點,需要找到最近的K個點以便後面pointNet能學習到以這個點為中的周圍局部的特征。

方法:

  1. KNN

    使用歐式距離找到離這個點最近的K個點。

  2. 球體尋找

    固定一個半徑,得到一個以這個點為中心的球體,把球體内的所有的點視為這個點的近鄰。這樣得到的近鄰數量會不一緻。但是不影響其作為pointNet的輸入。

PointNet提取特征

将每一個組(共m個)都輸入到PointNet中去,得到m個特征(m個向量)。輸入進PointNet之前,需要先将每個組的坐标做個小變換:将原點都變成采樣步驟中得到的那個點。

小結

總而言之,經過這個部分的操作後,輸入為

n*d

的張量,輸出為

m*d'

的張量,其中,

m<n,d'>d

在不同的點雲的采樣密度下進行魯棒的特征學習

問題:我們的模型需要對不同密度的點雲具有足夠的泛化能力。由于采集裝置的差異,我們得到的點雲資料會具有不同的密度。比如,對同一個目标,64線的雷射雷達采集到的點一定要比128線雷射雷達采集到的點要稀疏。

方法:

  1. Multi-Scale grouping(MSG)

    一個簡單的方式是對于輸入的點雲中的每個點(實際上是部分點,比如95%的點,這樣防止得到空的點集),都以一定的機率 t h e t a theta theta舍去。這樣因 t h e t a theta theta的不同,就會得到不同密度的點雲。對不同密度的點雲都是用上面提及的單層級特征學習元件提取特征,再做concat,這樣通過反向傳播就可以學習對不同密度的點雲具有魯棒性的特征。

    由于這種方式相當于是重複進行好幾次特征提取操作,是以比較耗時。從後面的實驗效果來看,這種方式比下一種準确率更好一些。

  2. Multi-resolution grouping(MRG)

    對于輸入為

    n*d

    的點雲,使用單層級特征學習元件提取特征得到

    m*d'

    的張量1,對于這個張量1,再次使用特征學習元件提取特征,得到

    q*d_2

    的張量2,其中

    n>m>q,d<d'<d_2

    。張量1和張量2就分别代表不同密度的點雲提取到的特征向量。然後将這兩個向量concat起來,當然,由于尺度不一樣,需要對張量2進行上采樣,變成

    m*d_2

    ,再做concat。

點雲分割

點雲分割實際上就是給點雲中的每一個點配置設定一個類别(一個向量,向量中最大值所對應的類别即為點的類别)。是以,類似二維圖像中的FCN網絡,這裡插值操作進行上采樣。這樣,經過兩次上采樣操作和concat操作後,就會得到

n*(d'+d_2)

的張量,再用一個1*1卷積得到

n*K

的張量,這裡K指類别。

總結

相比于pointnet,pointnet++的主要貢獻可以分為兩部分:

  1. 通過采樣+分組+pointnet組合方式提取全局特征和局部特征,得到了更加魯棒的特征表達。
  2. 考慮了不同密度的點雲的分割,并設計了兩種有效的解決方式MSG和MRG。

繼續閱讀