PointNet系列論文解讀

美團無人配送發表於2019-06-03

1.簡介

此係列論文首先提出了一種新型的處理點雲資料的深度學習模型-PointNet,並驗證了它能夠用於點雲資料的多種認知任務,如分類、語義分割和目標識別。不同於影象資料在計算機中的表示通常編碼了畫素點之間的空間關係,點雲資料由無序的資料點構成一個集合來表示。因此,在使用影象識別任務的深度學習模型處理點雲資料之前,需要對點雲資料進行一些處理。目前採用的方式主要有兩種:

  • 將點雲資料投影到二維平面。此種方式不直接處理三維的點雲資料,而是先將點雲投影到某些特定視角再處理,如前視視角和鳥瞰視角。同時,也可以融合使用來自相機的影象資訊。通過將這些不同視角的資料相結合,來實現點雲資料的認知任務。比較典型的演算法有MV3D和AVOD。

  • 將點雲資料劃分到有空間依賴關係的voxel。此種方式通過分割三維空間,引入空間依賴關係到點雲資料中,再使用3D卷積等方式來進行處理。這種方法的精度依賴於三維空間的分割細膩度,而且3D卷積的運算複雜度也較高。

不同於以上兩種方法對點雲資料先預處理再使用的方式,此論文的作者提出了直接在點雲資料上應用深度學習模型的方法,稱為PointNet。

2. 理論基礎

點雲資料是在歐式空間下的點的一個子集,它具有以下三個特徵:

  • 無序。點雲資料是一個集合,對資料的順序是不敏感的。這就意味這處理點雲資料的模型需要對資料的不同排列保持不變性。目前文獻中使用的方法包括將無序的資料重排序、用資料的所有排列進行資料增強然後使用RNN模型、用對稱函式來保證排列不變性。由於第三種方式的簡潔性且容易在模型中實現,論文作者選擇使用第三種方式,既使用maxpooling這個對稱函式來提取點雲資料的特徵。

  • 點與點之間的空間關係。一個物體通常由特定空間內的一定數量的點雲構成,也就是說這些點雲之間存在空間關係。為了能有效利用這種空間關係,論文作者提出了將區域性特徵和全域性特徵進行串聯的方式來聚合資訊。

  • 不變性。點雲資料所代表的目標對某些空間轉換應該具有不變性,如旋轉和平移。論文作者提出了在進行特徵提取之前,先對點雲資料進行對齊的方式來保證不變性。對齊操作是通過訓練一個小型的網路來得到轉換矩陣,並將之和輸入點雲資料相乘來實現。

作者對他們模型進行了進一步的理論分析,並提出了兩個定理:

PointNet系列論文解讀定理1證明了PointNet的網路結構能夠擬合任意的連續集合函式。其作用類似證明神經網路能夠擬合任意連續函式一樣【1】。同時,作者發現PointNet模型的表徵能力和maxpooling操作輸出的資料維度(K)相關,K值越大,模型的表徵能力越強。

PointNet系列論文解讀

定理2(a)說明對於任何輸入資料集S,都存在一個最小集Cs和一個最大集Ns,使得對Cs和Ns之間的任何集合T,其網路輸出都和S一樣。這也就是說,模型對輸入資料在有噪聲(引入額外的資料點,趨於Ns)和有資料損壞(缺少資料點,趨於Cs)的情況都是魯棒的。定理2(b)說明了最小集Cs的資料多少由maxpooling操作輸出資料的維度K給出上界。換個角度來講,PointNet能夠總結出表示某類物體形狀的關鍵點,基於這些關鍵點PointNet能夠判別物體的類別。這樣的能力決定了PointNet對噪聲和資料缺失的魯棒性。如圖所示,作者通過實驗列出了PointNet學習到的以下幾個物體的關鍵點。

PointNet系列論文解讀3. PointNet系列模型結構

3.1 PointNet

PointNet系列論文解讀

