天天看點

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

文章目錄

  • ​​PointNet: 深度學習之3D點集分類與分割​​
  • ​​做了什麼​​
  • ​​問題闡述​​
  • ​​深度學習于點集​​
  • ​​相關工作​​
  • ​中點雲的特性​​
  • ​​PointNet架構​​
  • ​​工作流程簡述​​
  • ​​PointNet的三個關鍵子產品​​
  • ​​理論分析​​
  • ​​實驗​​
【CVPR2017】PointNet: 深度學習之3D點集分類與分割

PointNet: 深度學習之3D點集分類與分割

做了什麼

點雲是不規則的,大多數研究人員将這些資料轉換為規則的三維體素網格或圖像集合。然而,這會使資料備援。

該論文設計了一種新型的直接處理點雲的神經網絡——PointNet,它很好考慮到了點雲的置換不變性。PointNet為點雲分類、部件分割和語義分割等應用提供了一個統一的體系結構。雖然簡單,但PointNet是高效的。從實驗上看,它的表現相當出色,甚至達到當時的SOTA。

該論文還提供理論分析,證明PointNet具有對任意連續集函數的逼近能力,以及網絡對于輸入含噪和缺失是魯棒的。

問題闡述

點雲用3D點集合表示,其中每一個點為坐标向量,還可以有附加的通道,如顔色、法線等。

分類:

對于分類任務,輸入的點雲可以直接從形狀中采樣,也可以從場景中預分割。模型輸出的是所有個候選類的個分數。

分割:

對于語義分割,輸入可以是用于零件區域分割的單個對象,也可以是用于對象區域分割的三維場景的子體積。模型将為點和種語義子類别輸出個分數。

深度學習于點集

相關工作

Volumetric CNNs:是将3D卷積神經網絡應用于體素化形狀的先驅。然而,體素表示受到其分辨率的限制,因為體素資料具有稀疏性且三維卷積的計算成本很高。

FPNN、Vote3D:提出了處理稀疏問題的特殊方法;他們的操作仍在稀疏體素上,這對于于處理非常大的點雲很有挑戰性。

Multiview CNNs:嘗試将三維點雲渲染為二維圖像,然後應用二維卷積網絡對其進行分類。通過精心設計的圖像CNN,這一系列方法在形狀分類和檢索任務上取得了卓越的性能。然而,這很難擴充到場景了解或其他3D任務(如點雲分割和形狀補全)。

Spectral CNNs:

僅适用于流形網格。

Feature-based DNNs:

首先通過提取傳統形狀特征将三維資料轉換為向量,然後使用全連接配接網絡對形狀進行分類。這樣可能受到所提取特征的表示能力的限制。

中點雲的特性

歐幾裡德空間中點雲有三個主要特性:

  • 無序性:與圖像中的像素陣列或體積栅格中的體素陣列不同,點雲是一組沒有特定順序的點。換句話說,一個輸入大小為的3D點集的網絡需要對資料輸入順序上的種排列應該有同樣的輸出。
  • 相鄰點的互相影響:這些點來自具有距離度量的空間。這意味着點不是孤立的,相鄰點形成一個有意義的子集。
  • 變換不變性:作為一個幾何對象,點集的學習表示應該對某些變換保持不變。例如,旋轉和平移所有點不會改變全局點雲的類别,也不應改變點雲的分割結果。

PointNet架構

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

工作流程簡述

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

分類網絡(classification network)以個點為輸入,應用輸入和特征變換(input and feature transformations),然後通過最大值彙聚(max pool)聚合點特征。最後輸出為類的分類分數(output scores)。

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

分割網絡(segmentation network)是分類網絡的擴充。它将全局(global feature)和局部特征連接配接,輸入mlp并最終輸出每點的分數。

圖中mlp代表多層感覺器,括号中的數字是mlp每一層大小。每一層的mlp都用了ReLU激活函數以及Batchnorm。最後一個mlp使用了Dropout。所有點以及特征都共享一個mlp。

PointNet的三個關鍵子產品

(1)無序輸入的對稱函數:

為了使模型對輸入具有置換不變性,存在三種政策:

1) 将輸入按規定順序排序;

2) 将輸入作為一個序列來訓練RNN。用資料的所有排列做資料增強。

