PointNet原理詳解


@


在這里插入圖片描述

一、3D點雲的挑戰

  1. 以無序點雲作為輸入,因此模型需要具備排序不變性
  2. 點雲的旋轉,平移不應該改變點雲的類別,因此模型需要具備幾何變換不變性

二、排序不變性

排序不變性,即輸入的點雲的順序不應該改變點雲所代表的物體類別
在這里插入圖片描述
當一個\(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個點雲的全局特征。

  1. 果做的是分類的問題,直接將這個全局特征再進過MLP去輸出每一類的概率即可;
  2. 如果是分割問題,由於需要輸出的是逐點的類別,因此其將全局特征拼接在了點雲64維的逐點特征上,最后通過MLP,輸出逐點的分類概率。

代碼實現


免責聲明!

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



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