論文筆記:(CVPR2017)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation



PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

    Charles R. Qi*    Hao Su*    Kaichun Mo    Leonidas J. Guibas    時間:2016.12
Stanford University

論文下載地址:https://arxiv.org/abs/1612.00593
代碼:https://github.com/charlesq34/pointnet
論文中文翻譯:https://blog.csdn.net/qq_41895003/article/details/105217366
https://blog.csdn.net/qq_37314249/article/details/103605076

一、 存在的問題

  3D點雲是一種很重要的幾何數據結構。由於其存在空間關系不規則的特點,因此不能直接將已有的圖像分類分割框架套用到點雲上。許多研究者會將3D點雲轉換為3D體素(voxel grids )或者一系列圖片,然后套用到現有的深度學習框架上,取得了非常好的效果。但是將點雲體素化勢必會改變點雲數據的原始特征,造成不必要的數據損失。因此,作者想要做的就是設計一個可以直接處理3d點雲數據的深度學習框架

二、 解決的方案

1、點雲特征

  點雲數據是在歐式空間下的點的一個子集,它具有以下三個特征:

(1)無序。
與圖像中的像素陣列或體積網格中的體素陣列不同,點雲是一組沒有特定順序的點集。換句話說,一個消耗N個3D點集的網絡對N!種排列順序的輸入點集數據的應是不變的。

(2)點與點之間的空間關系。
這些點來自於具有距離度量的空間。這意味着點與點之間不是孤立的,並且相鄰點可以形成一個有意義的集合。因此,這個模型需要從相鄰點中捕捉局部結構,以及局部結構之間的結合相互作用。

(3)變換下的不變性。作為一個幾何物體,點集的學習表示對某些變換應該是不變的。例如,旋轉和平移不能改變全局點雲類別或點的分割情況。

2、解決方法

  針對點雲的特征提出解決問題的方法

(1)無序性的解決方案:目前文獻中使用的方法包括

  將無序的數據重排序、
  用數據的所有排列進行數據增強然后使用RNN模型、
  用對稱函數來保證排列不變性。
  作者最終選擇使用max pooling來聚合全局信息,並在后面從理論上證明了,當特征維數足夠大時,max pooling可以模擬論文中所述的任意對稱函數f。推導略。

(2)點間關系的解決方案:

  一個物體通常由特定空間內的一定數量的點雲構成,也就是說這些點雲之間存在空間關系。為了能有效利用這種空間關系,論文作者在計算得到全局點雲特征向量后,將其與前面的點特征拼接在一起聚合特征。隨后再從拼接后的特征向量中提取特征,這時既有局部信息也有全局信息。

(3)不變性解決方案:

  論文作者提出了在進行特征提取之前,先對點雲數據進行對齊的方式來保證不變性。對齊操作是通過訓練一個小型的網絡來得到轉換矩陣,並直接和輸入點雲數據相乘來實現。
對齊網絡也可以擴展到特征空間中,通過一個小網絡T-Net預測出一個特征變換矩陣,乘在輸出的特征向量上。

  考慮到在特征空間上的變換矩陣比普通的空間變換矩陣(3維)的維度高得多,這會給優化增加不小的難度。所以另外還要在最后的softmax損失上加上一個正則化項: 。 其中A是T-Net預測得到的特征對齊矩陣。對角矩陣不會丟失輸入信息,這也是我們所期望的。作者提到,加上正則化項之后訓練會更穩定。

三、 網絡結構

三個關鍵結構:
  1、最大池化層,用來將從所有的點上提取得來的信息聚合到一起===》無序性

  2、局部信息和全局信息結合結構===》點間關系

  3、兩個對齊網絡T-Net,用來將輸入點和特征點進行對齊 ====》不變性

  點雲》空間對齊》特征變換》特征對齊》特征變換》池化》特征變換==》分類

  點雲》空間對齊》特征變換》特征對齊》特征變換》池化》特征拼接》特征變換》特征變換》==》分割

四、 理論證明

  作者對他們模型進行了進一步的理論分析,並提出了兩個定理:

  定理1證明了PointNet(vanilla)的網絡結構能夠擬合任意一個在Hausdorff空間上連續的函數。其作用類似證明神經網絡能夠擬合任意連續函數一樣。

  同時,作者發現PointNet模型的表征能力和maxpooling操作輸出的數據維度(K)相關,K值越大,模型的表征能力越強。

  定理2(a)說明對於任何輸入數據集S,都存在一個最小集Cs和一個最大集Ns,使得對Cs和Ns之間的任何集合T,其網絡輸出都和S一樣。這也就是說,模型對輸入數據在有噪聲(引入額外的數據點,趨於Ns)和有數據損壞(缺少數據點,趨於Cs)的情況都是魯棒的。定理2(b)說明了最小集Cs的數據多少由maxpooling操作輸出數據的維度K給出上界。

五、實驗效果

1、應用

(1)分類: ModelNet40數據集

(2)部件分割:ShapeNet part數據集

(3)語義分割/檢測

2、網絡結構分析

(1)針對無序性的解決方法比較

(2)輸入和特征對齊的有效性驗證

(3)魯棒性測試(數據缺失、異常值、點擾動)

3、可視化(解釋為什么魯棒性)

  通過研究是哪些點最大程度激活了神經元的值,論文發現,能夠最大程度激活網絡的點都是物體的主干點,將其上采樣,很容易能得到原始的結構。這樣的能力決定了PointNet對噪聲和數據缺失的魯棒性。如圖所示,作者通過實驗列出了PointNet學習到的以下幾個物體的關鍵點。

4、時間和空間復雜度分析

  盡管MVCNN [23]和Subvolume(3D CNN)[18]實現了高性能,但PointNet在計算成本方面效率更高(以浮點運算/樣本進行測量:分別為141x和8x)。   此外,就網絡中參數而言,PointNet比MVCNN更節省空間(參數少17倍)。PointNet更具可擴展性 - 空間和時間復雜度為O(N) - 與輸入點數量呈線性。   然而,由於卷積占主導地位,多視圖方法的時間復雜度在圖像分辨率上正常增長,而基於體積卷積的方法隨着卷大小以立方速度增長。   從經驗上來看,PointNet能夠在TensorFlow上使用1080X GPU處理每秒超過100萬點的點雲分類(約1K個對象/秒)或語義分割(約2個塊/秒)任務,顯示出實時應用的巨大潛力。

六、仍存在的問題

  PointNet只關注了3D點雲的全局信息,對於局部信息的利用不夠充分,在平移不變性上有一定缺陷,后來作者提出了PointNet++。

七、代碼分析

  (略)

參考:https://cloud.tencent.com/developer/article/1640702
https://www.jiqizhixin.com/articles/2019-05-10-13
https://blog.csdn.net/hongbin_xu/article/details/84638109


免責聲明!

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



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