PointNet的缺點:算法
利用度量空間距離,咱們的網絡可以經過增長上下文尺度來學習局部特徵。網絡
新的集合學習層來自適應地結合多個尺度的特徵。 架構
一,介紹:app
PointNet++:分層方式處理在度量空間中採樣的一組點 。框架
須要解決的問題:dom
這兩個問題是相關的:性能
點集的分割必須產生跨分區的共同結構,以便像卷積設置那樣共享局部特徵學習者的權重。學習
PointNet++在嵌套的分割輸入集上遞歸的運用pointNetui
每一個分區:相鄰的球。每一個分區包含質心位置和規模。質心經過最遠採樣點算法得到(FPS)編碼
感覺野依賴輸入數據和度量。
二.問題描述:
X = (M; d) 是離散的度量空間,m是點,d是距離度量。m的密度不均勻,
三.方法:
能夠看做增長了層次結構的pointNet,
New architecture builds a hierarchical grouping of points and progressively abstract larger and larger local regions along the hierarchy.
At each level, aset of points is processed and abstracted to produce a new set with fewer elements.
抽象層的三個關鍵層:
Sampling layer : selects a set of points from input points (肯定局部區域的圖心)
Grouping layer : 分組層經過查找質心周圍的「鄰近」點來構建局部區域集。
PointNet layer :使用小型PointNet將局部區域模式編碼爲特徵向量
輸入:N * (d + c) 矩陣,d緯度座標,c點特徵緯度。
輸出:. It outputs an N0 × (d + C0) matrix of N0 subsampled points with d-dim coordinates and new C0-dim feature vectors summarizing local context
採樣層:迭代最遠點採樣(FPS)來選擇點x1,x2...的子集 ,(距離其他的子集在歐幾里得空間上距離最遠)
分組層:
輸入:大小爲N(d + C)的點集和大小爲NId的一組質心的座標
輸出:groups of point sets of size N0 × K × (d + C),where each group corresponds to a local region and K is the number of points in the neighborhood of centroid points
使用方法:bell查詢(和cnn相比)
pointNet層:
輸入:N0 local regions of points with data size N0×K×(d+C)
輸出:輸出中的每一個局部區域都由其質心和局部特徵抽象出來,這些特徵對質心的鄰域進行編碼。 Output data size is N0 × (d + C0)
將局部的點座標進行轉化,經過使用相對座標和點要素,咱們能夠捕捉到局部區域內的點對點關係 。
3.3 對不均勻採樣的魯棒特徵學習:
we should look for larger scale patterns in greater vicinity.
density adaptive PointNet layers
Multi-scale grouping (MSG).
(各類稀疏性的訓練集)
Multi-resolution grouping (MRG). (這種更好)
MSG的計算成本過高。新方法:still preserves the ability to adaptively aggregate information according to the distributional properties of points。
當局部區域的密度較低時,第一個矢量可能不如第二個矢量可靠,由於在計算第一個矢量中的子區域包含更稀疏的點而且更多地受到抽樣不足的影響。 在這種狀況下,第二個向量應該加權得更高。
當局部區域的密度很高時,第一個矢量提供更精細的細節信息,由於它具備以較低分辨率遞歸地檢查較高分辨率的能力。
3.4 Point Feature Propagation for Set Segmentation
在集合抽象層中,對原始點集進行二次抽樣。 然而,在集合分割任務中,好比語義點標註,
咱們但願得到全部原始點的點特徵。
方法1:
always sample all points as centroids in all set abstraction levels (高成本)
方法2:
propagate features from subsampled points to the original points
hierarchical propagation strategy with distance based interpolation and across level skip links
In a feature propagation level, we propagate point features from
Nl × (d + C) points to Nl-1 points where Nl-1 and Nl (with Nl ≤ Nl-1) are point set size of input and output of set abstraction level l.
咱們經過在Nl1點的座標處插入Nl個點的特徵值f來實現特徵傳播。在插值的衆多選擇中,咱們使用基於k近鄰的反向距離加權平均值。
The interpolated features on Nl-1 points are then concatenated with skip linked point features from the set abstraction level.
結果:
本質:是PointNet的分層版本
PointNet的不足:
1)沒法很好地捕捉由度量空間引發的局部結構問題,由此限制了網絡對精細場景的識別以及對複雜場景的泛化能力。
2)欠缺了對局部特徵的提取及處理,好比說點雲空間中臨近點通常都具備相近的特徵,同屬於一個物體空間中的點的機率也很大,就比如二維圖像中,同一個物體的像素值都相近同樣。
3)點雲數據的一個特徵是數據密度不一樣,體現出近多遠少等問題,而在密度不一樣的狀況下,使用統一的模板處理這些數據顯然是不對的,基於此,PointNet++的做者提出了密度適應的網絡結構。
PointNet++解決的問題:
1.如何對點雲進行局部劃分
對數據集進行劃分,提取局部特徵,而後不斷抽象,提取更高維的特徵,是PointNet++的基本思路,那麼首先的問題是如何定義局部,PointNet++給出的解決思路是使用點球模型,從所有數據集中選出若干質心點,而後選取半徑,完成覆蓋整個數據集的任務。在質心點的選取上,採用的是FPS算法,即隨機選取一個點,而後選擇離這個點最遠的點加入到結果集中,迭代這個過程,直到結果集中點的數量達到某個給定值,在PointNet++中,很常見的一個詞是metric,即度量,PointNet++中的不少東西都是依賴度量的,而在PointNet中,其實對於度量並非很強調,或者細究的話都有可能不須要是度量空間(這個度量指的是什麼呢?)。在讀到中心點的集合後,第二個問題是如何選擇半徑,其實半徑的選取是個很麻煩的事,在點雲數據集中,有些地方比較稠密,有些地方比較稀疏,稠密的地方必然半徑要小,而稀疏的地方必然半徑要大,否則可能都提取不出什麼特徵,此時引出第二個問題——密度適應,若半徑肯定,即局部大小肯定,此時訓練的模板大小也就肯定了。
2.如何對點雲進行局部特徵提取
每一個圖層都有三個子階段:採樣,分組和PointNeting。在第一階段,選擇質心,在第二階段,把他們周圍的鄰近點(在給定的半徑內)建立多個子點雲。而後他們將它們給到一個PointNet網絡,並得到這些子點雲的更高維表示。而後,他們重複這個過程。
(這兩個問題是關聯的)
3.如何進行密度適應?
論文中提到的處理密度適應的方法有兩種
方法1爲MSG,即把每種半徑下的局部特徵都提取出來,而後組合到一塊兒.
做者在如何組合的問題上提到了一種random dropping out input points的方法,存在兩個參數p和q,每一個點以q的機率進行丟棄,而q爲在[0,p]之間均勻採樣,這樣作,可讓總體數據集體現出不一樣的稠密性和均勻性。MSG有一個巨大的問題是運算的問題,而後做者提出we can avoid the feature extraction in large scale neighborhoods at lowest levels,由於在低層級處理大規模數據,可能模板處理能力不夠,感覺野有些過大,基於此,做者提出了MRG。
方法二MRG有兩部分向量構成,分別爲上一層即Li-1層的向量和直接從raw point上提取的特徵構成,當點比較稀疏時,給從raw point提取的特徵基於較高的權值,而若點比較稠密,則給Li-1層提取的向量給予較高的權值,由於此時raw point的抽象程度可能不夠,而從Li-1層的向量也由底層抽取而得,表明着更大的感覺野。當局部區域的密度較低時,第一個矢量可能不如第二個矢量可靠,由於在計算第一個矢量中的子區域包含更稀疏的點而且更多地受到抽樣不足的影響。 在這種狀況下,第二個向量應該加權得更高。 當局部區域的密度很高時,第一個矢量提供更精細的細節信息,由於它具備以較低分辨率遞歸地檢查較高分辨率的能力。
總體的網絡結構:
在總體網絡結構中,首先進行set abstraction,這一部分主要即對點雲中的點進行局部劃分,提取總體特徵,如圖可見,在set abstraction中,主要有Sampling layer、Grouping layer、以及PointNet layer三層構成,sampling layer即完成提取中心點工做,採用fps算法,而在grouping中,即完成group操做,採用mrg或msg方法,最後對於提取出得點,使用pointnet進行特徵提取。在msg中,第一層set abstraction取中心點512個,半徑分別爲0.1、0.2、0.4,每一個圈內的最大點數爲16,32,128。在classification的處理上,與pointnet類似。
分割和語義部分:
在集合抽象層中,對原始點集進行二次抽樣。 然而,在集合分割任務中,好比語義點標註,
咱們但願得到全部原始點的點特徵。
方法1:
always sample all points as centroids in all set abstraction levels (高成本)
方法2:
propagate features from subsampled points to the original points
hierarchical propagation strategy with distance based interpolation and across level skip links
In a feature propagation level, we propagate point features from
Nl × (d + C) points to Nl-1 points where Nl-1 and Nl (with Nl ≤ Nl-1) are point set size of input and output of set abstraction level l.
咱們經過在Nl1點的座標處插入Nl個點的特徵值f來實現特徵傳播。在插值的衆多選擇中,咱們使用基於k近鄰的反向距離加權平均值。
插值及回溯的方式,對於l - 1層的點,它有l層點插值後與在set abstraction時獲得的特徵進行1 * 1的卷積,最終獲得l - 1層的點的值,一直回溯,最終獲得原始點的score。插值公式以下:
The interpolated features on Nl-1 points are then concatenated with skip linked point features from the set abstraction level.