最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

點云上的卷積神經(jīng)網(wǎng)絡及其部分應用

2020-07-02 17:26 作者:深藍學院  | 我要投稿

本次公開課由李伏欣老師主講,李伏欣老師是美國俄勒岡州立大學助力教授,公開課主要介紹了涵蓋3D點云領域的研究,并重點介紹了李老師近期的最新工作內(nèi)容。

本次分享首先介紹了最近幾年的兩篇經(jīng)典論文中3D點云識別的工作,詳細介紹PointNet++與PointNet;接著由傳統(tǒng)CNN入手,逐漸引入PointConv;最后將結(jié)合PointConv介紹了李老師團隊最近的工作內(nèi)容。

課程開始,李伏欣老師介紹了點云CNN的一些背景。

點云上做CNN的工作和點云上其他操作有些不同,點云CNN更偏重于識別的任務,目前市面上已經(jīng)有了很多深度傳感器,可以直接獲得周圍物體的深度數(shù)據(jù),例如Velodyne LiDAR等,隨著深 度傳感器的普及,日后深度傳感器在我們?nèi)粘I钪袑兊酶悠毡?。我們都知道深度學習在2D圖像識別中有了飛躍性的發(fā)展,研究點云CNN的目的就是使深度學習在點云上的應用更加廣泛。

常見的三維表示形式有很多種,常見的表示形式為點云、Mesh、Volumetric和RGBD等,Mesh可以更好地表示物體表面信息,Volumetric是將三維空間轉(zhuǎn)換成網(wǎng)格的表示形式,RGBD則在傳統(tǒng)RGB圖相中增加了一個深度維度的信息,但只能看到一個視角的信息。而為什么我們要研究點云的CNN呢?因為不管是LiDAR、結(jié)構(gòu)光還是TOF等深度傳感器,都是直接獲得的點云信息,而其他的三維表示都是由點云生成的。

同時我們還可以把RGB的信息貼到點云數(shù)據(jù)中去,這樣在空間表示中不僅僅有物體的三維信息,還有物體的顏色信息。常見的點云往往都是稀疏的,而在土木工程領域中會應用到一種強大的掃描儀,獲得數(shù)量龐大的點云數(shù)據(jù)用于還原物體信息,可以表示詳細的空間信息。

1 研究現(xiàn)狀

點云CNN為什么難做?從2D圖像中出發(fā),例如,可以用image(i-1,j-1)表示像素image(i,j)的鄰域信息來表示圖像中具體的位置信息,但是不能保證在點云中相同的相對位置處存在點云數(shù)據(jù)。于是可以把這個問題轉(zhuǎn)成volumetric convolution來進行點云的CNN,那么有的Voxel有特征點,有的Voxel并沒有特征點,有點的Voxel可以找到該點的鄰域進行計算。將這種方法應用到點云中,近些年研究學者發(fā)現(xiàn)利用矩陣稀疏性可以起到提高計算速度的作用,精度和速度近些年已經(jīng)取得了相當不錯的結(jié)果。

提到點云深度學習就一定離不開PointNet和PointNet++兩篇經(jīng)典的點云神經(jīng)網(wǎng)絡處理方法。PointNet中常用的有兩種操作:1x1 convolution 和Max-pooling,然而只有這兩種操作實際上對3D識別來講是遠遠不夠的。PointNet提取特征的方式是對所有點云數(shù)據(jù)提取了一個全局的特征,顯然,這和目前流行的CNN逐層提取局部特征的方式不一樣。

受到CNN的啟發(fā),緊接著同一批作者發(fā)表了PointNet++,就更接近了傳統(tǒng)的CNN,相較于PointNet,它能夠在不同尺度提取局部特征,通過多層網(wǎng)絡結(jié)構(gòu)得到深層特征。

PointNet++由以下幾個關鍵部分構(gòu)成:Sampling(采樣層),Grouping(組合層),PointNet(特征提取層)。

