PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
PointNet是深度學習應用到點雲數據的先驅。在此之前,傳統的機器學習方法大多基於點雲的手工設計的特征,並使用機器學習模型如SVM。深度學習方法將點雲進行體素化形成體素網格並使用3D卷積神經網絡,或者將點雲經過投影生成多視角的圖片,並使用傳統的2D卷積神經網絡。這些方法將點雲數據轉換成中間表示(體素網格、圖片),造成了數據不必要的增大,同時還會損失點雲的幾何信息。
PointNet是一個端到端的網絡,直接處理原始的點雲數據,同時解決了點雲的排列不變性和變換不變性問題,在點雲的分類、部件分割和場景語義分割的任務上取得了與之前相比最好的性能,為這些任務提供了一個統一的架構,同時能夠對點的缺失、點的插入、點的擾動保持一定的魯棒性。
PointNet的兩個關鍵點是shared mlp 和對稱函數。shared mlp單獨處理每個點,並且共享權重,對稱函數能夠保持排列不變性。下面來仔細介紹一些這篇文章。
任務
給定一個3D點雲\(\{P_i | i=1,...,n\}\),每個點\(P_i\)是一個它對應的坐標\(\left(x, y, z\right)\)加上它額外的特征如顏色、法向量等等。為了簡單清晰地陳述問題,我們就將\(P_i\)簡化為他的三維坐標\(\left(x, y, z\right)\)。
對於分類任務,網絡要輸出一個點雲的在數據集上的k個類別上的得分。對於部件分割或場景語義分割,網絡要能輸出每個點在m個語義子類別的得分,即輸出為\(n \times m\)。
點雲的性質
- 無序性:點雲中的點不像圖像中的網格一樣規則,其無序性是指無論一個點雲中的點以何種順序排列,對於分類等任務來講,其結果是一樣的。網絡對其\(N!\)排列具有不變性。PointNet通過單獨處理每個點以及使用對稱函數解決了這個問題。
- 點與點之間的相互作用:點雲中的點來自一個具有距離度量的空間,每個點不是獨立的,臨近的點來自一個有意義的子集。也就是說,點雲具有局部特征。該問題實際上沒有得到解決,PointNet並沒有捕獲點雲的局部特征。
- 變換不變性:作為一個幾何物體,無論施加什么樣的剛體變換,如平移、旋轉所有的點,都不會改變它的類別,每個點所屬的類別。PointNet通過T-Net解決了這個問題。
網絡結構
上圖是該PointNet的網絡結構。藍色框內是用於分類的網絡結構,藍色框內除了最后的mlp,加上黃色框的網絡是用於部件分割或或者語義分割的網絡。網絡中的重點包括T-Net、shared mlp和max pool。
shared mlp和max pool
shared mlp的意思是多層感知機,這個多層感知機特別的地方在於它的權重是對每個點共享的,自然而然,它的實現使用的是大小為1的卷積核,卷積用的是1D卷積。通過對輸入的點雲的每個點單獨地進行維度提升,最后通過一個max pool進行特征聚合。max pool是一個對稱函數,對稱函數諸如max、min、average等等,其結果對輸入序列的順序保持不變性。而這里之所以用max pool操作是因為通過對比試驗,max pool的效果是最好的。這個max pool的操作也是有些特別的,它實際上是對的得到的\(n \times 1024\)這個特征矩陣的第0維求max,得到一個1024維的向量,這個向量就是點雲的全局特征。
可以看到,前面的shared mlp是對每個點單獨地進行處理,最后max pool操作又能保持排列不變性,因此整個網絡能夠對點雲實現排列不變性。
T-Net
T-Net實際上是一個mini-PointNet,最終的輸出是一個與\(channel^{2}\)維的向量,將其通過reshape操作得到\(channel \times channel\)的矩陣,用這個矩陣對輸入的每個點或者每個特征進行空間變換,能夠保證變換不變性。論文中說的是,通過T-Net,將輸入空間或特征空間對齊到基准空間。補充材料中有給出T-Net的結構,下面是自己畫的一個圖:
通過對特征空間使用T-Net,還需要對最終的損失加上一個正則項:
部件分割網絡
部件分割網絡中,通過將全局特征重復n次,形成一個\(n \times 1024\)的矩陣,並與之前提取的每個點的特征\(n \times 64\)做一個拼接操作形成一個\(n \times 1088\)的矩陣,用包含了局部特征和全局特征的混合特征做分割,效果會更好。因為分割不僅僅需要全局特征,還需要局部特征。而實際在實驗部分,作者得到的最好的結果使用的不是Figure 2的結構,而是下圖的結構:

可以看到,該結構將前面多個階段提取的點的特征與全局特征拼接在一起,並且將該物體所屬類別的one-hot編碼拼接了進去,形成一個\(n \times 3024\)的矩陣。
實驗
本文重點的三個實驗包括在ModelNet40上的分類,在ShapeNet上的部件分割,以及在S3DIS上的場景語義分割。除此之外還有一些消融實驗,如驗證T-Net的作用、PointNet的魯棒性。
分類

至於為什么沒有MVCCN效果好,作者原文中說的是PointNet沒有捕捉到精細的幾何結構。
部件分割

場景語義分割

T-Net消融實驗

魯棒性實驗
