前言
PointNet是由斯坦福大學的Charles R. Qi等人在《PointNet:Deep Learning on Point Sets for 3D Classification and Segmentation》一文中提出的模型,它可以直接對點云進行處理的,對輸入點云中的每一個點,學習其對應的空間編碼,之后再利用所有點的特征得到一個全局的點云特征。Pointnet提取的全局特征能夠很好地完成分類任務,但局部特征提取能力較差,這使得它很難對復雜場景進行分析。
PointNet++是Charles R. Qi團隊在PointNet論文基礎上改進版本,其核心是提出了多層次特征提取結構,有效提取局部特征提取,和全局特征。
F-PointNet將PointNet的應用拓展到了3D目標檢測上,可以使用PointNet或PointNet++進行點云處理。它在進行點云處理之前,先使用圖像信息得到一些先驗搜索范圍,這樣既能提高效率,又能增加準確率。
PointNet
1.1 PointNet思路流程
1)輸入為一幀的全部點云數據的集合,表示為一個nx3的2d tensor,其中n代表點云數量,3對應xyz坐標。
2)輸入數據先通過和一個T-Net學習到的轉換矩陣相乘來對齊,保證了模型的對特定空間轉換的不變性。
3)通過多次mlp對各點云數據進行特征提取后,再用一個T-Net對特征進行對齊。
4)在特征的各個維度上執(zhí)行maxpooling操作來得到最終的全局特征。
5)對分類任務,將全局特征通過mlp來預測最后的分類分數;對分割任務,將全局特征和之前學習到的各點云的局部特征進行串聯(lián),再通過mlp得到每個數據點的分類結果。
1.2 PointNet網絡結構
它提取的“全局特征”能夠很好地完成分類任務。下面看一下PointNet的框架結構:
下面解釋一個網絡中各個部件的作用。
1)transform:第一次,T-Net 3x3,對輸入點云進行對齊:位姿改變,使改變后的位姿更適合分類/分割;第二次,T-Net 64x64,對64維特征進行對齊。2)mlp:多層感知機,用于提取點云的特征,這里使用共享權重的卷積。
3)max pooling:匯總所有點云的信息,進行最大池化,得到點云的全局信息。
4)分割部分:局部和全局信息組合結構(concate,語義分割)。
5)分類loss:交叉熵:分割loss:分類+分割+L2(transform,原圖的正交變換)。
1.3T-Net網絡結構
將輸入的點云數據作為nx3x1單通道圖像,接三次卷積和一次池化后,再reshape為1024個節(jié)點,然后接兩層全連接,網絡除最后一層外都使用了ReLU激活函數和批標準化。
1.4 模型效果
ModelNet40 上的分類結果:
ShapeNet部分數據集上的分割結果:
不足:缺乏在不同尺度上提取局部信息的能力。
PointNet++
Pointnet提取的全局特征能夠很好地完成分類任務,由于模型基本上都是單點采樣,代碼底層用的是2Dconv,只有maxpooling整合了整體特征,所以局部特征提取能力較差,這使得它很難對復雜場景進行分析。
PointNet++的核心是提出了多層次特征提取結構,有效提取局部特征提取,和全局特征。
2.1 思路流程
先在輸入點集中選擇一些點作為中心點,然后圍繞每個中心點選擇周圍的點組成一個區(qū)域,之后每個區(qū)域作為PointNet的一個輸入樣本,得到一組特征,這個特征就是這個區(qū)域的特征。
之后中心點不變,擴大區(qū)域,把上一步得到的那些特征作為輸入送入PointNet,以此類推,這個過程就是不斷的提取局部特征,然后擴大局部范圍,最后得到一組全局的特征,然后進行分類。
2.2 整體網絡結構
PointNet++ 在不同尺度提取局部特征,通過多層網絡結構得到深層特征。PointNet++按照任務也分為 classification (分類網絡)和 segmentation (分割網絡)兩種,輸入和輸出分別與PointNet中的兩個網絡一致。
PointNet++會先對點云進行采樣(sampling)和劃分區(qū)域(grouping),在各個小區(qū)域內用基礎的PointNet網絡進行特征提?。∕SG、MRG),不斷迭代。
對于分類問題,直接用PointNet提取全局特征,采用全連接得到每個類別評分。對于分割問題,將高維的點反距離插值得到與低維相同的點數,再特征融合,再使用PointNet提取特征 。
比較PointNet++兩個任務網絡的區(qū)別:
在得到最高層的 feature 之后,分類網絡使用了一個小型的 PointNet + FCN 網絡提取得到最后的分類 score;
分割網絡通過“跳躍連接” 操作不斷與底層 “低層特征圖”信息融合,最終得到逐點分分類語義分割結果。(“跳躍連接”對應上圖的 skip link connection;低層特征圖 具有分辨率較大,保留較豐富的信息,雖然整體語義信息較弱。)
2.3網絡結構組件
1)采樣層(sampling)
激光雷達單幀的數據點可以多達100k個,如果對每一個點都提取局部特征,計算量是非常巨大的。因此,作者提出了先對數據點進行采樣。作者使用的采樣算法是最遠點采樣(farthest point sampling, FPS),相對于隨機采樣,這種采樣算法能夠更好地覆蓋整個采樣空間。
2)組合層(grouping)
為了提取一個點的局部特征,首先需要定義這個點的“局部”是什么。一個圖片像素點的局部是其周圍一定曼哈頓距離下的像素點,通常由卷積層的卷積核大小確定。同理,點云數據中的一個點的局部由其周圍給定半徑劃出的球形空間內的其他點構成。組合層的作用就是找出通過采樣層后的每一個點的所有構成其局部的點,以方便后續(xù)對每個局部提取特征。
3)特征提取層(feature learning)
因為PointNet給出了一個基于點云數據的特征提取網絡,因此可以用PointNet對組合層給出的各個局部進行特征提取來得到局部特征。值得注意的是,雖然組合層給出的各個局部可能由不同數量的點構成,但是通過PointNet后都能得到維度一致的特征(由上述K值決定)。
2.4 不均勻點云組合grouping方法
不同于圖片數據分布在規(guī)則的像素網格上且有均勻的數據密度,點云數據在空間中的分布是不規(guī)則且不均勻的。當點云不均勻時,每個子區(qū)域中如果在分區(qū)的時候使用相同的球半徑,會導致部分稀疏區(qū)域采樣點過小。作者提出多尺度成組 (MSG)和多分辨率成組 (MRG)兩種解決辦法。
1)多尺度組合MSG:對于選取的一個中心點設置多個半徑進行成組,并將經過PointNet對每個區(qū)域抽取后的特征進行拼接(concat)來當做該中心點的特征,這種做法會產生很多特征重疊,結果會可以保留和突出(邊際疊加)更多局部關鍵的特征,但是這種方式不同范圍內計算的權值卻很難共享,計算量會變大很多。
2)多分辨率組合MRG:MRG避免了大量的計算,但仍然保留了根據點的分布特性自適應地聚合信息的能力。對不同特征層上(分辨率)提取的特征再進行concat,以b圖為例,最后的concat包含左右兩個部分特征,分別來自底層和高層的特征抽取,對于low level點云成組后經過一個pointnet和high level的進行concat,思想是特征的抽取中的跳層連接。
當局部點云區(qū)域較稀疏時,上層提取到的特征可靠性可能比底層更差,因此考慮對底層特征提升權重。當然,點云密度較高時能夠提取到的特征也會更多。這種方法優(yōu)化了直接在稀疏點云上進行特征抽取產生的問題,且相對于MSG的效率也較高。
選擇哪一種?
當局部區(qū)域的密度低時,第一矢量可能不如第二矢量可靠,因為計算第一矢量的子區(qū)域包含更稀疏的點并且更多地受到采樣不足的影響。在這種情況下,第二個矢量應該加權更高。另一方面,當局部區(qū)域的密度高時,第一矢量提供更精細細節(jié)的信息,因為它具有以較低水平遞歸地表達較高分辨率檢查的能力。
2.5 模型效果
分類對比:
分割對比:
小結復雜場景點云一般采用PointNet++進行處理,而簡單場景點云則采用PointNet。如果只從點云分類和分割兩個任務角度分析,分類任務只需要max pooling操作之后的特征信息就可完成,而分割任務則需要更加詳細的local context信息。
F-PointNet 也是直接處理點云數據的方案,但這種方式面臨著挑戰(zhàn),比如:如何有效地在三維空間中定位目標的可能位置,即如何產生 3D 候選框,假如全局搜索將會耗費大量算力與時間。
F-PointNet是在進行點云處理之前,先使用圖像信息得到一些先驗搜索范圍,這樣既能提高效率,又能增加準確率。
3.1 基本思路
首先使用在 RGB 圖像上運行的 2D 檢測器,其中每個2D邊界框定義一個3D錐體區(qū)域。然后基于這些視錐區(qū)域中的 3D 點云,我們使用 PointNet/PointNet++ 網絡實現(xiàn)了 3D實例分割和非模態(tài) 3D 邊界框估計??偨Y一下思路,如下:
基于圖像2D目標檢測。
基于圖像生成錐體區(qū)域。
在錐體內,使用 PointNet/PointNet++ 網絡進行點云實例分割。
它是在進行點云處理之前,先使用圖像信息得到一些先驗搜索范圍,這樣既能提高效率,又能增加準確率。先看看下面這張圖:
在這張圖里,左上角的意思是先把圖像和點云信息標定好(這個屬于傳感器的外參標定,在感知之前進行;獲取兩個傳感器之間旋轉矩陣和平移向量,就可以得到相互的位置關系)。
左下角是用目標檢測算法檢測出物體的邊界框(BoundingBox),有了邊界框之后,以相機為原點,沿邊界框方向延伸過去就會形成一個錐體(上圖的右半部分),該論文題目里frustum這個詞就是錐體的意思。然后用點云對該物體進行識別的時候,只需要在這個錐體內識別就行了,大大減小了搜索范圍。
3.2 模型框架
模型結構如下:(可以點擊圖片放大查看)
網絡共分為三部分,第一部分是使用圖像進行目標檢測并生成錐體區(qū)域,第二部分是在錐體內的點云實例分割,第三部分是點云物體邊界框的回歸。
3.3基于圖像生成錐體區(qū)域
由于檢測到的目標不一定在圖像的正中心,所以生成的錐體的軸心就不一定和相機的坐標軸重合,如下圖中(a)所示。為了使網絡具有更好的旋轉不變性,我們需要做一次旋轉,使相機的Z軸和錐體的軸心重合。如下圖中(b)所示。
3.4 在錐體內進行點云實例分割
實例分割使用PointNet。一個錐體內只提取一個物體,因為這個錐體是圖像中的邊界框產生的,一個邊界框內也只有一個完整物體。
在生成錐體的時候提到了旋轉不變性,此處完成分割這一步之后,還需要考慮平移不變性,因為點云分割之后,分割的物體的原點和相機的原點必不重合,而我們處理的對象是點云,所以應該把原點平移到物體中去,如下圖中(c)所示。
3.5 生成精確邊界框
生成精確邊界框的網絡結構:
從這個結構里可以看出,在生成邊界框之前,需要經過一個T-Net,這個東西的作用是生成一個平移量,之所以要做這一步,是因為在上一步得到的物體中心并不完全準確,所以為了更精確地估計邊界框,在此處對物體的質心做進一步的調整,如下圖中(d)所示。
下面就是邊界框回歸了,對一個邊界框來講,一共有七個參數,包括:
最后總的殘差就是以上目標檢測、T-Net和邊界框殘差之和,可以據此構建損失函數。
3.6 PointNet關鍵點
(1) F-PointNet使用2D RGB圖像
F-PointNet使用2D RGB圖像原因是:1.當時基于純3D點云數據的3D目標檢測對小目標檢測效果不佳。所以F-PointNet先基于2D RGB做2D的目標檢測來定位目標,再基于2d目標檢測結果用其對應的點云數據視錐進行bbox回歸的方法來實現(xiàn)3D目標檢測。2.使用純3D的點云數據,計算量也會特別大,效率也是這個方法的優(yōu)點之一。使用成熟的2D CNN目標檢測器(Mask RCNN)生成2D檢測框,并輸出one-hot 分類向量(即基于2D RGB圖像的分類)。
(2)錐體框生成
2D檢測框結合深度信息,找到最近和最遠的包含檢測框的平面來定義3D視錐區(qū)域frustum proposal。然后在該frustum proposal里收集所有的3D點來組成視錐點云(frustum point cloud)。
3.7 實驗結果
與其他模型對比:
模型效果:
3.8 優(yōu)點
(1)舍棄了global fusion,提高了檢測效率;并且通過2D detector和3D Instance Segmentation PointNet對3D proposal實現(xiàn)了逐維(2D-3D)的精準定位,大大縮短了對點云的搜索時間。下圖是通過3d instance segmentation將搜索范圍從9m~55m縮減到12m~16m。
(2)相比于在BEV(Bird's Eye view)中進行3D detection,F(xiàn)-PointNet直接處理raw point cloud,沒有任何維度的信息損失,使用PointNet能夠學習更全面的空間幾何信息,特別是在小物體的檢測上有很好的表現(xiàn)。下圖是來自Hao Su 2018年初的課程,現(xiàn)在的KITTI榜有細微的變動。
(3)利用成熟的2D detector對proposal進行分類(one-hot class vector,打標簽),起到了一定的指導作用,能夠大大降低PointNet對三維空間物體的學習難度。
3.9 模型代碼
開源代碼:GitHub - charlesq34/frustum-pointnets: Frustum PointNets for 3D Object Detection from RGB-D Data
作者代碼的運行環(huán)境:
系統(tǒng):Ubuntu 14.04 或 Ubuntu 16.04
深度框架:TensorFlow1.2(GPU 版本)或 TensorFlow1.4(GPU 版本)
其他依賴庫:cv2、mayavi等。
審核編輯:劉清
-
神經網絡
+關注
關注
42文章
4772瀏覽量
100808 -
RGB
+關注
關注
4文章
798瀏覽量
58538 -
FPS
+關注
關注
0文章
35瀏覽量
12012
原文標題:一文搞懂PointNet全家桶——強勢的點云處理神經網絡
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論