天天看點

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

簡介

在點雲中檢測3D目标是自動駕駛最重要的感覺任務之一。由于功率和效率的限制,大多數檢測系統都在車輛嵌入式系統上運作。開發對嵌入式系統友好的3D目标檢測系統是實作自動駕駛的關鍵步驟。

由于點雲的稀疏性質,直接在原始點雲上應用3D或2D卷積神經網絡(CNN)效率很低下。對于點雲資料中的目标檢測部分,大多數采用基于anchor的檢測方法,而基于anchor的方法有兩個主要缺點。首先,非最大抑制(NMS)是基于anchor的方法所必需的,它可以抑制重疊的高置信度檢測邊界框。但是它可能會帶來不小的計算成本,尤其是對于嵌入式系統。根據實驗,即使在現代高端桌上型電腦CPU上,處理一個KITTI 點雲架構也要花費20毫秒以上的時間,更不用說計算平台為嵌入式系統的情況。其次,基于anchor的方法需要選擇anchor,這很棘手且耗時,因為調整的關鍵部分可能是手動嘗試和錯誤過程。例如,每次将新的檢測類别添加到檢測系統時,都需要選擇超參數,例如适當的anchor編号,anchor大小,anchor角度和密度等。

我們能否擺脫NMS并設計出對嵌入式系統友好的高效anchor free 3D點雲目标檢測系統?在本文中,基于anchor free思想提出了一種無anchor和無NMS的具有簡單後處理的一階段端到端3D點雲目标檢測器(AFDet)。

在本文的實驗中,使用PointPillars将整個點雲編碼成僞圖像或鳥瞰圖(BEV)中類似圖像的特征圖。然而,AFDet可以與任何點雲編碼器一起使用,它可以生成僞圖像或類似圖像的2D資料。  

編碼後,應用上采樣necks的CNN輸出特征圖,連接配接到五個不同的heads來預測BEV平面上的物體中心,并回歸3D邊界框的不同屬性。最後,将五個heads的輸出結果合并在一起,生成檢測結果。其中,關鍵點熱圖預測head用于預測BEV平面内的物體中心,每一個物體都将被編碼成一個以熱峰為中心的小區域。 在推理階段,每一個熱峰都會通過最大池化操作被挑出來,之後,不再有多個回歸的anchor被平鋪到一個位置,是以不需要使用傳統的NMS。這使得整個檢測器可以在典型的CNN加速器或GPU上運作,節省了CPU資源用于自動駕駛的其他關鍵任務。

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

相關工作

由于LiDAR提供了準确的3D空間資訊,基于LiDAR的解決方案在3D對象檢測任務中占了上風。

 LiDAR-based 3D Object Detection

由于長度和順序不固定,是以點雲為稀疏和不規則格式,在輸入到神經網絡之前需要對其進行編碼。一些研究利用網狀網格将點雲體素化。諸如密度,強度,高度等特征在不同的體素上作為不同的通道連接配接在一起。體素化的點雲要麼投影到鳥瞰圖BEV,Range  View(RV)等不同的視圖,然後通過2D卷積處理,要麼儲存在3D坐标中以通過稀疏3D卷積處理 。

PointNet 提出了一種有效的解決方案,使用原始點雲作為輸入進行3D檢測和分割。PointNet運用多層感覺器(MLP)和最大池操作來解決點雲的混亂和不均勻性。後續的工作有:PointNet ++ 、Frustum PointNet 、PointR-CNN 和STD 。VoxelNet結合了vox-elization和PointNet提出了Voxel特征提取器(VFE),在每個體素内實作了PointNet樣式編碼器。

在基于anchor的方法中,提供了預定義的框用于邊界框編碼。但是,使用密集的anchors會導緻潛在目标對象的數量很多,這使得NMS成為不可避免的問題。PointRCNN 提出了基于全場景點雲分割的不帶anchor框的3D候選區域生成子網絡。VoteNet 從投票的興趣點構造3D 邊界框,而不是預定義的anchor框。但是它們都不都是NMS free的,這使它們效率降低并且對嵌入式系統不友好。

