1. 程式人生 > 實用技巧 >PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 論文筆記

PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 論文筆記

PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

PointNet:三維分類與分割中點集的深度學習
論文地址https://arxiv.org/pdf/1612.00593.pdf
程式碼地址https://github.com/ModelBunker/PointNet-TensorFlow

解決的問題

前人將這些三維資料轉換為規則的三維體素網格或影象集合(例如,檢視),然後將其輸入到深網體系結構中。然而,這種資料表示轉換使生成的資料變得巨大,同時也引入了量化偽影,從而掩蓋了資料的自然不變性

原理

點雲資料的三大特徵

:無序性、稀疏性、資訊量有限。
歐式空間裡的點雲特徵(PointNet的靈感來源):
無序性:雖然輸入的點雲是有順序的,但是顯然這個順序不應當影響結果。
點之間的互動:每個點不是獨立的,而是與其周圍的一些點共同蘊含了一些資訊,因而模型應當能夠抓住區域性的結構和區域性之間的互動。
變換不變性:比如點雲整體的旋轉和平移不應該影響它的分類或者分割
PointNet網路直接將點雲作為輸入,併為整個輸入輸出類標籤,或者為輸入的每個點輸出每個點的部分標籤。輸入為三通道點雲資料(xi,yi,zi),也可以有額外的通道比如顏色、法向量等,輸出整體的類別/每個點所處的部分/每個點的類別。
對於分類任務,輸出為k個分數,分別對應k個可能的類別。
對於語義分割任務,輸出n×m個分數,分別對應n個點相對於m各類別的分數。
以上,方法的關鍵是使用單一的對稱函式max pooling。網路有效地學習了一組優化函式,這些函式選擇了點雲中有資訊的點,並對其選擇的原因進行了編碼。網路的最終完全連線層將這些學習到的最優值聚合為上述整個形狀的全域性描述符(形狀分類),或用於預測每點標籤(形狀分段)。在這裡插入圖片描述

其中,mlp是通過共享權重的卷積實現的,第一層卷積核大小是1x3(因為每個點的維度是xyz),之後的每一層卷積核大小都是1x1。即特徵提取層只是把每個點連線起來而已。經過兩個空間變換網路和兩個mlp之後,對每一個點提取1024維特徵,經過maxpool變成1x1024的全域性特徵。再經過一個mlp(程式碼中運用全連線)得到k個score。分類網路最後接的loss是softmax

創新點

(1)空間變換網路解決旋轉問題:三維的STN可以通過學習點雲本身的位姿資訊學習到一個最有利於網路進行分類或分割的DxD旋轉矩陣(D代表特徵維度,pointnet中D採用3和64)。至於其中的原理,我的理解是,通過控制最後的loss來對變換矩陣進行調整,pointnet並不關心最後真正做了什麼變換,只要有利於最後的結果都可以。pointnet採用了兩次STN(空間變換網路),第一次input transform是對空間中點雲進行調整,直觀上理解是旋轉出一個更有利於分類或分割的角度,比如把物體轉到正面;第二次feature transform是對提取出的64維特徵進行對齊,即在特徵層面對點雲進行變換。
(2)maxpooling解決無序性問題:網路對每個點進行了一定程度的特徵提取之後,maxpooling可以對點雲的整體提取出global feature。

優點

在模型Net40上的分類結果本文的網路在3D輸入的深網中達到了最先進的水平。

缺點

​ PointNet使用對稱函式整合全域性資訊,解決點的無序性問題,然而從單點使用mlp的特徵提取,到max pooling進行全域性特徵整合,最終得到的特徵,都只是從一個點上提取的,沒有考慮點和點之間的相關性特徵。

實驗結果

在資料集ModelNet40上的分類結果
同時由於引數少,訓練快,屬於輕量級網路。在這裡插入圖片描述
魯棒性實驗
當PointNet缺失了60%左右的點的時候,其網路的效果都不怎麼減少:在這裡插入圖片描述
臨界點和上界形狀視覺化
閱讀論文發現,能夠最大程度啟用網路的點都是物體的主幹點(下圖第二行),將其上取樣,很容易能得到原始的結構。因此這就是PointNet網路的缺失魯棒性的來源在這裡插入圖片描述
部分分割結果視覺化在這裡插入圖片描述
語義分割的定性結果在這裡插入圖片描述
實現秩序不變性的三種途徑,實驗結果表明Maxpooling結果最好
在這裡插入圖片描述