點雲上的卷積神經網絡及其部分應用

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

公開課回放鏈接:https://www.shenlanxueyuan.com/open/course/33

本次分享首先介紹了最近幾年的兩篇經典論文中3D點雲識別的工作,詳細介紹PointNet++與PointNet;接着由傳統CNN入手,逐漸引入PointConv;最後將結合PointConv介紹了李老師團隊最近的工作內容。

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

點雲上做CNN的工作和點雲上其他操作有些不同,點雲CNN更偏重於識別的任務,目前市面上已經有了很多深度傳感器,可以直接獲得周圍物體的深度數據,例如Velodyne LiDAR等,隨着深 度傳感器的普及,日後深度傳感器在我們日常生活中將會變得更加普遍。我們都知道深度學習在2D圖像識別中有了飛躍性的發展,研究點雲CNN的目的就是使深度學習在點雲上的應用更加廣泛。

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

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

1 研究現狀

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

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

受到CNN的啓發,緊接着同一批作者發表了PointNet++,就更接近了傳統的CNN,相較於PointNet,它能夠在不同尺度提取局部特徵,通過多層網絡結構得到深層特徵。

PointNet++由以下幾個關鍵部分構成:Sampling(採樣層),Grouping(組合層),PointNet(特徵提取層)。

首先,在網絡處理時對輸入點的數據點進行採樣,採樣後的結果中每一個點所構成其局部的點進行組合,方便後面連接PointNet的局部特徵提取,由於Max-pooling的影響,每組特徵點最後只輸出一個點。

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

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

雖然PointNet已經足夠優秀,但是PointNet缺少鄰域信息,與傳統意義上通過周圍鄰域得到卷積結果十分不同,這也很難直接應用於後面的點雲CNN中。

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

2 CNN 到PointConv

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

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

3 PointConv 與 深度學習

PointConv的主要工作是在原有通過1層隱藏層替換權重函數W的基礎上,在添加了一層隱藏層和KDE。這樣網絡的基本結構就可以描述爲:通過尋找點雲的K nearest neighbor獲得K×3的座標,做兩層全連接網絡,得到K×(Cin×Cout)的W,與複製Cout份的輸入特徵Fin運算,便可以得到1×Cout維的一個點的輸出特徵。完整的PointCov網絡結構圖如下所示:

李老師團隊之前提交過一篇論文,但由於不知道之前已有團隊做過相同的工作而被拒。在他們的工作中由於每個點都需要計算K×Cin×Cout維的權重值, PointConv 實現起來內存消耗大、效率低,很難形成大型的卷積網絡結構。李老師發現通過更改了上圖中藍框裏求和的順序可以保證在結果不變的基礎上,極大降低內存。假設MLP最後一層的輸入爲M,M與計算的逆密學習到的權重加權得到的結果Fin直接相乘,而把最後一層全連接層放到最後。看似只是簡單的調整順序,卻可以省去複製Cout次的操作,也不用得到K×(Cin×Cout)很大的Tensor,有效的降低了參數的數據量,避免每次卷積都要產生巨大的權重值的問題。

實驗結果證明原結構大概需要8G內存,優化過後大概只需要佔用100M,極大的節省了內存佔用率,爲後面構建大規模網絡奠定了基礎,這樣一個PointConv layer就可以完整的對應到一層普通卷積層,優化過後的網絡結構爲:

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

有了PointConv和PointDeConv,便可以根據傳統的卷積神經網絡結構搭建一個U-Net網絡,用於點雲的分類任務。如下圖所示,將所有的點先通過PointConv得到非常少的點,再通過一系列PointDeConv點數逐漸增多直至回到初始的點數,再對每個點進行1×1的卷積,便得到了點雲的U-Net。

爲了驗證PointConv可以替代真正的卷積效果,李老師團隊將CIFAR-10替換成了點雲,在5層和19層的實驗中發現,PointConv的準確度高於近期出現的PointCNN和SpiderCNN 的點雲深度學習網絡,接近甚至高於傳統卷積神經網絡框架。

同時李老師團隊也在ModelNet、ShapeNet和ScanNet上與更多的點雲深度學習網絡結果進行對比,在ModelNet40和ShapeNet提高的精度不是很高,但是在真實的室內掃描數據集ScanNet卻提高了很大的精度。

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

4 最近工作

4.1 PointPWC-Net

根據上述提到的PointConv的有效性,可以把許多2D的工作進行推廣,擴展到點雲的應用,例如在計算機視覺中的運動估計。而在運動估計中最重要的環節就是配準,傳統方法中的SIFT等方法是可以輕鬆實現,但是隨着深度學習的推廣,如何在物體一直運動的情況下有效匹配像素點成爲了深度學習運動估計的難題。

最直接的想法就是在相鄰兩幀之間分別做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上便可以得到相關的運動信息。

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

在李老師團隊最新的工作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可以把像素座標值轉換爲點雲數據,由於圖像中的d×d是一個dense矩陣,而點雲是找K nearest neighbor,得到的Cost Volume的大小就直接去取決於K取值的大小爲N×K。

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

4.2 IGOS:Integarted-Gradient Optimized Saliency

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

李老師團隊同時將這個有趣的工作推廣到了點雲中,但是與2D圖像不同的是,2D圖像可以通過blur進行操作就可以把圖像的特徵給去掉了,而點雲中如果直接刪除特徵點,會在某些分類器中出現問題。基於上述問題,李老師團隊提出了一種點雲smooth方法,對部分點雲進行smooth逐漸變成一個球,來起到2D圖像blur的作用。這樣在smooth的操作下將2D中優化mask的工作推廣到了點雲。例如人的點雲圖像分類中,如果把人的頭部smooth掉後,人的點雲分類精度就從原來的0.79降到了0.15,便可以瞭解到人的頭部在點雲分類起到了至關重要的作用。

5 討論

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

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

寫在最後

本篇文章是根據李老師的課程分享進行的相關整理,由於篇幅有限,不能做到詳盡整理。瞭解公開課具體內容課可點擊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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章