PointNet系列論文解讀

1 簡介

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

 

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

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

 

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

2 理論基礎

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

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

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

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

 

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

定理1

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

 

定理2

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

 

3 PointNet系列模型結構

3.1 PointNet

 

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

1、輸入爲一幀的全部點雲數據的集合,表示爲一個nx3的2d tensor,其中n代表點雲數量,3對應xyz座標。
2、輸入數據先通過和一個T-Net學習到的轉換矩陣相乘來對齊,保證了模型的對特定空間轉換的不變性。
3、通過多次mlp對各點雲數據進行特徵提取後,再用一個T-Net對特徵進行對齊。
4、在特徵的各個維度上執行maxpooling操作來得到最終的全局特徵。
5、對分類任務,將全局特徵通過mlp來預測最後的分類分數;對分割任務,將全局特徵和之前學習到的各點雲的局部特徵進行串聯,再通過mlp得到每個數據點的分類結果。

 

3.2 PointNet++

 

▎網絡構成

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

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

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

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

 

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

 

▎不均勻點雲數據的特徵提取

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

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

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

3.3 Frustum-PointNet

上述的PointNet和PointNet++主要用於點雲數據的分類和分割問題,Frustum-PointNet(F-PointNet)將PointNet的應用拓展到了3D目標檢測上。目前單純基於Lidar數據的3D目標檢測算法通常對小目標檢測效果不佳,爲了處理這個問題,F-PointNet提出了結合基於圖像的2D檢測算法來定位目標,再用其對應的點雲數據視錐進行bbox迴歸的方法來實現3D目標檢測。F-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。

4 目標檢測效果

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

 

從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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章