Camera-based 3D Object Detection

通過設計更複雜的網絡,基于攝像頭的解決方案正迅速追上基于LiDAR的解決方案。MonoDIS 利用2D和3D檢測損失的新穎的disentangling 變換和3D邊界框的新穎自監督置信度得分,在nuScenes 3D對象檢測挑戰中獲得最高排名。CenterNet 從特征圖上檢測邊界框的中心并以此預測目标對象的位置和類别。盡管CenterNet最初是為2D檢測而設計的,但它也具有使用單目相機進行3D檢測的潛力。TTFNet 提出了縮短訓練時間并提高推理速度的技術。RTM3D 預測圖像空間中3D邊界框的九個透視關鍵點,并通過幾何規則恢複3D邊界框。

PointPillars: Fast Encoders for Object Detection from Point Clouds

論文位址:https://arxiv.org/abs/1812.05784

代碼位址:https://github.com/nutonomy/second.pytorch

主要思路:設計一個僅僅使用二維卷積就能實作端到端的3D點雲學習,适合于點雲的編碼器;學習點雲的柱子(垂直列)上的特性,進而為對象預測面向3D的框。速讀比較快,精讀較高;

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

(1)生成僞圖像

首先在俯視圖的平面上打網格(H x W)的次元;然後對于每個網格所對應的柱子中的每一個點都取(x,y,z,r,x_c,y_c,z_c,x_p,y_p)9個次元。其中前三個為每個點的真實位置坐标,r為反射率,帶c下标的是點相對于柱子中心的偏差,帶p下标的是對點相對于網格中心的偏差。每個柱子中點多于N的進行采樣,少于N的進行填充0。于是就形成了(D,N,P)D=9, N為點數(設定值),P為H*W。

然後學習特征,用一個簡化的PointNet從D維中學出C個channel來,變為(C,N,P)然後對N進行最大化操作變為(C,P)又因為P是H*W的,我們再展開成一個僞圖像形式,H,W為寬高,C為通道數。

(2)基礎網絡

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

包含兩個子網絡(1、top-down網絡,2、second網絡)top-down網絡結構為了捕獲不同尺度下的特征資訊,主要是由卷積層、歸一化、非線性層構成的,second網絡用于将不同尺度特征資訊融合,主要有反卷積來實作。

(3)檢測頭和損失函數

檢測頭:SSD的檢測頭,目标高度和z軸單獨回歸。

損失函數:

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

分類損失:采用focal loss

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

回歸損失:

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

本文方法:AFDet(Anchor Free One Stage 3D Object Detection)

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

圖1.AFDet系統的架構和anchor free檢測器的詳細結構。整個pipline由點雲編碼器、backbone和neck以及anchor free檢測器組成。方括号中的數字表示最後一個卷積層的輸出通道數。C是檢測中使用的類别數。

1、Point Cloud Encoder點雲編碼器

為了進一步挖掘anchor free檢測器的效率潛力,本文先将PointPillars 用作點雲編碼器,因為其速度快。首先,将檢測範圍離散為鳥瞰圖(BEV)平面中的pillars  (也就是x-y平面)。根據其x-y值将不同的點配置設定給不同的pillars  。在此步驟中,每個點也将增加到D=9維。第二,将對具有足夠數量點的預定義pillars 經過線性層并執行max操作以建立尺寸為F×P的輸出張量,其中F是在PointNet中的線性層的輸出通道數。由于P是標明pillars 的數目,它們在整個檢測範圍内與原始pillars 不是一一對應的。是以,第三步是将標明的pillars 映射到檢測範圍内的原始位置。之後,就可以得到一個僞圖像。具體步驟,可以參考上一部分介紹。盡管使用PointPillars 作為點雲編碼器,但本文的anchor free檢測器與生成僞圖像或類似圖像的2D資料的任何點雲編碼器相容。

2、Anchor Free Detector

本文的Anchor Free目标檢測器由五個head組成。它們是關鍵點熱圖head,局部偏移head,z軸定位head,3D目标尺寸head和方向head。圖1顯示了Anchor Free目标檢測器的一些細節。

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