首先,在網(wǎng)絡處理時對輸入點的數(shù)據(jù)點進行采樣,采樣后的結(jié)果中每一個點所構(gòu)成其局部的點進行組合,方便后面連接PointNet的局部特征提取,由于Max-pooling的影響,每組特征點最后只輸出一個點。

對提取的特征點再根據(jù)每個點所構(gòu)成的局部點進行組合,得到的結(jié)果進行sampling連接PointNet。由Sampling、Grouping和PointNet三層組成了類似卷積層的結(jié)構(gòu),可以應用這種結(jié)構(gòu)進行分類和分割。

PointNet++作者使用的采樣算法是farthest point sampling(最遠點采樣),相對于隨機采樣,這種采樣算法能夠更好地覆蓋整個采樣空間,包括點云數(shù)據(jù)特征信息和邊角信息,這些都是隨機采樣所無法具備的。

雖然PointNet已經(jīng)足夠優(yōu)秀,但是PointNet缺少鄰域信息,與傳統(tǒng)意義上通過周圍鄰域得到卷積結(jié)果十分不同,這也很難直接應用于后面的點云CNN中。

例如這里有一個最簡單的邊緣檢測的任務,在邊緣處兩邊的顏色不同,為了檢測出邊緣,我們至少需要考慮兩個點的顏色信息才能判斷出是否存在邊緣。而PointNet除了Max Pooling以外,剩下的所有操作都只對單點進行,很難直接應用到Corner Detection等任務中去,因此我們迫切需要真正意義上的點云CNN。

2 CNN 到PointConv

為了引入點云CNN,首先我們來回顧一下傳統(tǒng)的CNN。對于2D圖片來說,某個位置的輸出,不僅與該位置的輸入有關,還與此位置周邊位置的輸入有關,不同位置的輸入,具有不同的權(quán)重。下圖中X(i,j,k)可以看做圖像的原始像素,W為卷積核,G為鄰域。卷積是一個加權(quán)求和的操作,由于位置坐標的像素值是固定值,卷積核上所有作用點以此作用于原始圖像像素,并通過線性疊加把所有的作用結(jié)果累加,即是圖像卷積的輸出。

可以通過連續(xù)域考慮,此時W就不是權(quán)重矩陣而是一個函數(shù),那么由于點云位置是隨機的,不同位置的權(quán)重應該不同,這樣可以把權(quán)重函數(shù)W抽象成為一個關于三維坐標的函數(shù)。由于所有操作都可微,通過深度學習不斷學習,由Δi, Δj, Δk作為輸入的權(quán)重值作為函數(shù)的輸出結(jié)果,這也是最初很重要的一種想法。下圖中W和X為連續(xù)的函數(shù),(i,j,k)為三維參考坐標,(Δi, Δj, Δk)為該點鄰域的相對坐標,由于卷積本質(zhì)上是一個加權(quán)求和的操縱。如果某些位置的采樣點比較密集,而某些位置的采樣點比較稀疏,最終的計算結(jié)果主要受到采樣密集的位置的點的影響。考慮到點云是非均勻采樣的傳感器,為了補償不均勻采樣,需要用點云逆密度對學到的權(quán)重進行加權(quán),該模塊主要目的是處理點云采樣不均的情況。這樣我們可以把PointConv描述為:

3 PointConv 與?深度學習

PointConv的主要工作是在原有通過1層隱藏層替換權(quán)重函數(shù)W的基礎上,在添加了一層隱藏層和KDE。這樣網(wǎng)絡的基本結(jié)構(gòu)就可以描述為:通過尋找點云的K nearest neighbor獲得K×3的坐標,做兩層全連接網(wǎng)絡,得到K×(Cin×Cout)的W,與復制Cout份的輸入特征Fin運算,便可以得到1×Cout維的一個點的輸出特征。完整的PointCov網(wǎng)絡結(jié)構(gòu)圖如下所示:

李老師團隊之前提交過一篇論文,但由于不知道之前已有團隊做過相同的工作而被拒。在他們的工作中由于每個點都需要計算K×Cin×Cout維的權(quán)重值, PointConv 實現(xiàn)起來內(nèi)存消耗大、效率低,很難形成大型的卷積網(wǎng)絡結(jié)構(gòu)。李老師發(fā)現(xiàn)通過更改了上圖中藍框里求和的順序可以保證在結(jié)果不變的基礎上,極大降低內(nèi)存。假設MLP最后一層的輸入為M,M與計算的逆密學習到的權(quán)重加權(quán)得到的結(jié)果Fin直接相乘,而把最后一層全連接層放到最后??此浦皇呛唵蔚恼{(diào)整順序,卻可以省去復制Cout次的操作,也不用得到K×(Cin×Cout)很大的Tensor,有效的降低了參數(shù)的數(shù)據(jù)量,避免每次卷積都要產(chǎn)生巨大的權(quán)重值的問題。

實驗結(jié)果證明原結(jié)構(gòu)大概需要8G內(nèi)存,優(yōu)化過后大概只需要占用100M,極大的節(jié)省了內(nèi)存占用率,為后面構(gòu)建大規(guī)模網(wǎng)絡奠定了基礎,這樣一個PointConv layer就可以完整的對應到一層普通卷積層,優(yōu)化過后的網(wǎng)絡結(jié)構(gòu)為:

當然,我們還可以來定義PointDeconv,在之前的PointNet++中,Deconvolution主要是通過插值的方法來實現(xiàn)的。例如在下層有了一個k鄰域,上層的點直接做插值來實現(xiàn)。而有了Pointconv以后可以在每次插值加入一層Pointconv,這樣PointDeconv 由兩部分組成:插值和 PointConv。首先,使用一個線性插值算法來得到精細層的特征的初始值,再在精細層上進行一個 PointConv 進行優(yōu)化特征,從而獲得較高精度的特征值。

有了PointConv和PointDeConv,便可以根據(jù)傳統(tǒng)的卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)搭建一個U-Net網(wǎng)絡,用于點云的分類任務。如下圖所示,將所有的點先通過PointConv得到非常少的點,再通過一系列PointDeConv點數(shù)逐漸增多直至回到初始的點數(shù),再對每個點進行1×1的卷積,便得到了點云的U-Net。

為了驗證PointConv可以替代真正的卷積效果,李老師團隊將CIFAR-10替換成了點云,在5層和19層的實驗中發(fā)現(xiàn),PointConv的準確度高于近期出現(xiàn)的PointCNN和SpiderCNN 的點云深度學習網(wǎng)絡,接近甚至高于傳統(tǒng)卷積神經(jīng)網(wǎng)絡框架。

同時李老師團隊也在ModelNet、ShapeNet和ScanNet上與更多的點云深度學習網(wǎng)絡結(jié)果進行對比,在ModelNet40和ShapeNet提高的精度不是很高,但是在真實的室內(nèi)掃描數(shù)據(jù)集ScanNet卻提高了很大的精度。

在4層PointConv的基礎上就達到了55.6%的精度,顯著的高于ScanNet、PointNet++、SPLAT Net和Tangent Convolutions,近期李老師通過搭建更多層的PointConv已經(jīng)達到了66.6%的精度。這些結(jié)果足以證明PointConv在點云深度學習中可以替代傳統(tǒng)的卷積層。

4 最近工作

根據(jù)上述提到的PointConv的有效性,可以把許多2D的工作進行推廣,擴展到點云的應用,例如在計算機視覺中的運動估計。而在運動估計中最重要的環(huán)節(jié)就是配準,傳統(tǒng)方法中的SIFT等方法是可以輕松實現(xiàn),但是隨著深度學習的推廣,如何在物體一直運動的情況下有效匹配像素點成為了深度學習運動估計的難題。

最直接的想法就是在相鄰兩幀之間分別做CNN,得到W×H×D維的特征,在使用Cost Volume的方法用于像素匹配,Cost Volume方法的基本原理為:在W×H×D的特征中,每一個特征計算對應到另一個特征d×d鄰域2范式,得到了W×H×D×d×d的匹配信息。盡管得到的匹配信息可能會很大,但是可以獲得更好的配準效果。那么如何將配準問題運用到點云上呢?

