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