輸入:一幀的全部點云數(shù)據(jù)的集合抑堡,表示一個nx3的二維張量
其中摆出,n為點云數(shù)量,3表示xyz坐標
實現(xiàn)流程圖:
1首妖、輸入數(shù)據(jù)首先與T-net學習到的轉換矩陣相乘偎漫,來對齊(得到想要的輸出格式),保證了模型的對特定空間轉換的不變性(指的是點云數(shù)據(jù)所代表的目標對某些空間轉換應該具有不變性有缆,如旋轉和平移等剛體變換)浸踩。
如何實現(xiàn)對齊:
通過訓練一個小型的網(wǎng)絡(也就是上圖中的T-Net)來得到轉換矩陣湖饱,并將之和輸入點云數(shù)據(jù)相乘來實現(xiàn)。
得到對齊矩陣后:
input transform矩陣的獲取還是比較簡單,這么一套操作下來边篮,這個 input transform矩陣就不是固定的了,它會根據(jù)網(wǎng)絡的輸入動態(tài)調整矩陣的權重雕什。
理解轉換矩陣就是可變參數(shù) input transform裕照,根據(jù)網(wǎng)絡輸入調整權重,調整輸入
2在刺、通過多個mlp對各點云數(shù)據(jù)進行特征提取后逆害,再用一個T-net對特征進行對齊头镊。
3、在特征的各個維度上執(zhí)行maxpooling操作來得到最終的全局特征魄幕。
4相艇、對分類任務,將全局特征通過mlp來預測最后的分類分數(shù)纯陨;對分割任務坛芽,將全局特征和之前學習到的各點云的局部特征進行串聯(lián),再通過mlp得到每個數(shù)據(jù)點的分類結果翼抠。
分割任務(1088=1024+64)
torch.eye:正交矩陣
返回值是【1 0 0咙轩;0 1 0;0 0 1】
參考文獻:【3D視覺】PointNet和PointNet++ - 知乎 (zhihu.com)
PointNet這篇文章中確實沒有做到像CNN那樣逐層提取局部特征阴颖。我們知道在CNN中活喊,一個點會與周圍若干點進行加權求和(具體取決于卷積核大小)量愧,然后獲取一個新的點钾菊,隨著網(wǎng)絡層數(shù)加深,深層網(wǎng)絡的一個點對應原始圖像的一個映射區(qū)域偎肃,這就是感受野的概念煞烫。但是本文做的特征提取都是點之間獨立進行的,這勢必會造成一些問題累颂,至于具體的問題解決滞详,作者在PointNet++展開了說明。
pointnet++
是在沒有提取局部特征前提下紊馏,導致模型泛化能力有限(尤其是在復雜場景下)
在pointnet++文章中茵宪,針對三個問題,提出了三種解決方法
問題1 : 點云圖數(shù)據(jù)量大瘦棋,點云很多稀火,導致計算量過大從而限制模型的使用,如何解決赌朋?
從所有點云數(shù)據(jù)中采樣指定數(shù)量的點凰狞,希望這些指定數(shù)量的點能夠包含盡可能多的有用信息。
提出了farthest point sampling (FPS) algorithm沛慢,中文翻譯就是最遠點采樣算法來實現(xiàn)從N個點中采樣 N’個點赡若。
算法流程:
(1)隨機選擇一個點作為初始點作為已選擇采樣點;
(2)計算未選擇采樣點集中每個點與已選擇采樣點集之間的距離distance团甲,將距離最大的那個點加入已選擇采樣點集逾冬,
(3)更新distance,一直循環(huán)迭代下去,直至獲得了目標數(shù)量的采樣點身腻。
問題2:如何將點集劃分為不同的區(qū)域产还,并獲取不同區(qū)域的局部特征?
上面已經(jīng)對原始點云數(shù)據(jù)進行了最遠點采樣嘀趟,降低了數(shù)據(jù)的冗余度脐区,減少了PointNet++模型的輸入大小,但是并未進行局部特征的提取她按。
換言之:作者想三維卷積
如何實現(xiàn)三維卷積呢牛隅?
(1)預設搜索區(qū)域的半徑R與子區(qū)域的點數(shù)K
(2)類似三維的kmeans算法
問題:什么是重采樣?
至此酌泰,作者介紹了如何像CNN那樣媒佣,實現(xiàn)子區(qū)域的定義,進而實現(xiàn)局部特征的提取陵刹。
采樣層Sampling layer
輸入:Nx(d+C)
其中:N是點云數(shù)據(jù)的數(shù)據(jù)點數(shù)量
d為xyz坐標(三維)
C是點上的特征(用來形容點的屬性的默伍,一般為0),輸出:N'x(d+c)
其中N’表示通過最遠點采樣算法后獲得的采樣點(篩選后)
組層Grouping layer
輸入:Nx(d+C)
輸出:N'xKx(d+C)
其中K為根據(jù)N'(FPS選擇的點圍起來的區(qū)域內的點的個數(shù))
獲得N個子區(qū)域后授霸,每個子區(qū)域怎么進行區(qū)域特征提取呢?
pointnet結構如下:
很明顯融合局部信息的并不是加權求和际插,而是max pool碘耳。作者通過不斷的Sample layer/Grounping layer/Pointnet(三個合在一起叫做set abstraction),類似于CNN中不斷堆疊卷積層框弛,實現(xiàn)了對局部特征不斷的提取辛辨。
問題3:點云不均勻的時候,在密集區(qū)域學習出來的特征可能不適合稀疏區(qū)域瑟枫,這個問題應該如何解決斗搞?
于是作者提出了兩種特征融合方式,分別為
(1)Multi-scale grouping (MSG);
(2)Multiresolution grouping (MRG).
對于MSG而言慷妙,是對不同半徑的子區(qū)域進行特征提取后僻焚,再進行特征堆疊,特征提取過程還是Pointnet結構
代碼理解:
xyz: pointcloud data, [B, N, 3]
B:Batchsize
N:N指的是所有點的數(shù)量膝擂,3表示xyz
npoints:采樣點的數(shù)量
創(chuàng)新點總結歸納
1虑啤、損失函數(shù)改進
2、注意力機制
自注意力機制架馋,交叉注意力機制狞山,混合注意力機制,通道注意力機制(注重特征之間的交互叉寂,類似哈希表萍启,transformer qkv查詢機構等等)
3、數(shù)據(jù)增強(前處理)
mixup,翻轉勘纯,copy paste 等增加數(shù)據(jù)量
多源數(shù)據(jù)融合(紅外+原始圖像)
4局服、卷積模塊、功能模塊屡律、激活函數(shù)等替換(傳統(tǒng)的)
卷積(級聯(lián)腌逢、并行,插入超埋、跳躍(捷徑分支)搏讶,堆疊,殘差結構霍殴,簡化媒惕、交互)
5、網(wǎng)絡的更改
(1)檢測頭(分類来庭,回歸等)
(2)骨干網(wǎng)絡的替換
(3)pannet層的替換(多尺度融合妒蔚、跳躍尺度融合,交叉融合)
6月弛、數(shù)據(jù)處理
(1)利用更好的方式提取特征肴盏,處理數(shù)據(jù)特征
一個功能模塊(有多個參數(shù)調節(jié)),例如采樣中就存在6種方式
(2)投影(圖像-點云)帽衙,(點云-圖像)菜皂,兩者結合
7、訓練策略改進
(1)優(yōu)化器
(2)數(shù)據(jù)增強
(3)學習率