大體思路為:在相鄰的兩幀點云Point Cloud1和Point Cloud2作為輸入連接PointConv layer得到Point Feature1 和Point Feature2,設以第一幀為target,則在Point Feature1有N個點的基礎上取k鄰域,計算的N×K維的Point Cost Volume,在連接PointConv layer后與貼到Point Feature1上便可以得到相關的運動信息。

但是完整的實現(xiàn)還是需要完成許多細節(jié),其中最重要的為coarse-to-fine,李老師的團隊根據(jù)2D里的optic follow中有一個很好的方法PWC-Net,實現(xiàn)了3D 點云上的coarse-to-fine。原PWC-Net方法中是將輸入圖像變?。ɡ?6×16),在兩個16×16的基礎上計算Cost Volume,之后應用16×16得到的運動結(jié)果,先對第一幀的32×32的圖像進行移動,在和第二幀的32×32進行匹配計算Cost Volume,以此類推,把所有層的結(jié)果加在一起,便可以得到最終的計算結(jié)果。這樣每次計算的Cost Volume取的鄰域并不會很大,計算新的Cost Volume時,可以直接應用上一次的運動結(jié)果。

在李老師團隊最新的工作PointPWC-Net中,因為有PointConv的存在,可以將PWC-Net中的downsample用PointConv替代,upsample用PointDeConv的方法替換,在Warping layer中,假設得到的輸入運動估計為(Δi, Δj, Δk),與原有輸入點(i, j, k)相加即可得到輸出(Δi+i, Δj+j, Δk+k)。這樣我們可以得到點云中的運動估計。點云里的Cost Volume可以把像素坐標值轉(zhuǎn)換為點云數(shù)據(jù),由于圖像中的d×d是一個dense矩陣,而點云是找K nearest neighbor,得到的Cost Volume的大小就直接去取決于K取值的大小為N×K。

在測試中與之前許多工作進行對比,由于ICP假設物體是剛性不變的,所以相較于ICP, PointPWC-Net有較大的提升。而與其他深度學習網(wǎng)絡對比,由于大量使用了Max pooling操作,致使了很多特征點丟失,PointConv可以替換CNN層的優(yōu)勢便體現(xiàn)出來,在許多開源數(shù)據(jù)集上的表現(xiàn)十分良好。

4.2 IGOS:Integarted-Gradient Optimized Saliency

另外李老師團隊介紹了另一個非常有意思的工作:如何清楚的知道CNN中是那些Feature起到了至關重要的作用呢?那么需要優(yōu)化一個mask,對輸入圖像進行blur,將blur過后的圖像重新放到之前CNN網(wǎng)絡中預測,使預測的準確度盡可能的較低。例如在預測口琴的圖像中,原圖像的分類精度在99.9%,如果對人的嘴和手部與口琴接觸的地方進行blur,得到的結(jié)果就只有11.9%,相反,如果我們只顯示嘴部和手部與口琴接觸的圖像,分類預測的精度達到了81.9%。

李老師團隊同時將這個有趣的工作推廣到了點云中,但是與2D圖像不同的是,2D圖像可以通過blur進行操作就可以把圖像的特征給去掉了,而點云中如果直接刪除特征點,會在某些分類器中出現(xiàn)問題?;谏鲜鰡栴},李老師團隊提出了一種點云smooth方法,對部分點云進行smooth逐漸變成一個球,來起到2D圖像blur的作用。這樣在smooth的操作下將2D中優(yōu)化mask的工作推廣到了點云。例如人的點云圖像分類中,如果把人的頭部smooth掉后,人的點云分類精度就從原來的0.79降到了0.15,便可以了解到人的頭部在點云分類起到了至關重要的作用。

5 討論

在公開課的最后,李老師給到了我們一些學習深度學習的建議。點云與深度學習結(jié)合的應用范圍十分廣泛,例如三維重建、運動估計等,要想學好深度學習,首先需要學好機器學習的理論知識,例如Overfitting是什么等基礎問題,寫一寫簡單的SVM代碼。

