@

一、3D點雲的挑戰
- 以無序點雲作為輸入,因此模型需要具備
排序不變性
- 點雲的旋轉,平移不應該改變點雲的類別,因此模型需要具備
幾何變換不變性
二、排序不變性
排序不變性,即輸入的點雲的順序不應該改變點雲所代表的物體類別
當一個\(N \times D\) 在 N的維度上隨意的打亂之后,其表述的應該是同一個物體。為了實現這一點。一個簡單的方法是使用對稱函數
,如SUM和MAX等函數:
因此我們可以利用max函數設計一個很簡單的點雲網絡,如下:
因此我們構造的網絡也應是一個具有對稱函數特特性的網絡。但是這樣的網絡有一個問題,就是每個點損失的特征太多了,輸出的全局特征僅僅繼承了三個坐標軸上最大的那個特征,此時我們發現,當我們將點雲的每個點先映射到一個冗余的高維空間
后(例如1024維),再去進行max的對稱函數操作,損失的特征就沒那么多了。由此,就可以設計出這PointNet的雛形,稱之為PointNet(vanilla)
:
h:高維映射
g:對稱函數
r:MLP
三、幾何變換不變性
對於一個點雲,進行平移和旋轉之后應該表示的仍然是同一物體。
對於普通的PointNet(vanilla),如果先后輸入同一個但是經過不同旋轉角度的物體,它可能不能很好地將其識別出來。在論文中的方法是新引入了一個T-Net網絡去學習點雲的旋轉,將物體校准,剩下來的PointNet(vanilla)只需要對校准后的物體進行分類或者分割即可。
對於三維點的旋轉只需乘以一個 3 × 3的旋轉矩陣,即可將其矯正;同樣的將點雲映射到K維的冗余空間后,也是學習一個k×k的旋轉矩陣,只不過因為旋轉矩陣具有正交性,因此這次校對需要引入一個正則化懲罰項,希望其盡可能接近於一個正交矩陣。
四、網絡結構和代碼實現
對於每一個 N × 3 的點雲輸入,網絡先通過一個T-Net將其在空間上對齊(旋轉到正面),再通過MLP將其映射到64維的空間上,再進行對齊,最后映射到1024維的空間上。這時對於每一個點,都有一個1024維的向量表征,而這樣的向量表征對於一個3維的點雲明顯是冗余的,因此這個時候引入最大池化操作,將1024維所有通道上都只保留最大的那一個,這樣得到的 1 × 1024的向量就是 N個點雲的全局特征。
- 果做的是分類的問題,直接將這個全局特征再進過MLP去輸出每一類的概率即可;
- 如果是分割問題,由於需要輸出的是逐點的類別,因此其將全局特征拼接在了點雲64維的逐點特征上,最后通過MLP,輸出逐點的分類概率。