深度學習算法的點雲分割-Pointnet++(一)

pointnet++爲pointnet的升級版
轉自:http://www.bubuko.com/infodetail-2535494.html

使用深度學習的三維點雲分類的介紹

   在過去的這些年裏,對二維圖像已經有了大量深入的研究,並且有着長足的發展。它在分類任務上取得了極好的結果主要得益於一下兩個關鍵因素:

1.卷積神經網絡。

2.數據 - 大量圖像數據可用。

   但是對於3D點雲,數據正在迅速增長。大有從2D向3D發展的趨勢,比如在opencv中就已經慢慢包含了3D點雲的處理的相關模塊,在數據方面點雲的獲取也是有多種渠道, 無論是源於CAD模型還是來自LiDAR傳感器或RGBD相機的掃描點雲,無處不在。 另外,大多數系統直接獲取3D點雲而不是拍攝圖像並進行處理。因此,在深度學習大火的年代,應該如何應用這些令人驚歎的深度學習工具,在3D點雲上的處理上達到對二維圖像那樣起到很好的作用呢?

3D點雲應用深度學習面臨的挑戰。首先在神經網絡上面臨的挑戰:

(1)非結構化數據(無網格):點雲是分佈在空間中的XYZ點。 沒有結構化的網格來幫助CNN濾波器。
(2)不變性排列:點雲本質上是一長串點(nx3矩陣,其中n是點數)。 在幾何上,點的順序不影響它在底層矩陣結構中的表示方式,例如, 相同的點雲可以由兩個完全不同的矩陣表示。 如下圖所示:

                                 

(3)點雲數量上的變化:在圖像中,像素的數量是一個給定的常數,取決於相機。 然而,點雲的數量可能會有很大的變化,這取決於各種傳感器。

 

在點雲數據方面的挑戰:

(1)缺少數據:掃描的模型通常被遮擋,部分數據丟失。
(2)噪音:所有傳感器都是嘈雜的。 有幾種類型的噪聲,包括點雲擾動和異常值。 這意味着一個點有一定的概率位於它被採樣的地方(擾動)附近的某一半徑範圍內,或者它可能出現在空間的任意位置(異常值)。
(3)旋轉:一輛車向左轉,同一輛車向右轉,會有不同的點雲代表同一輛車

Princeton’s Modelnet40 dataset。 它包含約40個對象類別(如飛機,表格,植物等),用三角形網格表示的12311個CAD模型。 數據分爲9843個培訓模式和2468個測試模式,如下圖

 

 

在點雲上應用深度學習的直接方法是將數據轉換爲體積表示。 例如體素網格。 這樣我們就可以用沒有神經網絡問題的3D濾波器來訓練一個CNN(網格提供了結構,網格的轉換解決了排列問題,體素的數量也是不變的)。 但是,這有一些不利因素。 體積數據可能變得非常大,非常快。 讓我們考慮256×256 = 65536像素的典型圖像大小,現在讓我們添加一個維度256x256x256 = 16777216體素。 這是很大的數據量(儘管GPU一直在發展)。 這也意味着非常緩慢的處理時間。 因此,通常我們需要妥協並採取較低的分辨率(一些方法使用64x64x64),但是它帶來了量化誤差的代價。所以,所需的解決方案是一個直接的深度學習的方法,將是3D點雲應用深度學習的重點。

作者調查了三種最近發表的文章,主要針對對點雲進行深度學習的論文。 正如下圖所示,展示了3D點雲分類準確性出版(準確性,年份和數據類型),它總結了數據集上的最新準確性結果。 以及每種方法正在處理的數據的類型。 可以看到,在2015年,大多數方法都用於多視圖數據(這是一種簡短的說法 - 讓我們拍攝3D模型的幾張照片並使用2D方法處理它們),2016年更多的方法使用了體素表示的點雲學習和2017年的基於點的方法有了大幅度的增長。

 

PointNet(CVPR2017)

開拓者! 來自斯坦福大學,他們的工作引起了很多關注。他們做了一些令人驚訝的簡單的事情,並證明了爲什麼它運作良好,他們分別在每個點上訓練了一個MLP(在點之間分享權重)。每個點被“投影”到一個1024維空間。然後,他們用點對稱函數(max-pool)解決了點雲順序問題。這爲每個點雲提供了一個1 x 1024的全局特徵,這些特徵點被送入非線性分類器。利用他們稱爲T-net的“迷你網絡”解決了旋轉問題。它學習了點(3 x 3)和中級特徵(64 x 64)上的變換矩陣。稱之爲“迷你”有點讓人誤解,因爲它實際上與主網絡的大小有關。另外,由於參數數量的大量增加,引入了一個損失項來約束64×64矩陣接近正交。也使用類似的網絡進行零件分割。也做了場景語義分割。做得好!我強烈推薦閱讀(或者您也可以觀看演示視頻)。本文對ModelNet40數據集的準確率高達89.2%。下圖是pointNet點雲分類的框架

引用: Charles R. Qi, Hao Su, Kaichun Mo, and Leonidas J. Guibas. Pointnet: Deep learning on point sets for 3d classication and segmentation. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), July 2017.

The code is available on GitHub: PointNet code 

Pointnet ++(NIPS 2017)

在PointNet之後不久,引入了Pointnet ++。它本質上是PointNet的分層版本。每個圖層都有三個子階段:採樣,分組和PointNeting。在第一階段,選擇質心,在第二階段,把他們周圍的鄰近點(在給定的半徑內)創建多個子點雲。然後他們將它們給到一個PointNet網絡,並獲得這些子點雲的更高維表示。然後,他們重複這個過程(樣本質心,找到他們的鄰居和Pointnet的更高階的表示,以獲得更高維表示)。使用這些網絡層中的3個。還測試了不同層級的一些不同聚合方法,以克服採樣密度的差異(對於大多數傳感器來說這是一個大問題,當物體接近時密集樣本,遠處時稀疏)。他們在原型PointNet上進行了改進,在ModelNet40上的準確率達到了90.7%。下面是Pointnet++ 架構。

 

引用: Charles R Qi, Li Yi, Hao Su, and Leonidas J Guibas. Pointnet++: Deep hierarchical feature learning on point sets in a metric space. arXiv preprint arXiv:1706.02413, 2017.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章