Object localization in BEV

對于熱圖head和偏移head,預測關鍵點熱圖和局部偏移回歸圖。關鍵點熱圖用于查找目标對象中心在BEV中的位置。偏移回歸圖不僅可以幫助熱圖在BEV中找到更準确的對目标象中心,而且還可以彌補因柱化過程引起的離散化誤差。

将邊界框參數化為

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

,其中,分别表示LiDAR坐标系的中心位置、邊界框的寬度,長度和高度、θ 是垂直于地面的繞z軸的偏航旋轉。

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

表示在x-y平面的檢測範圍,在LiDAR坐标系中,前後方向沿x軸,左右方向沿y軸。在本文的工作中,柱面xy平面始終是一個正方形,是以,b表示支柱的邊長。對于每個目标對象的中心,在BEV僞圖像坐标中具有關鍵點

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

,BEV中的2D邊界框可以表示為

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

對于僞圖像的2D邊界框中覆寫的每個像素(x,y),将其在heatmap中的值設定為

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

其中,d表示在離散的僞圖像坐标中,邊界框中心與相應像素之間計算出的歐幾裡得距離。預測的M= 1表示目标對象的中心,M= 0表示此柱是背景。

BEV中的代表目标對象中心的pillars 将被視為正樣本,而所有其他支柱将被視為負樣本。使用改進的focal loss來訓練heatmap:

對于偏移回歸head,有兩個主要功能:首先,它被用來消除由柱化過程引起的錯誤,在該過程中,将浮點的目标對象中心配置設定給BEV中的 整型的pillar 位置。其次,它在完善熱圖目标對象中心的預測方面起着重要作用,尤其是當熱圖預測錯誤的中心時。具體來說,一旦熱圖預測到一個錯誤的中心,該錯誤的中心距離ground truth中心幾像素遠,則偏移head就具有減輕甚至消除相對于ground truth目标對象中心幾像素誤差的能力。

在偏移回歸map中選擇一個具有半徑r圍繞目标對象中心像素的正方形區域。距物體中心的距離越遠,偏移值就越大,并使用L1 loss來訓練偏移量。

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

z-axis location regression

在BEV中進行目标對象定位之後,便隻有目标對象 x-y location。是以需要z軸定位head來回歸z軸值。使用L1 loss直接回歸z值:

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

Size regression

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

Orientation prediction

物體的方向θ與繞着垂直于地面的z軸旋轉的标量角相交。将其編碼為一個八标量,每個bin具有四個标量。兩個标量用于softmax分類,另外兩個标量用于角度回歸。

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

其中,

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

,并且可以使用以下方法解碼預測的方向值:

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

Gather indices and decode

在訓練階段,不對整個特征圖進行反向傳播。相反,僅反向傳播作為所有回歸head的目标對象中心的索引。在推理階段,使用最大池化和AND操作在之後的預測熱圖中找到峰值,這比基于IoU的NMS更快,更高效。經過最大池化和與運算後,可以輕松地從關鍵點熱圖收集每個中心的索引。BEV中的最終物體中心将是

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

,對于所有其他預測值,它們要麼直接來自回歸結果,要麼通過上面的解碼過程進行解碼。物體的預測邊界框為:

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

3、Backbone and Necks

地平線機器人提出Anchor free、NMS free的3D目标檢測算法 | CVPR2020 W

backbone部分類似于分類任務中使用的網絡,該網絡用于提取特征,同時通過不同塊對空間大小進行下采樣。neck部分用于對特征進行上采樣,以確定來自主幹不同塊的所有輸出具有相同的空間大小,以便可以将它們沿一條軸連接配接在一起。圖2顯示了主幹backbone和neck的詳細資訊。在生成特征圖的過程中,不會降低采樣率,減少下采樣的步幅隻會增加FLOP,是以也減少了backbone和neck的卷積數量。

https://mp.weixin.qq.com/s/3jzGa7apXJ8AuVGn4wrjpg