趙 璐,宋新萍,姚振鑫
(上海工程技術大學 機械與汽車工程學院,上海 201600)
3D物體檢測是3D感知中的一項具有挑戰(zhàn)性的任務,是自動駕駛汽車(AV)的基本組成部分。與普通2D物體檢測不同,AV需要從現(xiàn)實世界中估計更多的3D邊界框信息,以完成諸如路徑規(guī)劃、避免碰撞之類的高級任務。3D物體檢測的最新方法利用了不同類型的數(shù)據(jù),包括傳感器采集的數(shù)據(jù),單眼圖像,立體圖像。在自動駕駛中,LiDAR捕獲的點云是更通用,信息量更大的數(shù)據(jù)格式[1]。LiDAR點云的3D實例分割和對象檢測示例如圖1所示,圖像分別顯示了原始點云和3D檢測結果,真實情況和預測結果分別以綠色和紅色繪制,其中的紅點是前景點的預測的對象中心,RGB圖像僅在此處用于可視化。
圖1 來自LiDAR點云的3D實例分割和對象檢測示例
目標檢測通常將對象表示為2D或3D BBox,并帶有多個參數(shù),如Bbox的中心、尺寸和方向等,這種簡單的表示形式適合于深度學習框架,同時也有一些局限性。例如,對象的形狀信息已被完全丟棄,對于某個BBox,不可避免要包含來自背景或其它對象的一些像素;在遮擋的情況下,這種情況變得更加嚴重;此外,BBox表示不夠準確,無法描述對象的確切位置。為了克服此問題,已為每個BBox使用了一個附加的實例mask,以消除其它對象或背景的影響,通常實例mask是二進制的,以描述像素是否屬于此對象。
本文設計了一個自下而上的聯(lián)合3D實例分割與目標檢測的端到端框架,其主要目標是更好地進行3D目標檢測。
MV3D是一項開創(chuàng)性的工作,融合了視覺和雷達點云信息,將點云投射到鳥瞰圖和前視圖中,這樣既能減少計算量,又不至于丟失過多的信息[2]。受MV3D啟發(fā),AVOD提出一種特征提取方式,借助FPN的想法,從點云輸入和RGB圖像得到全分辨率的特征圖送入RPN網(wǎng)絡,彌補了mv3d網(wǎng)絡在小目標物體檢測上的不足[3]。
已被數(shù)個領先的3D檢測器證明,LiDAR傳感器具有抗干擾能力強、對光照不敏感以及測距精度高等特點。學者們提出了兩種類型的方法,即單階段方法和兩階段方法。相比于單階段的方法,兩階段的方法檢測精度更高,但需要更多的網(wǎng)絡推理時間。
單階段方法:VoxelNet代替了人工提取的特征,將點云劃分為等距的3D體素,并通過類似PointNet的網(wǎng)絡來應用VFE層,通過神經(jīng)網(wǎng)絡學習低級幾何特征,從而表現(xiàn)出良好的性能[4]。HVNet通過引進混合體素網(wǎng)格來提高檢測精度[5]。
兩階段方法:與直接生成3D邊界框的單階段方法不同,兩階段方法旨在通過在第二階段來優(yōu)化第一階段生成的3D提議,以生成更準確的目標檢測框。最近,PointRCNN利用具有SA和FP層的PointNet++來提取每個點的特征,提出了區(qū)域提議網(wǎng)絡(RPN)來生成提議,并應用了改進模塊來預測邊界框和類標簽[6]。
當前的3D方法可以分為兩種:第一種基于檢測方法提取3D邊界框,并在每個框內(nèi)利用mask學習分支來預測對象mask。SGPN基于提取的特征為每個點建立了一個相似度矩陣,通過相似矩陣計算點在特征空間的距離來判斷兩個點是否屬于同一對象[7];第二種基于分段的方法預測語義標簽,并利用點嵌入將點分組為對象實例,與SGPN不同,新提出的GSPN采用綜合分析策略來生成實例細分的提議。
聯(lián)合實例分割和3D BBoxes回歸框架如圖2所示,可以分為兩部分:第一部分是基于聚類策略的對象建議,第二部分是基于最小二乘擬合算法的BBoxes改進。第一部分包括融合采樣模塊、語義分割與中心偏移模塊以及基于聚類的提案生成模塊;第二部分包括3D關鍵點選擇模塊和最小二乘擬合模塊。
圖2 聯(lián)合實例分割和3D BBoxes回歸框架圖
融合采樣:通過融合采樣[8],刪除了基于點的方法中必不可少的Feature Propagate(FP)層, 從而極大地減少了框架的運行時間[9]。
點云特征提?。簩τ诓捎萌诤喜蓸硬呗院蟮妮斎朦c云,使用具有多尺度采樣和分組操作的常用PointNet++(無FP層以增加網(wǎng)絡的運行速度)網(wǎng)絡作為骨干網(wǎng)絡。特別是,設計的框架具有獨立的模塊,特征提取模塊可以使用任何點特征提取網(wǎng)絡代替。
利用語義分割模塊來提取描述性特征,并預測每個點的語義標簽,與語義分割平行,采用偏移分支來學習相對偏移,將每個點移至其各自的真實實例中心。通過這種方式,可以將同一對象實例的點移向相同的中心,并將其聚集得更近,從而可以將點更好地分組為對象,并且可以將附近的同一類對象分離。
2.2.1 語義分割
以逐點特征作為輸入,設計了一個分割分支Ms模塊用于語義類預測。由于采用了多尺度采樣和分組策略,局部結構和全局上下文信息都已在每個點狀特征向量中進行了編碼,這有利于處理不同大小的對象。為了很好地解決分類中的類不平衡問題,使用焦點損失作為評測標準,式(1):
(1)
其中,C表示類別數(shù),如果真相屬于第i類,則yi等于1,否則等于0;pi是第i類的預測概率;γ∈(0,+∞)是聚焦參數(shù);αi∈[0,1]是第i類的加權參數(shù)。
2.2.2 中心偏移
中心偏移模塊Mc用于預測每個點到其對象中心的偏移量,只要所有點都拉到其所屬物理中心的同一對象,則可以將其直接分為不同的實例。因此,偏移量分支對骨干網(wǎng)絡提取的特征進行編碼,以針對N個前景(FG)點生成N個偏移向量O={o1,…,oN}∈RN×3。對于屬于同一實例的點,通過L1-distance回歸損失將其學習偏移量約束,式(2):
(2)
(3)
從點到其實例質心的距離通常具有較小的值(0~1 m),考慮到不同類別的不同對象大小,發(fā)現(xiàn)網(wǎng)絡很難回歸精確的偏移量,尤其是對于大型對象的邊界點距離實例質心相對較遠。為了解決這個問題,制定了方向損失,來約束預測偏移矢量的方向,式(4):
(4)
通過語義分割與中心偏移的操作,所有FG點都將匯總到其相應對象的中心??梢酝ㄟ^簡單的聚類算法(即k均值[10])進行實例分割,k-means是較經(jīng)典的聚類算法之一,該算法的效率高,在對大規(guī)模數(shù)據(jù)進行聚類時被廣泛應用。聚類后,通過平均前k個預測值,還為每個實例生成了平均值BBox。
盡管從第一階段開始的BBox預測非常精確,但仍有一些改進空間。類似于其它基于兩階段的方法,將相同實例上的點投票為其目標關鍵點,將最小二乘擬合算法應用于預測的關鍵點,通過得到的3D旋轉R∈ SO(3)和平移t∈R3來優(yōu)化第一階段得到的BBox。
(1)3D關鍵點檢測。對于生成的每個提案,使用3D關鍵點檢測模塊MK來檢測每個對象的3D關鍵點,MK會預測從可見點到目標關鍵點的每點歐幾里德平移偏移,這些可見點以及預測的偏移量將投票給目標關鍵點,通過聚類算法收集投票點,并選擇聚類中心作為投票關鍵點。
(5)
其中,M是對象的選定關鍵點數(shù)。
多任務損失被用于訓練的網(wǎng)絡,包括語義分割損失Lcls、中心偏移損失Lcenter、關鍵點平移偏移損失Lkeypoints和3D BBox回歸損失Lreg,式(6):
L=Lcls+Lcenter+Lkeypoints+Lreg
(6)
中心偏移損失, 在訓練過程中,直接為每個FG點生成監(jiān)督信號,并將損失函數(shù)表述為式(7):
Lcenter=Lo_reg+Lo_dir+Lsize+Lθ
(7)
其中,Lo_reg、Lo_dir、Lsize和Lθ分別是偏移量約束損失、方向損失、BBox尺寸和方向角的平滑度L1-distance損失。
BBox回歸損失:每個建議都編碼為7維向量,包括對象中心(cx,cy,cz),對象尺寸(h,w,l)和頭方向角θ。旋轉后的3D聯(lián)合損失在這里用作評測標準,式(8):
(8)
其中,Bd和Bg分別代表預測的BBox和真實的BBox。
本文利用公共KITTI數(shù)據(jù)集評估了3D實例分割和對象檢測的框架。整個數(shù)據(jù)集分為訓練集和測試集兩個子集,分別由7 481和7 518幀組成。
在KITTI中,已為3類對象汽車、行人和騎自行車的人提供了3D BBox注釋,只需提取每個BBox內(nèi)部的點,即可為每個對象生成實例mask。3D實例地面真實情況的示例如圖3所示,其中不同的顏色表示該圖像底部的不同對象, 綠色的BBox是真實結果,其它顏色 BBox是預測結果,底部圖像僅用于可視化。
圖3 基于KITTI 3D BBox注釋生成的實例分割
圖4 KITTI 3D物體檢測測試集上兩階段方法的評估結果
將本文的3D點云目標檢測與其它最新方法進行了比較,結果見表1。在3D和BEV檢測任務中,本文的方法在所有競爭對手中均獲得了出色的性能,在不同的召回率設置方面優(yōu)于最新方法,具有更好的檢測覆蓋率和準確性,如圖4所示。將從LiDAR檢測到的3D邊界框投影到RGB圖像,以實現(xiàn)更好的可視化,如圖5所示。
圖5 在KITTI基準上聯(lián)合實例分割和3D對象檢測的3個示例
表1 與KITTI測試服務器上其它方法的性能比較
在實例分割的基礎上,可視化了檢測到的3D關鍵點,如圖6所示。綠色點是真實3D關鍵點,紅色點是預測的3D關鍵點,實驗結果表明本文的方法能夠選擇合適的關鍵點。
圖6 3D關鍵點可視化
本文提出了用于聯(lián)合3D對象檢測和實例分割的統(tǒng)一框架。第一階段設計了一個語義分割模塊Ms與平行的中心偏移模塊Mc,將屬于同一對象的所有前景點拉到其所屬物理中心;第二階段,提出了一種簡單有效的基于關鍵點的方法來優(yōu)化第一階段得到的BBox。本文所提出的框架僅需幾個區(qū)域提議就能獲得最新的效果,這對于在實際應用中進行實時感知非常重要。當前,使用PointNet ++作為骨干網(wǎng),是實時檢測率的瓶頸。將來,希望設計一個更高效的骨干網(wǎng)絡,以使系統(tǒng)實時運行,以便在360°視點上進行目標檢測。