pointnet与pointnet++
PointNet: Deep Learning on Point Sets for 3D Classi?cation and Segmentation
1. 做了啥?
- 設計了一個新的深度網絡架構,適用于無序的三維點集
- 展示了這個網絡在形狀部分分割和語義理解任務中該如何訓練
- 對網絡的穩定性和效率性做了分析
- 說選定的神經元在網絡中計算出的三維特征,并對其性能進行直觀的解釋
2. 怎么做的?
-
設計了一個深度學網絡,這個網絡直接使用三維點云(點集:n x 3, n個點每個點有三個屬性x, y, z,表示空間坐標)作為輸入
-
對于分類任務:可以從三維模型中采樣一個點云作為輸入,也可以在實際場景中提前分割出來的點云;對于k個類別,網絡會輸出k個相對應的分數。
-
對于分割任務:輸入:可以是單個對象,也可以是實際場景的子空間;輸出:n x m的分數矩陣,表示每個點在m個類上的得分
-
對于每一個N×3的點云輸入,網絡先通過一個T-Net將其在空間上對齊(旋轉到正面),再通過MLP將其映射到64維的空間上,再進行對齊,最后映射到1024維的空間上。這時對于每一個點,都有一個1024維的向量表征,而這樣的向量表征對于一個3維的點云明顯是冗余的,因此這個時候引入最大池化操作,將1024維所有通道上都只保留最大的那一個,這樣得到的1×1024的向量就是N個點云的全局特征。
-
如果做的是分類的問題,直接將這個全局特征再進過MLP去輸出每一類的概率即可;
-
但如果是分割問題,由于需要輸出的是逐點的類別,因此其將全局特征拼接在了點云64維的逐點特征上,最后通過MLP,輸出逐點的分類概率。
三維點云介紹:三維點云指歐氏空間中的點集,表示一種幾何形狀,主要有一下三個特性
- T-Net對齊解決旋轉平移不變性;升維后用對稱函數解決無序性3維->64維->1024維;
- 遺留了一個問題:點與點之間的關系沒有學到,所以在場景分割任務中效果一般。
pointnet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
1. 改進特征提取方法
pointnet++使用了分層抽取特征的思想,把每一次叫做set abstraction。分為三部分:采樣層、分組層、特征提取層。首先來看采樣層,為了從稠密的點云中抽取出一些相對較為重要的中心點,采用FPS(farthest point sampling)最遠點采樣法,這些點并不一定具有語義信息。當然也可以隨機采樣;然后是分組層,在上一層提取出的中心點的某個范圍內尋找最近個k近鄰點組成patch;特征提取層是將這k個點通過小型pointnet網絡進行卷積和pooling得到的特征作為此中心點的特征,再送入下一個分層繼續。這樣每一層得到的中心點都是上一層中心點的子集,并且隨著層數加深,中心點的個數越來越少,但是每一個中心點包含的信息越來越多。
2. 解決點云密度不同問題
由于采集時會出現采樣密度不均的問題,所以通過固定范圍選取的固定個數的近鄰點是不合適的。pointnet++提出了兩個解決方案。
3.對采樣密度的魯棒性
可以發現,加上dropout(DP),本來他的作用是防止過擬合,但是如右圖的結果顯示DP對各個密度的數據都有更好的魯棒性。
總結
以上是生活随笔為你收集整理的pointnet与pointnet++的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 趣图:老师讲算法 vs 油管三哥讲算法
- 下一篇: 黄哲铿:妙用“缓存”,应对亿级流量峰值(