PointNet的模型結構如上圖所示,其關鍵流程介紹如下:

  • 輸入為一幀的全部點雲資料的集合,表示為一個nx3的2d tensor,其中n代表點雲數量,3對應xyz座標。

  • 輸入資料先通過和一個T-Net學習到的轉換矩陣相乘來對齊,保證了模型的對特定空間轉換的不變性。

  • 通過多次mlp對各點雲資料進行特徵提取後,再用一個T-Net對特徵進行對齊。

  • 在特徵的各個維度上執行maxpooling操作來得到最終的全域性特徵。

  • 對分類任務,將全域性特徵通過mlp來預測最後的分類分數;對分割任務,將全域性特徵和之前學習到的各點雲的區域性特徵進行串聯,再通過mlp得到每個資料點的分類結果。

3.2 PointNet++

3.2.1 網路構成

PointNet提取特徵的方式是對所有點雲資料提取了一個全域性的特徵,顯然,這和目前流行的CNN逐層提取區域性特徵的方式不一樣。受到CNN的啟發,作者提出了PointNet++,它能夠在不同尺度提取區域性特徵,通過多層網路結構得到深層特徵。PointNet++由以下幾個關鍵部分構成:

  • 取樣層(sampling):鐳射雷達單幀的資料點可以多達100k個,如果對每一個點都提取區域性特徵,計算量是非常巨大的。因此,作者提出了先對資料點進行取樣。作者使用的取樣演算法是最遠點取樣(farthest point sampling, FPS),相對於隨機取樣,這種取樣演算法能夠更好地覆蓋整個取樣空間。

  • 組合層(grouping):為了提取一個點的區域性特徵,首先需要定義這個點的“區域性”是什麼。一個圖片畫素點的區域性是其周圍一定曼哈頓距離下的畫素點,通常由卷積層的卷積核大小確定。同理,點雲資料中的一個點的區域性由其周圍給定半徑劃出的球形空間內的其他點構成。組合層的作用就是找出通過取樣層後的每一個點的所有構成其區域性的點,以方便後續對每個區域性提取特徵。

  • 特徵提取層(feature learning):因為PointNet給出了一個基於點雲資料的特徵提取網路,因此可以用PointNet對組合層給出的各個區域性進行特徵提取來得到區域性特徵。值得注意的是,雖然組合層給出的各個區域性可能由不同數量的點構成,但是通過PointNet後都能得到維度一致的特徵(由上述K值決定)。

上述各層構成了PointNet++的基礎處理模組。如果將多個這樣的處理模組級聯組合起來,PointNet++就能像CNN一樣從淺層特徵得到深層語義特徵。對於分割任務的網路,還需要將下采樣後的特徵進行上取樣,使得原始點雲中的每個點都有對應的特徵。這個上取樣的過程通過最近的k個臨近點進行插值計算得到。完整的PointNet++的網路示意圖如下圖所示。

PointNet系列論文解讀3.2.2 不均勻點雲資料的特徵提取

不同於圖片資料分佈在規則的畫素網格上且有均勻的資料密度,點雲資料在空間中的分佈是不規則且不均勻的。雖然PointNet能夠用於對各個點雲區域性提取特徵,但是由於點雲在各個區域性均勻性不一致,很可能導致學習到的PointNet不能提取到很好的區域性特徵。比如說,在越遠的地方鐳射雷達資料通常變得越稀疏,因此在稀疏的地方應該考慮更大的尺度範圍來提取特徵。為此,作者提出了兩種組合策略來保證更優的特徵提取。

  • 多尺度組合(multi-scale grouping, MSG):比較直接的想法是對不同尺度的區域性提取特徵並將它們串聯在一起,如下圖(a)所示。但是因為需要對每個區域性的每個尺度提取特徵,其計算量的增加也是很顯著的。

  • 多解析度組合(multi-resolution grouping, MRG):為了解決MSG計算量太大的問題,作者提出了MRG。此種方法在某一層對每個區域性提取到的特徵由兩個向量串聯構成,如下圖(b)所示。第一部分由其前一層提取到的特徵再次通過特徵提取網路得到,第二部分則通過直接對這個區域性對應的原始點雲資料中的所有點進行特徵提取得到。

