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