3) 使用簡單的對稱函數聚合每個點的資訊。

這裡,對稱函數指的是:以個向量作為輸入,并輸出一個新的向量,輸入順序不影響輸出。例如,和 運算符是對稱的二進制函數。

雖然排序聽起來像是一個簡單的解決方案,但在高維空間中,實際上不存在一般意義上關于點擾動穩定的排序。如圖5所示,直接在排序點集上應用MLP的性能很差,盡管略優于直接處理未排序的輸入。

使用RNN的想法是将點集視為一個序列信号,并希望通過使用随機排列的序列訓練RNN。經過實驗,如圖5,該論文得到基于RNN的模型的性能不如PointNet。

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

PointNet的想法是通過對點集進行變換得到的元素應用對稱函數來近似定義處理點集的一般函數:

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

PointNet的基本子產品非常簡單:它用多層感覺器網絡來近似單變量函數,并與最大值彙聚函數組合來近似。

(2)局部和全局資訊聚合

上述部分的輸出是一個向量,它是輸入集的全局資訊。是以,我們可以很容易地在形狀全局特征上訓練SVM或多層感覺器分類器進行分類。

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

對于點分割,則需要結合局部和全局特征。

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

我們可以通過簡單而高效的方式實作這一目标:在計算得到全局點雲特征向量後,将全局特征與每個點特征連接配接起來。然後,我們基于組合點特征提取新的點特征,那麼,新的點特征就同時包含局部和全局資訊了。

通過這種修改,PointNet能夠預測依賴于局部幾何和全局語義的量。例如,我們可以用PointNet準确預測每個點的法線:

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

(3)聯合對齊網絡(Joint Alignment Network)

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

點雲經過某些幾何變換(如剛性變換),其語義标記應是保持不變的。是以,我們期望通過點集學習到的表示特征也是對這些變換是不變的。

首選的解決方案是在每一層特征提取之前将所有輸入集對齊到規範空間。那麼,我們可以通過一個迷你網絡(T-Net)來預測這樣的仿射變換矩陣,并将此變換直接應用于輸入點的坐标。微型網絡本身類似于大型網絡,由點特征提取、最大值彙聚和全連接配接層等基本子產品組成。

該思想還可以進一步擴充到特征空間的對齊。我們可以插入另一個對齊網絡,處理點特征并預測特征轉換矩陣,以對齊來自不同輸入點雲的特征。然而,特征空間中的變換矩陣比空間變換矩陣的維數要高得多(例如:圖2中可以達到),這大大增加了優化的難度。因為PointNet還在softmax訓練損失中還添加了一個正則化項,将特征變換矩陣限制為接近正交矩陣:

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

其中是由微型網絡預測的特征對齊矩陣。正交變換不會丢失輸入中的資訊,是以是需要的。作者發現,通過添加正則化項,優化變得更加穩定,模型獲得了更好的性能。

輸入和特征轉換的有效性:

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

理論分析

令是關于Hausdorff距離的連續集函數。即:

,對于任意,如果,則。以下定理表明,如果在最大池層有足夠的神經元,即公式(1)中的足夠大,則可以由PointNet任意近似。

(1) 萬能逼近:PointNet具有對任意連續集函數的逼近能力

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

(2) PointNet對輸入點的異常值如小噪聲或點缺失資料具有高度魯棒性。

定義是的子網絡,它将中的點集映射成維向量。以下定理告訴我們,輸入集中的小缺失或額加噪聲點不太可能改變網絡的輸出。

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

定理的含義:

(a)隻要的損壞集能保留中的所有點,則輸出保持不變,即;對于含額外噪聲點的,依然有。

(b)包含的點數量,由(1)中的确定。

換句話說,實際上完全由小于或等于個元素的有限子集決定。是以,我們稱為的關鍵點集(critical point set),為的瓶頸維數(bottleneck dimension)。

下圖給出一些的關鍵點集(Critical points)和上限形狀(upper bound shape)

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

更詳細的内容見原論文 4.3. Theoretical Analysis、附錄:G. Proof of Theorem

實驗

物體分類:

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

三維物體部件分割

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

場景中的語義分割

【CVPR2017】PointNet: 深度學習之3D點集分類與分割

繼續閱讀