3D点云(3D point cloud)及PointNet、PointNet++
文章目錄
- 一、什么是3D點(diǎn)云
- 二、基于3D點(diǎn)云的一些任務(wù)
- 三、如何提取3D點(diǎn)云數(shù)據(jù)的特征:PointNet
- (1)在PointNet之前也有工作在做點(diǎn)云上的深度學(xué)習(xí)
- (2)PointNet
- (1)置換不變性(Permutation Invariance)
- (2)角度不變性(Transformation Invariance)
- 分類和分割網(wǎng)絡(luò)
- PointNet的優(yōu)勢:占用內(nèi)存小且速度快(高效)
- PointNet的優(yōu)勢:對數(shù)據(jù)丟失非常魯棒
- 四、PointNet++
- PointNet的局限性
- 第二代網(wǎng)絡(luò):PointNet++
- (1)Hierarcgical feature learning(多級特征學(xué)習(xí))
- 在多級特征學(xué)習(xí)網(wǎng)絡(luò)中,是**如何選擇PointNet++作用區(qū)域球的半徑**的呢?
- 五、PointNet和PointNet++在三維場景理解中的應(yīng)用
- 3D Object Detection
- Previous Work
- Frustum PointNets for 3D Object Detection
- key to success
- 六、Q&A
一、什么是3D點(diǎn)云
https://www.youtube.com/watch?v=Ew24Rac8eYE
傳統(tǒng)圖像數(shù)據(jù)是2維的
3D點(diǎn)云是3維的,可以表達(dá)更多信息
- 比如對化工廠進(jìn)行違章識別、安全隱患的識別
- 城市管理
二、基于3D點(diǎn)云的一些任務(wù)
- 點(diǎn)云分割
- 點(diǎn)云補(bǔ)全
- 點(diǎn)云生成
- 點(diǎn)云物體檢測(3D物體檢測)
- 點(diǎn)云配準(zhǔn)(后續(xù)任務(wù)的基礎(chǔ))
一般點(diǎn)云數(shù)據(jù)都是基于激光雷達(dá)掃描生成的。
三、如何提取3D點(diǎn)云數(shù)據(jù)的特征:PointNet
初始的點(diǎn)云數(shù)據(jù)僅僅包含了每個點(diǎn)的坐標(biāo)信息(x,y,z),這些對我們要完成的后續(xù)任務(wù)遠(yuǎn)遠(yuǎn)不夠,我們還需要知道每個點(diǎn)和周圍的點(diǎn)的關(guān)系甚至是每個點(diǎn)和全局的關(guān)系。
(1)在PointNet之前也有工作在做點(diǎn)云上的深度學(xué)習(xí)
點(diǎn)云數(shù)據(jù)并不是定義在一個規(guī)則的網(wǎng)格上,空間上可以任意分布、數(shù)量也可以任意,是不規(guī)則數(shù)據(jù)。
一種解決方案:
- 柵格化(voxelization)將無規(guī)則的3點(diǎn)云變成一種規(guī)則的數(shù)據(jù),均勻分布在一個3維網(wǎng)格中。
- 3d卷積處理處理成3維柵格的數(shù)據(jù)
這種方式的缺點(diǎn):
- 如果為了降低時間復(fù)雜度和空間復(fù)雜度選擇降低圖片的分辨率,會使學(xué)習(xí)效果大打折扣;
- 如果不計(jì)時間和空間復(fù)雜度,將大分辨率的圖像輸入3D卷積網(wǎng)絡(luò)。其實(shí)3D點(diǎn)云僅僅掃描的是表面信息,這樣做柵格內(nèi)部有大片空白,造成了算力資源的大量浪費(fèi)。
(2)PointNet
那么如何構(gòu)造一個backbone來提取3D點(diǎn)云的這些特征呢?
點(diǎn)云數(shù)據(jù)的特點(diǎn)
(1)置換不變性(Permutation Invariance)
點(diǎn)云數(shù)據(jù)是一個inordered set,每個點(diǎn)出現(xiàn)的順序不影響集合的本身
N表示點(diǎn)云中的有N個點(diǎn),D代表每個點(diǎn)擁有D維的特征。D中可以包含點(diǎn)的坐標(biāo)信息(x,y,z),也可以包含顏色、法向量…
因?yàn)辄c(diǎn)集是無序的,一共有N!種排列組合。這要求我們設(shè)計(jì)的backbone對所有置換都具有不變性。
最簡單的最大池化和平均池化函數(shù)雖然具有置換不變性,但是無疑會丟失有意義的幾何信息。
- 因?yàn)橹苯訉c(diǎn)云做對稱性的操作會丟失重要的幾何信息;
- 我們可以先將3D點(diǎn)云映射到高維空間h,與此同時就產(chǎn)生了很多冗余信息;
- 此時,我們再在高維空間中進(jìn)行對稱操作g,我們依然會得到充足的幾何信息,這樣會避免過多的幾何信息的丟失。
- 最后我們再通過另一個網(wǎng)絡(luò)γ\gammaγ來進(jìn)一步消化這個信息,得到一個點(diǎn)云的特征。
這是什么?不太理解。
(2)角度不變性(Transformation Invariance)
比如說一輛車,在不同的角度觀察,點(diǎn)云中的每個點(diǎn)的坐標(biāo)會有所變化,但表示的都是同一輛車。
如何設(shè)計(jì)網(wǎng)絡(luò)能使得網(wǎng)絡(luò)能夠適應(yīng)這種視角的變化呢?
增加基于點(diǎn)云數(shù)據(jù)本身的變換函數(shù)模塊:
通過一個神經(jīng)網(wǎng)絡(luò)T-Net生成變換的參數(shù),再用生成的變換函數(shù)對輸入數(shù)據(jù)進(jìn)行變換。使得這個變換函數(shù)能夠自動對準(zhǔn)對齊我們的輸入,后面的網(wǎng)絡(luò)能夠適應(yīng)不同角度的輸入數(shù)據(jù),處理任務(wù)變得更加簡單。
對點(diǎn)云數(shù)據(jù)進(jìn)行變換操作非常簡單,只需要進(jìn)行一個矩陣乘法。
做一些擴(kuò)展:不僅可以對輸入數(shù)據(jù)進(jìn)行變換處理,也可以對點(diǎn)的中間特征進(jìn)行特征空間的變換。
比如,一開始已經(jīng)將點(diǎn)的特征變成K維,那么現(xiàn)在有一個N * K的矩陣。我們可以設(shè)計(jì)一個K * K的矩陣進(jìn)行矩陣乘法對這些中間特征進(jìn)行特征空間的變換。這樣可以得到另一組特征。
對于以上涉及的這些高維的變換,優(yōu)化的難度也更高,可能會需要一些regularization:比如會盡可能希望這個矩陣接近于正交矩陣。
分類和分割網(wǎng)絡(luò)
單個點(diǎn)的特征和全局的坐標(biāo)結(jié)合起來實(shí)現(xiàn)分割的功能。
最簡單的就是:將全局的特征重復(fù)n遍,每一個和原來的單個點(diǎn)的特征連接在一起,相當(dāng)于單個點(diǎn)在全局特征中進(jìn)行了一次檢索,“我在全局特征中處于哪一個位置,我大概屬于哪一個類”
PointNet的優(yōu)勢:占用內(nèi)存小且速度快(高效)
FLOPs:計(jì)算量,floating point operations的縮寫(s表復(fù)數(shù)),意指浮點(diǎn)運(yùn)算數(shù),理解為計(jì)算量。可以用來衡量算法/模型的復(fù)雜度。
因?yàn)镻ointNet的高效性,其非常適用于移動設(shè)備和可穿戴設(shè)備。
PointNet的優(yōu)勢:對數(shù)據(jù)丟失非常魯棒
對數(shù)據(jù)的丟失都非常魯棒
why?
解釋這個可以通過一個可視化去理解:
最大池化使得模型只去關(guān)注critical points,這也使得模型對點(diǎn)的丟失具有較好的魯棒性。
四、PointNet++
PointNet的局限性
在PointNet中,先對每一個點(diǎn)通過MLP做一個從低維到高維的映射,再對高位的特征通過MLP結(jié)合到一起。所以PointNet要么是對一個點(diǎn)做操作,要么是對所有點(diǎn)全局的特征在做操作。所以PointNet和3D卷積相比缺少了一個局部的概念,比較難對一些精細(xì)的特征進(jìn)行學(xué)習(xí)。此外,在平移不變性上也有一定的缺陷,如果對點(diǎn)云的每一個點(diǎn)進(jìn)行一個平移操作,那么經(jīng)過PointNet學(xué)習(xí)的特征也會完全不一樣。
第二代網(wǎng)絡(luò):PointNet++
- Hierarcgical feature learning
- Translation invariant
- Permutation invariant
(1)Hierarcgical feature learning(多級特征學(xué)習(xí))
也可以通過一種“up-convolution”的方式將pointnet提取的特征點(diǎn)復(fù)原回去。
在多級特征學(xué)習(xí)網(wǎng)絡(luò)中,是如何選擇PointNet++作用區(qū)域球的半徑的呢?
在CNN中現(xiàn)在越來越流行選擇非常小的kernel,比如在VGG中大量應(yīng)用3*3的kernel。
那么在PointNet++中是不是這樣呢?其實(shí)這是不一定的。
在point cloud中非常常見的一種情況是采樣率非常不均勻。比如一個depth camera采樣到的point cloud,近的點(diǎn)會非常密集,遠(yuǎn)的點(diǎn)會非常稀疏。那么對于PointNet++的學(xué)習(xí)就會在稀疏的地方產(chǎn)生很大的問題。比如在某個地方我們的劃定的作用區(qū)域中只有一個點(diǎn),那么在那個區(qū)域中學(xué)到的特征就會非常不穩(wěn)定。這是我們很想避免的。
為了量化這個問題,我們做了一個控制變量的實(shí)驗(yàn),驗(yàn)證了點(diǎn)的疏密對PointNet++網(wǎng)絡(luò)精確度的影響:小的kernel會受采樣率不均勻影響較大。
針對這個問題,可以設(shè)計(jì)一些新的網(wǎng)絡(luò)結(jié)構(gòu)來避免這個問題。
- Muti-scale grouping(MSG)
- Muti-res gruoping(MRG)
- MRG的好處是可以節(jié)省一些計(jì)算。而MSG需要對不同的尺度分別計(jì)算。
效果對比:
五、PointNet和PointNet++在三維場景理解中的應(yīng)用
- 3D Object Detection
- 3D Scene Flow
3D Object Detection
Previous Work
- 3D region + classification
基于點(diǎn)云,在三維空間中做region proposal,然后投影到圖片中,在圖片中畫出3D的box,再進(jìn)行物體的識別;也可以用3D的CNN來做。
缺點(diǎn):
- 3D空間的搜索量非常大,計(jì)算量也非常大。
- 點(diǎn)云的分辨率有限,比較難發(fā)現(xiàn)比較小的物體。
- RGB or RGB-D image based object detection
缺點(diǎn):
RGB圖像:依賴物體大小的先驗(yàn)知識,很難估計(jì)物體的精確位置。
RGB-D圖像:兩個實(shí)際距離很遠(yuǎn)的點(diǎn)投影到圖像上的距離有可能非常近。
在圖片這種表達(dá)形式下,用2D的CNN還是受到了很大的局限性。
很難精確地估計(jì)物體的深度和大小
Frustum PointNets for 3D Object Detection
2D detectors for region proposal + 3D frustum + PointNets
整體思想:
- 在二維圖像上檢測劃定初步的region proposal,用于減少3D空間搜索成本
- 在劃定的region propoasl上生成相應(yīng)的3D視錐(Frustum),在該視錐內(nèi)對point cloud用PointNets進(jìn)行深度學(xué)習(xí)得到精確的3D proposal
缺點(diǎn):
occlusions and clutters are common in frustum point clouds
key to success
- 歸一化:因?yàn)槭屈c(diǎn)云數(shù)據(jù),所以歸一化只需對點(diǎn)做矩陣乘法就行了。
六、Q&A
- PointNet是不是沒有考慮點(diǎn)之間的關(guān)系?
PointNet++考慮點(diǎn)之間的關(guān)系了 - STN的全稱是什么?
special transformer network - 關(guān)鍵點(diǎn)是怎么選取的?
關(guān)鍵點(diǎn)不是選取的,是我們可視化的,可視化了這個網(wǎng)絡(luò)選擇了哪些關(guān)鍵點(diǎn)
總結(jié)
以上是生活随笔為你收集整理的3D点云(3D point cloud)及PointNet、PointNet++的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山东计算机考试准考证打印入口
- 下一篇: 二〇一六年大四狗找工作