PointNet系列論文解讀3.3 Frustum-PointNet

上述的PointNet和PointNet++主要用於點雲資料的分類和分割問題,Frustum-PointNet(F-PointNet)將PointNet的應用擴充到了3D目標檢測上。目前單純基於Lidar資料的3D目標檢測演算法通常對小目標檢測效果不佳,為了處理這個問題,F-PointNet提出了結合基於影象的2D檢測演算法來定位目標,再用其對應的點雲資料視錐進行bbox迴歸的方法來實現3D目標檢測。F-PointNet的網路結構如下圖所示。

PointNet系列論文解讀

可以看到,F-PointNet主要由以下幾部分構成:

  • 視錐生成(frustum proposal):首先通過2D目標檢測器來定點陣圖片中的目標以及判斷它們的類別。對每一個檢測到的目標,通過標定好的感測器的內參和它們之間的轉換矩陣得到其對應的點雲資料中的各點,即點雲視錐。作者使用的2D目標檢測模型是基於VGG網路的FPN作為特徵提取器,並用Fast R-CNN來預測最終的2D bbox。

  • 3D例項分割(3D instance segmentation):對每個得到的點雲視錐,通過旋轉得到以中心視角為座標軸的點雲資料。對轉換後的點雲資料用PointNet(或PointNet++)進行例項分割。例項分割是一個二分類問題,用於判斷每個點屬於某個目標或者不屬於。

  • 3D邊界框迴歸(3D box estimation):將上一步例項分割的結果作為mask得到屬於某個例項的所有點雲,計算其質心作為新的座標系原點。通過一個T-Net進行迴歸得到目標質心和當前座標原點的殘差。將點雲平移到計算得到的目標質心後,通過PointNet(或PointNet++)對3D bbox的中心、尺寸和朝向進行迴歸得到最終的輸出。此步驟採用的迴歸方式和Faster R-CNN中類似,不直接回歸,而是迴歸到不同尺寸和朝向的錨點(anchors)。

綜上所述,F-PointNet是一個多步驟的3D目標檢測演算法。如下圖所示,為了應對點雲資料中各個目標的視角不變性和得到更準確的bbox迴歸(通過縮小需要回歸的值的取值範圍),演算法需要進行三次座標轉換。模型的loss和2D的目標檢測一樣是包含分類以及迴歸的多工loss。同時,作者提出了一種被稱為corner loss的損失函式來對目標的中心、朝向和大小進行聯合優化,避免由於某一方面的不準確而主導loss。

PointNet系列論文解讀4. 目標檢測效果

因為目前我們主要考慮點雲的目標檢測問題,在此忽略PointNet和PointNet++論文中提出的分類和語義分割的效果,只考慮F-PointNet的檢測效果。下圖為論文給出的在KITTI測試集上的檢測效果。

PointNet系列論文解讀

從KITTI的排行榜上[2],F-PointNet對car,pedestrian和cyclist的檢測效果分別排第四,第一和第二。可以看到,得益於精確的基於影象的2D檢測模型,F-PointNet對小目標的檢測效果確實處於領先地位。官方給出的單幀處理速度是0.17s。

作者在附錄中給出了結合點雲鳥瞰視角的F-PointNet的實驗,結果顯示,對於hard的場景,結合鳥瞰圖的F-PointNet有3.82%的提升。這是因為,hard場景下目標遮擋很嚴重,2D目標檢測根據圖片不能很好地檢測到目標,而鳥瞰圖能很好地分辨出不同目標。

5. 思考

  • 如前所述,F-PointNet由2D目標檢測模型和3D分割和迴歸網路構成,並非為端到端的模型。可以考慮將其組合成一個端到端的網路。

  • 在做3D分割和bbox迴歸的時候,目前只使用了點雲特徵,可以考慮融合2D檢測模型給出的影象特徵。

參考資料

[1] Universal_approximation_theorem

[2] http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d

[3] PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

[4] PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

[5] Frustum PointNets for 3D Object Detection from RGB-D Data

相關文章