天天看點

(閱讀筆記)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation一、動機和貢獻二、點雲特性三、PointNet網絡結構

PointNet

  • 一、動機和貢獻
  • 二、點雲特性
  • 三、PointNet網絡結構
    • 分類網絡
    • 分割網絡

一、動機和貢獻

  1. 動機:大多數研究人員選擇将不規則的點雲資料轉換成規則的3D體素網格或特征投影,導緻大量的點雲資訊缺失。
  2. 貢獻:設計了一種直接消耗點雲的新型神經網絡PointNet,考慮點雲的無序性、點間關系、排列不變性;訓練PointNet網絡用來執行三維形狀分類、形狀部分分割和場景語義分析任務,提供了統一的體系結構。

二、點雲特性

  1. 無序

    點雲資料是一個集合,對資料的順序是不敏感的。這就意味這處理點雲資料的模型需要對資料的不同排列保持不變性。目前文獻中使用的方法包括将無序的資料重排序、用資料的所有排列進行資料增強然後使用RNN模型、用對稱函數來保證排列不變性。由于第三種方式的簡潔性且容易在模型中實作,論文作者選擇使用第三種方式,既使用maxpooling這個對稱函數來提取點雲資料的特征。

  2. 點與點之間的空間關系

    一個物體通常由特定空間内的一定數量的點雲構成,也就是說這些點雲之間存在空間關系。為了能有效利用這種空間關系,論文作者提出了将局部特征和全局特征進行拼接的方式來聚合資訊。

  3. 不變性

    點雲資料所代表的目标對某些空間轉換應該具有不變性,如旋轉和平移。作者提出了在進行特征提取之前,先對點雲資料進行對齊的方式來保證不變性。對齊操作是通過訓練一個小型的網絡T-Net來得到轉換矩陣,并将之和輸入點雲資料相乘來實作。

三、PointNet網絡結構

(閱讀筆記)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation一、動機和貢獻二、點雲特性三、PointNet網絡結構

分類網絡

以n個點作為輸入,三層通道表示(x,y,z)三維坐标,先後經過輸入點雲變換、MLP點雲處理、點雲特征變換、MLP特征處理、全局最大池化、MLP(Dropout層),最終輸出k類分數向量。(Batchnorm用于所有帶有ReLU的層;MLP實際為卷積層)

具體的網絡子子產品:

  1. 輸入點雲對齊(變換):T−Net是一個微型的PointNet網絡,接收原始點雲資料,生成一個3×3尺寸的仿射變換矩陣,來對點雲的旋轉、平移等變化進行規範化處理;

    (1)T−Net第一步:獲得高維特征

    (n,3)–>conv(1,1,64)–>(n,64)–>conv(1,1,128)–>(n,128)–>conv(1,1,1024)–>(n,1024)–>max-pool(n,1)–>(1,1024)–>fc(512,1024)–>(1,512)->fc(256,512)–>(1,256)

    (2)T−Net第二步:獲得點雲旋轉矩陣

    assert K=3;

    weights=(256,3K);biases=(1,KK);

    biases=biases + [1,0,0,0,1,0,0,0,1];

    transform=(1,256)×(256,KK)+biases=(1,KK)–>reshape(K,K)=(3,3)

    (3)矩陣乘法:(n,3)點雲與(3,3)變換矩陣相乘,輸出(n,3)特征;

  2. MLP點雲特征提取

    (n,3)–>conv(1,1,64)–>(n,64)–>conv(1,1,64)–>(n,64)

  3. 點雲特征對齊:T−Net類似于輸入點雲變換,生成一個64×64尺寸的仿射變換矩陣;

    (1)T−Net第一步:獲得高維特征

    (n,64)–>conv(1,1,64)–>(n,64)–>conv(1,1,128)–>(n,128)–>conv(1,1,1024)–>(n,1024)–>max-pool(n,1)–>(1,1024)–>fc(512,1024)–>(1,512)->fc(256,512)–>(1,256)

    (2)T−Net第二步:獲得點雲旋轉矩陣

    assert K=64;

    weights=(256,3K);biases=(1,KK);

    biases=biases + [1,0,0,0,1,0,0,0,1];

    transform=(1,256)×(256,KK)+biases=(1,KK)–>reshape(K,K)=(64,64)

    (3)矩陣乘法:(n,64)特征與(64,64)變換矩陣相乘,輸出(n,64)特征;

  4. MLP點雲特征提取

    (n,64)–>conv(1,1,64)–>(n,64)–>conv(1,1,128)–>(n,128)–>conv(1,1,1024)–>(n,1024)

  5. 全局最大池化

    對于(n,1024)尺寸特征矩陣,每個特征通道執行全局最大池化,n個特征輸出一個最大特征,共輸出(1,1024)尺寸特征向量;

    (n,1024)–>max-pool(n,1)–>(1,1024)

  6. MLP(含Dropout層)

    對于(1,1024)尺寸特征向量,通過三層感覺機得到1024–>512–>256–>k,輸出k類分類向量;

    (1,1024)–>fc(512,1024)–>(1,512)–>dropout(keep_prob=0.7)–>(1,512)–>fc(256,512)–>(1,256)–>dropout(keep_prob=0.7)–>(1,256)->fc(k,256)–>(1,k)

分割網絡

分割網絡是分類網絡的擴充,它連接配接全局和局部特征,并輸出m類分數向量。

  1. 局部特征(n,64)與池化後的全局特征拼接(1,1024)

    對于n個點的每個點特征(1,64),将全局特征(1,1024)拼接在後面,構成拼接特征(1,1088),n個點共有(n,1088);

  2. MLP特征處理

    (n,1088)–>conv(1,1,512)–>(n,512)–>conv(1,1,256)–>(n,256)–>conv(1,1,128)–>(n,128)–>conv(1,1,128)–>(n,128)–>conv(1,1,m)–>(n,m)

    由于點雲的分割問題可以看做是對于每一個點的分類問題,需要對每一個點的分類進行預測。在通過對全局+局部特征學習後,最後将每一個點分類到50類(m=50)中,并輸出n*50的輸出。

繼續閱讀