1. 程式人生 > >三維點雲網絡——PointNet論文解讀

三維點雲網絡——PointNet論文解讀

PointNet1 是斯坦福大學研究人員提出的一個點雲處理網路,與先前工作的不同在於這一網路可以直接輸入無序點雲進行處理,而無序將資料處理成規則的3Dvoxel形式進行處理。輸入點雲順序對於網路的輸出結果沒有影響,同時也可以處理旋轉平移後的點雲資料。
在這裡插入圖片描述
點雲是一種重要的幾何資料形式。卷積網路通常需要規則的資料形式作為輸入,但由於點雲是非規則資料型別所以通常的做法大都先對點雲進行規則化的處理,將空間劃分成網格的體素voxel就是一種典型的做法。但這樣的方式會造成有很多不必要的體積劃分使得輸入資料變得稀疏,同時會影響點雲資料的不變性。

PointNet從不同的角度出發來解決這一問題,考慮到點雲資料的本質是一個點集

,它具有一下特徵:

  • 無序性,點雲是一個點集,沒有固定的順序;
  • 與鄰域點又相互作用,點雲中的個體不是獨立的,與周圍的點具相關,具有局域特徵;
  • 剛體旋轉、平移不變性,旋轉和平移不會改變點雲的分類、分割結果。

PointNet的結構十分簡單,它可以直接輸出點雲資料,隨後得到分類/分割的結果。模型對無序點雲的每一個點進行獨立的處理,由此來實現與輸入順序無關的點雲處理。在網路中關鍵的結構是一個單對稱函式最大池化(max pooling)

模型通過學習選擇出點雲中感興趣點/資訊點,並將選擇的原理編碼到模型中,最後利用全連線層將學習到的特徵合稱為全域性的描述子。

這一模型中輸入點是獨立的,研究人員同時增加了不依賴於資料的空間變化網路

來處理剛體或仿射變換,在輸入網路前對點雲資料進行規範化(canonicalize)處理, 消除旋轉等變換帶來的影響。

1.處理點雲通常的方法分為一下幾類:
類別 方法1 方法2 方法3 方法4
點雲特徵 編碼統計特性(不變性) 內蘊/外部特徵 全域性/區域性特徵 ^ @ ^
3D資料深度學習 Volumetric(稀疏+計算量大) Multiview多視角卷積(不易拓展) Special空間卷積 Featurebased基於特徵的卷積(受制於表達能力)
無序資料的深度學習sort規範化 序列模型RNN 對稱函式整合每點資訊 ^ @ ^ ^ @ ^
2.Framework

PointNet 利用了對稱函式——最大池化的方法來對點雲中各點的資訊進行融合。它的具體結構如下圖所示,其中輸入是3通道(x,y,z)(x,y,z)的點雲資料, 輸出是分類標籤或者是分割結果。
pointNet
haha|left
下面讓我們來看看網路的每一部分具體功能 ,網路共分為 個部分:

  • 輸入變換——>對齊輸入點雲(規範化canonical space)
  • 點雲處理——>MPL處理點雲(升維到64)
  • 特徵變換——>對齊輸入特徵(規範化canonical space)
  • 特徵處理——>MPL處理特徵(升維到1024)
  • 對稱函式處理——>全域性特徵(Max pooling)
  • 感知機
點雲變換特徵變換max pooling輸入點雲特徵: D64特徵處理: D1024全域性特徵: D1024

其中第一部分TNetT-Net是一個微型網路,用於生成一個仿射變換矩陣來對點雲的旋轉、平移等變化進行規範化處理。這個變換/對齊網路是一個微型的PointNet,它輸入原始點雲資料,輸出為一個333*3的旋轉矩陣:

MPL:64*128*1024MPL:512*256輸入點雲n*1024MaxPooling3*3 Transform Matrix

同樣的思路也可以用於對於特徵空間的對齊.變換,唯一的不同在於輸入程式設計了64維的特徵,而輸出則是646464*64的變換矩陣了:

MPL:64*128*1024MPL:512*256輸入點雲n*1024MaxPooling64*64 Transform Matrix

第二部分則是對點雲和特徵進行處理的n個感知機,將n3n *3的點雲輸入後,對於每一個點都有一個646464*64的兩層感知機來對點雲進行處理,這裡相當於利用MPL近似了一個通用的函式,將每個點的資訊通過感知機進行學習和提取,隨後利用最大池化層對資訊進行融合生成全域性特徵:
f({x1,x2,...,xn})g(h(x1),...,h(xn)f(\{x_1,x_2,...,x_n\})\approx g(h(x_1),...,h(x_n)
其中h就相當於上面的MPL感知機,而gg就是起到對稱函式作用的Max Pooling。在網路中mpl(64,64)和mpl(64,128,1024)都是複用的,是一個MPL的n份複製。
sted 在這裡插入圖片描述
最後,每一個輸入的點都將得到1024維的描述,通過最大池化,將n-1024融合為1024維的特徵來描述這一向量:
在這裡插入圖片描述
分類任務中,點雲生成的1024維特徵通過最後一個MLP來進行學習,其中k是最後一層的輸出數量,代表分類的類別,每個類別會對應對於點雲的分類得分。

而在分割任務中,由於需要考慮區域性特徵,需要將n*64局域特徵和1024維的全域性特徵結合在一起進行融合,在每一個點的64維特徵後接續1024全域性特徵:
在這裡插入圖片描述
隨後利用一個mpl(512,512,128)對n1088n*1088維的特徵維度進行學習,生成n128n*128的向量,再利用(128,m)的感知機對最後的特徵進行分類(分割問題其實是針對每一個點的分類問題),其中n對應n個點,而m對應的是點對應的m個分類得分。

3.結果

PointNet通過上面的操作,可以得到一個稀疏的關鍵點集來描述總結點雲所表示的形狀:
在這裡插入圖片描述
上圖中,第一行是原始資料、第二行樹關鍵點集(類似於骨架)、第三行為外形的上邊界。關鍵點集相當於定義了形狀的全域性特徵,所有的點都將落在第二行和第三行表示之間。網路的魯棒性就來源於此處,只要保留了關鍵點,及時點雲有變換和擾動結果也不會受到影響。同時關鍵點集合也意味著可以描述整個點雲的性質。

4.最後貼幾個不錯的結果:

1.模型檢索、分割、語義分割:
在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述

5.對於點雲的編碼好h(p)h(p)

最後maxpooling輸出的點雲編碼,可以看做是對於點雲的描述。下圖是對於1024個點函式在立方中進行視覺化的結果,有灰度的範圍描述了他們的啟用區域,描述了從點雲中抽取出的特徵表達

這一專案還有配套的程式碼, 接下來繼續對程式碼進行學習。

在pointNet後,還有一個PointNet++2的工作,通過層級使用PointNet的方法,致力於解決對於局域結構和細粒度任務,主要探索了度量空間中的距離。