在對機器學習有了一定的認識之后,再開始學習深度學習,深度學習本身沒有很難的知識點,難就難在做實驗,例如如何提高精度、怎樣對數(shù)據(jù)初始化可以得到較好的結(jié)果等。多學習別人在深度學習中使用的各種技巧,對提高深度學習代碼精度有很大的幫助。很多時候自己寫一個深度學習的網(wǎng)絡不如直接下載一個開源的深度學習網(wǎng)絡的代碼,在現(xiàn)有的基礎上對原工作進行修改。

寫在最后

本篇文章是根據(jù)李老師的課程分享進行的相關整理,由于篇幅有限,不能做到詳盡整理。了解公開課具體內(nèi)容課可復制下方鏈接聽取原公開課。

https://www.shenlanxueyuan.com/open/course/33


相關文章

  1. [Qi et al. CVPR 2017] C. Qi et al. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation. CVPR 2017

  2. [Wu, Qi and Fuxin 2019] W. Wu, Z. Qi, L. Fuxin. PointConv: Deep Convolutional Networks on 3D Point Clouds. CVPR 2019

  3. [Graham et al. 2018] B. Graham and L. van der Maaten. Submanifold Sparse Convolutional Networks. CVPR 2018

  4. [Choy et al. 2019] C. Choy, JY. Gwak, S. Savarese. 4D Spatio-Temporal ConvNets: Minkowski Convolutional Neural Networks. ICCV 2019

  5. [Qi et al. NeuRIPS 2017] C. Qi et al. PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space. NeuRIPS 2017

  6. [Su et al. 2018] H. Su et al. SPLATNet: Sparse Lattice Networks for Point Cloud Processing. CVPR 2018

  7. [Xu et al. 2018] Y. Xu et al. SpiderCNN: Deep Learning on Point Sets with Parameterized Convolutional Filters. ECCV 2018

  8. [Li et al. 2018] Y. Li et al. PointCNN: Convolution On X-Transformed Points. NeuRIPS 2018

  9. [Jia et al. 2016] X. Jia et al. Dynamic Filter Networks. NeuRIPS 2016

  10. [Simonovsky 2017] M. Simonovsky, N. Komodakis. Dynamic edgeconditioned filters in convolutional neural networks on graphs. CVPR 2017

  11. [Wang et al. 2018] S. Wang et al. Deep parametric continuous convolutional neural networks. CVPR 2018

  12. [D. Sun et al. 2018] D. Sun et al. PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume. CVPR 2018

  13. [Wu et al. + Fuxin arXiv:1911.12408] W. Wu et al. PointPWC-Net: A Coarse-to-Fine Network for Supervised and Self-Supervised Scene Flow Estimation on 3D Point Clouds. arXiv:1911.12408

  14. [Ziwen et al. + Fuxin arXiv:1911.10415] C. Ziwen et al. Visualizing Point Cloud Classifiers by Curvature Smoothing. arXiv:1911.10415

  15. [Z. Qi, S. Khorram, L. Fuxin, AAAI 2020] Zhongang Qi, Saeed Khorram, LI Fuxin. Visualizing Deep Networks by Optimizing with Integrated Gradients. AAAI, 2020

聲明:本文為公開課分享的原創(chuàng)文章,如需轉(zhuǎn)載,請聯(lián)系留言申請。

點云上的卷積神經(jīng)網(wǎng)絡及其部分應用的評論 (共 條)

分享到微博請遵守國家法律
蛟河市| 云霄县| 建昌县| 巩义市| 怀化市| 望谟县| 武定县| 毕节市| 康马县| 陕西省| 务川| 沙雅县| 古浪县| 和田县| 白沙| 花莲市| 永善县| 仪陇县| 湘乡市| 安福县| 通河县| 灵石县| 工布江达县| 永寿县| 渭源县| 乐至县| 上杭县| 东丽区| 荔波县| 胶南市| 邯郸市| 衡东县| 曲周县| 宜兰县| 南昌市| 临桂县| 墨竹工卡县| 吴忠市| 克山县| 汶上县| 乐昌市|