NeurIPS 2019 | 麻省理工與上海交大共同提出新型點雲處理框架Point-Voxel CNN

論文:Point-Voxel CNN for Efficient 3D Deep Learning

來源:NeurIPS2019 Spotlight

共同一作: Zhijian Liu (MIT), Haotian Tang(上海交大)

代碼:https://github.com/mit-han-lab/pvcnn

項目:https://hanlab.mit.edu/projects/pvcnn/

3D深度學習廣泛的應用到多個領域,如AR/VR和自動駕駛等,因此受到了越來越多的關注。在這些應用中往往需要很高的實時性。然而,終端設備(如手機和VR頭戴設備)受到硬件資源和電池的嚴格限制。因此,設計高效、快速的三維深度學習模型是非常重要的。這篇文章巧妙地將voxel-based方法和point-based方法結合,新框架同時具備了兩種方法的優點。

 

  • 已有方法的缺陷分析

論文對已有方法的缺陷進行了細緻地分析,這是文章重要的一部分。論文的分析很透徹,給筆者留下了很深的印象。

 

對於voxel-based類方法的缺陷,論文指出:這類方法難以平衡分辨率和內存的關係。當體素尺寸較大時,分辨率低,大量點雲佔據同一個體素,沒辦法很好地區分。然而,當減小體素尺寸,提高分辨率時,內存佔用則會成三次方增加。其實voxel-based類方法的這個缺陷學界基本已經產生了共識,因此這部分此處就不再贅述了。

 

接着,文章對point-based方法的缺點也進行了分析。學界對於point-based方法的缺點還鮮有報道,這也是本篇論文比較新穎的地方之一。作者指出,這類方法的內存訪問的無序性(Irregular access)和動態核開銷(Dynamic Kernel)會佔用大量時間。因爲point-based方法直接對無序點雲進行操作,以PointNet, PointCNN爲代表的這類方法需要對點雲進行鄰域查詢,因此會產生大量的隨機內存訪問(Irregular access),這部分會佔用大量運行時間。

 

與此同時,point-based方法還存在動態卷積核的問題。由於點雲散落分佈在三維空間中,不同於voxel-based類方法中數據那樣規整,因此需要動態地確定卷積核,這就是動態核開銷(Dynamic Kernel)。

 

爲了更有說服性,作者對幾類典型的point-based方法的內存訪問(Irregular access)和動態核開銷(Dynamic Kernel)時間進行了統計。如圖所示是作者對於DGCNN, PointCNN, SpiderCNN的時間消耗進行的計算。左邊兩個方框內的時間是無效時間,可以看出上述三種point-based方法有大量的無效時間。而右邊的Actual computation是實際運算時間,可以看出作者提出的網絡時間效率具有壓倒性的優勢。

 

 

  • 提出PVConv

分析完voxel-based方法和point-based方法的缺陷之後,作者開始提出自己設計的網絡架構Point-Voxel Convolution(PVConv)。

 

 

如圖所示,PVConv由兩路分支構成。一個支路用來進行基於體素的特徵聚合,用來進行粗粒度的鄰域特徵提取;另一個支路用MLP對點雲直接進行特徵轉換,是一種細粒度的逐點特徵提取;最後兩種特徵會進行融合。

 

在上面的支路中,首先對點雲進行歸一化;然後進行體素劃分,這裏使用的體素率較低,不至於帶來太多消耗。接着將體素送入到堆疊的3D卷積層中進行特徵升維,此時學到的是每個體素的高維特徵。然後對數據進行解體素,將體素的特徵轉化到每個點上去。

 

這裏的操作很容易讓人想到PointNet++中的Grouping-MLP-Interpolate的結構。但是作者很巧妙地用Voxelize代替了Grouping,從而避免了前文提到的隨機內存訪問(Irregular access)的時間消耗。而此處的Devoxelize也沒有直接採用pointnet++中的最近鄰interpolate操作,而是用了trilinear interpolation,使得不同點對應不同的特徵。

 

如果把上面支路提取的信息作爲鄰域特徵,那麼下方的支路則用來提取每個點的局部特徵,直接採用MLP對每個點進行特徵提取。兩種信息的融合,能夠獲得更爲豐富的特徵信息。

 

  • 實驗結果

文章進行了豐富而詳細的實驗,包括了部件分割、語義分割和目標檢測三種任務。作者不僅關心實驗效果而且重點分析GPU的內存消耗。與主流點雲深度學習框架(PointNet, PointCNN, F-PointNet等)進行了比較,效果很好。部分實驗結果如下:

語義分割任務,可以說是,利用更少的內存消耗,獲得了更好的實驗效果。

 

目標檢測,性能和內存消耗方面,基本上都超過了F-PointNet++。

 

  • 總結

這篇論文提出了Point-VoxelCNN (PVCNN),將點雲處理領域的兩種方法進行了結合,想法簡單巧妙,而且文章對兩種方法都進行了缺點的分析,特別是對於point-based類方法的分析,讓人印象深刻。此外,文章中對於內存佔用的分析計算的思路也值得借鑑,在改進其他網絡的過程中,是否也考慮下這個層面呢,沒準會給網絡性能找到新的突破口。

歡迎關注公衆號:3D點雲深度學習


 相關文章

點雲深度網絡——PointNet

PointNet++文章及代碼

PointCNN原理+代碼講解

【點雲一分鐘】SO-Net:用於點雲分析的自組織網絡

發佈了26 篇原創文章 · 獲贊 31 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章