重读经典(点云深度学习开山之作):《Deep learning on point clouds for 3D scene understanding》(持续更新中)
本文介紹的是 PointNet 作者的博士論文:3D場景理解中的點云深度學習。從上圖可以看到,整個博士論文主要貢獻有兩塊:一是點云深度學習的網(wǎng)絡架構(gòu)(PointNet 和 PointNet++);二是在3D場景理解中的應用(Frustum Pointnets 和 FlowNet3D)。在本文中,將會按照博士論文篇幅順序?qū)?PointNet 和 PointNet++ 進行一次詳解介紹。關于后面兩章 3D 場景理解中的應用 感興趣的朋友可以看論文原文,這里就不介紹了。
文章目錄
- Abstract
- Acknowledgments
- Introduction & Background
- Deep Learning on Point Sets: PointNet
- Problem Statement
- PointNet Architecture
- Experiments
- Appendix
- From PointNet to PointNet++
- Problem Statement
- PointNet++ Architecture
- Experiments
- Appendix
- Conclusion and Outlook
- 參考文獻
Abstract
首先是論文摘要,可以看到摘要篇幅不長,主要有兩段:
- 第一段介紹點云是一種常用的幾何數(shù)據(jù)類型,在計算機視覺、計算機圖形學和機器人領域有著廣泛的應用。廉價的 3D 傳感器的出現(xiàn)使得點云數(shù)據(jù)可以廣泛獲得,而當前對自動駕駛汽車的興趣突顯了可靠和高效的點云處理的重要性。然而,由于點云自身格式的不規(guī)則,目前的卷積深度學習方法不能直接用于點云處理。大多數(shù)研究人員將點云數(shù)據(jù)轉(zhuǎn)換為規(guī)則的3D體素網(wǎng)格或圖像集合,這使得點云數(shù)據(jù)量變得巨大,同時也出現(xiàn)點云量化和其他問題。在本論文中,提出了一種新的神經(jīng)網(wǎng)絡 (PointNet和PointNet++),可直接處理點云,同時考慮了點云輸入的排列不變性。網(wǎng)絡對物體分類和部件分割到語義場景解析的各種應用提供了統(tǒng)一的架構(gòu),同時對各種輸入擾動和數(shù)據(jù)損壞具有高效和魯棒性。理論分析表明網(wǎng)絡可以逼近任何連續(xù)的集合函數(shù),并解釋了它的魯棒性。在 PointNet++ 中,我們進一步研究了點云中的局部內(nèi)容,研究了 3D 掃描中采樣密度不均勻的挑戰(zhàn),并設計了學習適應不同采樣密度的網(wǎng)絡層。
- 本文提出的架構(gòu)打開了新的以 3D 為中心的場景理解方法。我們展示了如何將 PointNets 技術(shù)應用于機器人領域中兩個重要的感知問題:3D物體檢測 和 3D場景流估計。在 3D物體檢測 方面,我們提出了一種新的基于 frustum 的檢測框架,實現(xiàn)了點云中的 3D實例分割 和 3D非模態(tài)的box估計 。我們的模型,稱為 Frustum PointNets,得益于點云提供的精確幾何信息,能夠通過在輸入上應用非參數(shù)和數(shù)據(jù)驅(qū)動的幾何變換來規(guī)范化學習問題。在大規(guī)模的室內(nèi)和室外數(shù)據(jù)集上進行評估,我們的實時檢測器都取得了最好的檢測效果。在場景流估計方面,我們提出了一種新的深度網(wǎng)絡 FlowNet3D,該網(wǎng)絡學習從兩幀點云中恢復 3D 運動流。與以往側(cè)重于二維表示和優(yōu)化光流的工作相比,我們的模型直接優(yōu)化了三維場景流,在實際 LiDAR 掃描的評估中顯示出巨大的優(yōu)勢。由于點云的普遍存在,我們的體系結(jié)構(gòu)并不局限于上述兩種應用,甚至不局限于三維場景理解。本文最后對其它潛在的應用領域和未來的研究方向進行了討論。
- 這里可以看到作者的摘要寫的還是很簡短的,前面介紹了設計的網(wǎng)絡結(jié)構(gòu),后面介紹了兩個具體感知應用。
Acknowledgments
下面是論文致謝,總共有五段:
- 作者第一段是感謝導師 Leonidas Guibas 教授 (Leo教授目前是美國兩院院士)。對我來說,Leo 是一位非凡的導師,也是一個學術(shù)榜樣。他總是保持純真,對新問題保持好奇心。我仍然感謝 Leo 對我的第一個項目的支持,這是小組中的第一個深度學習項目。自從那個項目以來,我們一直在一起學習和成長。現(xiàn)在我經(jīng)常驚訝于 Leo 在這些新主題上的淵博知識,以及他擁有的深刻洞察力。非常感謝 Leo 經(jīng)常提醒我要思考得更深,在研究中超越工程層面。最后但同樣重要的是,我感謝 Leo 給我的自由,無論是在選擇研究課題還是選擇職業(yè)道路上。Leo 給了我他的建議,但讓我決定我真正想做的是什么。 最后作者還感謝了論文閱讀委員會和答辯委員會們對論文的建議和評論。
- 第二段作者感謝的是博士期間一同工作的同學、同事。特別感謝的是 Hao Su,其也是 PointNet 共同一作和PointNet++ 作者之一。第三段作者感謝的是 Google 和 Nuro 公司,正是因為在這兩家公司實習,作者才去研究了點云上的深度學習以及物體檢測,作者也感謝了兩次實習的其他合作同事。第四段就是感謝家人,最后感謝了英偉達捐贈的 GPU 以及其它組織的支持。
Introduction & Background
論文前兩章導論和背景知識部分這里就不詳細介紹了,具體內(nèi)容大家可以看論文原文。
首先是介紹研究背景,最近,我們觀察到許多新興的應用需要感知 3D 環(huán)境或與 3D 對象交互。例如,在自動駕駛中,為了做出駕駛決策,機器人汽車需要意識到周圍的行人和汽車,并理解他們的動作。在增強現(xiàn)實(AR)中,AR 眼鏡配備了深度攝像頭來感知和理解 3D 幾何圖形,以便在正確的位置顯示虛擬對象,例如冰箱門上的虛擬菜單。許多 3D 場景理解問題不能通過直接編程的方法來結(jié)局,因此需要數(shù)據(jù)驅(qū)動的方法來解決。最近深卷積神經(jīng)網(wǎng)絡(CNNs)在 2D 圖像理解中的成功啟發(fā)了我們,我們也希望在 3D 數(shù)據(jù)理解中受益于深度學習,從而實現(xiàn) 3D深度學習。
然而,與用 2D像素數(shù)組表示的圖像不同,3D 具有許多常見的表示,如下圖所示:點云、多邊形結(jié)構(gòu)、體素結(jié)構(gòu)、深度圖等。其中,點云是從物體表面采樣的空間中的一組點,通常由激光雷達或深度相機等 3D 傳感器采集。在眾多的 3D 表示中,對于 3D 場景的理解,我們特別關注點云,原因有兩個。
- 首先,點云可能是最接近原始傳感器數(shù)據(jù)的表示形式。點云編碼來自傳感器的全部信息,沒有任何量化損失(如體積表示)或投影損失(如多視圖表示),因此是三維場景理解中是端到端學習的首選。
- 其次,點云在表示上非常簡單:它只是點的集合,避免了網(wǎng)格組合的不規(guī)則性和復雜性(如多邊形、多邊形大小和連通性的選擇),因此更容易學習。點云也不需要像在體積表示中那樣選擇分辨率,或者像在多視圖圖像中那樣選擇投影視點。
盡管點云其簡單性和普及性很強,但幾乎沒有任何關于點云的表示學習工作,大多數(shù)現(xiàn)有的點云特征都是針對特定任務手動制作的。近年來,用深度神經(jīng)網(wǎng)絡處理點云的研究成果很少。然而,由于點云是不規(guī)則的,這些方法幾乎都是先將點云轉(zhuǎn)換為其他規(guī)則表示,然后再應用現(xiàn)有的深層網(wǎng)絡結(jié)構(gòu)。
- 一個例子是將點云轉(zhuǎn)換為二進制占用網(wǎng)格(如果其中有點,則體素為1,如果為空,則為0),然后在體積網(wǎng)格上應用 3DCNN。然而,這存在非常高的空間和計算成本。在3DCNN 中,存儲和計算開銷隨著網(wǎng)格分辨率的增加呈三次曲線增長。更糟糕的是,由于掃描儀只從物體表面捕獲點,許多體素都是空的,因此浪費了大量的計算。由于昂貴的成本,大多數(shù)工作只使用非常粗糙的網(wǎng)格,例如分辨率為 30x30x30x30,這反過來會導致較大的量化誤差。
- 除了將點云體素化到體網(wǎng)格和使用 3D CNN,還可以將點云投影到 2D 平面上或從 2D 平面繪制 2D 圖像,然后使用流行的 2D CNN,但是,由于投影,某些3D信息會丟失,并且選擇哪個視點進行投影并不總是顯而易見的。
- 此外,人們可以首先從點云中提取手工制作的特征,然后使用簡單的全連接網(wǎng)絡來處理它們。然而,通過這種方式,特征學習是通過手工制作的特征來實現(xiàn)的。
由于所有這些轉(zhuǎn)換都有不足之處,一個吸引人的研究問題是:我們能否直接在點云上實現(xiàn)有效的特征學習? 答案是肯定的,下面作者就開始介紹了自己的研究工作(PointNet/PointNet++/Frustum PointNets/FlowNet3D),可以看作是摘要的擴充版,后面還會再詳細介紹這里就跳過了。
在背景知識部分:
- 作者介紹了所使用的數(shù)據(jù)集:MNIST、ModelNet40、ShapeNetPart、SHREC15、S3DIS、ScanNet、SUN RGB-D、FlyingThings3D、KITTI,可以看到作者博士期間的工作量還是很大的。
- 然后從五個方面介紹了相關工作:Point Cloud Descriptors、Deep Learning on Unordered Points、Deep Learning on Other 3D Representations、3D Object Detection、Scene Flow Estimation。背景知識部分這一章,作者寫的還是很詳細的,值得學習。
Deep Learning on Point Sets: PointNet
在本章,我們開始學習 PointNet。下圖是 PointNet 的應用,包括物體分類、部件分割、語義分割。雖然點云在表示上很簡單,但在實際處理中面臨著兩個挑戰(zhàn)。
- 首先,點云只是一組點,因此這些點的排列組合應是不變的,這句話其實是說在處理點云數(shù)據(jù)時無論這些點如何排列組合,所表示的物體都是確定的。
- 其次,還需要考慮剛體運動的不變性。即無論怎么進行旋轉(zhuǎn)平移操作,點云所表示的物體也都是確定的。
為了解決上面兩個問題,作者構(gòu)造了一個由神經(jīng)網(wǎng)絡組成的對稱函數(shù),從而保證了它對輸入點云序列的不變性。與一般論文所不同的是,作者除了進行了實驗評估,還進行了理論分析,證明了所設計的網(wǎng)絡可以逼近任何連續(xù)的集合函數(shù)。更有趣的是,網(wǎng)絡學會了通過一組稀疏的關鍵點來總結(jié)輸入點云,根據(jù)可視化,關鍵點大致對應于對象的骨架。
Problem Statement
下面介紹下我們要處理的問題。假設點云數(shù)據(jù)集為 {Pi∣i=1,…,n}\left\{P_{i} \mid i=1, \ldots, n\right\}{Pi?∣i=1,…,n},每個點 PiP_iPi? 可以由坐標 (x,y,z)(x,y,z)(x,y,z) 以及其它特征通道來表示(如顏色等),這里為了簡化,每個點只包含坐標 (x,y,z)(x,y,z)(x,y,z) 通道。
對于物體分類任務,設計的網(wǎng)絡對 kkk 個候選類輸出 kkk 個分數(shù);對于部件分割和語義分割,設計的網(wǎng)絡會輸出 n×mn \times mn×m 個分數(shù),每一個點會有 mmm 個類別分值。
PointNet Architecture
先來看一下輸入的點云數(shù)據(jù),它有三個主要的性質(zhì):
- 無序性。與圖像的像素數(shù)組或體素網(wǎng)格中的體素數(shù)組所不同,點云是一個無特定順序的點的集合。換句話說,一個網(wǎng)絡在處理 NNN 個點時應該能保證對這些點 N!N!N! 個排列組合輸入時保持不變。
- 點之間的相互作用。每個點并不是完全孤立的,它們與相鄰的點形成了一個有意義的子集。因此,模型需要能夠從鄰近的點捕獲局部特征。
- 剛體變換不變性。作為一個幾何體,網(wǎng)絡在物體經(jīng)過不同剛體變換后學到的表征應該是不變的。例如,旋轉(zhuǎn)或平移所有的點不應該修改全部點的類體和每個點的分割結(jié)果。
下面著詳細紹下 PointNet 網(wǎng)絡結(jié)構(gòu)。從下圖可以看到,分類網(wǎng)絡和分割網(wǎng)絡有很大一部分比例是共用的。整個網(wǎng)絡有三個關鍵模塊:
- 1)最大池化層 作為一個對稱函數(shù)聚合所有點的信息;
- 2)局部和全局特征組合結(jié)構(gòu);
- 3)兩個對齊網(wǎng)絡對齊輸入點云和點云特征。
- 無序點云對稱函數(shù)。為了讓模型對點云的排列組合保持不變,可以有三種辦法:1)對輸入的點云順序進行排序;2)使用 RNN 網(wǎng)絡,講輸入看作是一個序列,但是使用全局的排列組合來進行數(shù)據(jù)增強;3)使用簡單的對稱函數(shù)聚合每個點的信息。例如 +++ 和 ?*? 運算符是對稱二元函數(shù),其實是我們學過的加法或乘法交換律。
我們的思想是通過對點集上的變換元素應用對稱函數(shù)來逼近定義在該點集上的通用函數(shù),即:
f({x1,…,xn})≈g(h(x1),…,h(xn))f\left(\left\{x_{1}, \ldots, x_{n}\right\}\right) \approx g\left(h\left(x_{1}\right), \ldots, h\left(x_{n}\right)\right) f({x1?,…,xn?})≈g(h(x1?),…,h(xn?))
其實,f:2RN→R,h:RN→RKf: 2^{\mathbb{R}^{N}} \rightarrow \mathbb{R}, h: \mathbb{R}^{N} \rightarrow \mathbb{R}^{K}f:2RN→R,h:RN→RK$ , g:RK×?×RK?n→Rg: \underbrace{\mathbb{R}^{K} \times \cdots \times \mathbb{R}^{K}}_{n} \rightarrow \mathbb{R}g:nRK×?×RK??→R 是一個對稱函數(shù)。在實驗上,我們的基本模式很簡單,使用多層感知機來近似函數(shù) hhh,ggg 是一個最大池化函數(shù)。使用這些基本模塊就可以構(gòu)建一個簡單的 PointNet 網(wǎng)絡。如下圖所示。
Experiments
Appendix
From PointNet to PointNet++
Problem Statement
PointNet++ Architecture
Experiments
Appendix
Conclusion and Outlook
參考文獻
論文鏈接:Deep Learning On Point Clouds For 3D Scene Understanding
總結(jié)
以上是生活随笔為你收集整理的重读经典(点云深度学习开山之作):《Deep learning on point clouds for 3D scene understanding》(持续更新中)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卖房有多少花活?小麦抵首付刚被叫停 西瓜
- 下一篇: 4.深度学习练习:Building yo