问题
- 3DOD的任务是在所给顶的感知数据上估计出包围目标的3D框,大致分为两个子任务:将给定的候选3D框中将目标进行分类,然后回归出该目标的bbox;
- 如何在复杂环境下使用激光雷达数据对3D bbox进行准确回归;
- 3DOD中基于概率密度回归的bbox回归方法在推理时需要使用梯度上升最大化 p ( y ∣ x ; θ ) p(y|x;\theta) p(y∣x;θ),要求DNN的标量输出 f θ ( x , y ) f_\theta(x,y) fθ(x,y)对bbox y y y是可微的,但当前方法无法满足可微这一条件;
解决方案
- 使用基于能量模型的概率回归方法,进行回归;
- 使用3D bbox的可微的池化,使得test时可以使用多次迭代优化回归;
实现
-
基于能量模型的回归
-
基于能量的模型中,使用条件EBM对给定 x x x的 y y y的分布 p ( y ∣ x ) p(y|x) p(y∣x)进行建模,定义为:
其中, f θ : X × Y → R f_\theta: X\times Y\rightarrow R fθ:X×Y→R是一个DNN映射, Z ( x , θ ) = ∫ e f θ ( x , y ^ ) d y ^ Z(x,\theta)=\int e^{f_\theta(x,\hat y)}d\hat y Z(x,θ)=∫efθ(x,y^)dy^为对输入有依赖的归一化函数,DNN的输出 f θ ( x , y ) f_\theta(x,y) fθ(x,y)被解释为分布 p ( x ∣ y ) p(x|y) p(x∣y)的(负)能量;
-
在测试时,模型需要预测给定 x ⋆ x\star x⋆情况下最可能的目标, y ⋆ = a r g m a x y p ( y ∣ x ⋆ ; y ) y^\star=argmax_y{p(y|x\star;y)} y⋆=argmaxyp(y∣x⋆;y);在实际训练中, y ⋆ = a r g m a x y f θ ( x ⋆ , y ) y^\star=argmax_y{f_\theta(x\star,y)} y⋆=argmaxyfθ(x⋆,y)可以通过微调T步的一个初始估计 y ^ \hat y y^来得到最终的y的估计:
-
使用NCE进行训练,损失如下:
其中, { y i ( m ) } m = 1 M \{y_i^{(m)}\}_{m=1}^M {yi(m)}m=1M为从噪声分布 p ( y ∣ y i ) p(y|y_i) p(y∣yi)中采集的样本, y i y_i yi为真实目标;q为以 y i y_i yi为中心的K个Guassins混合模型 q ( y ∣ y i ) = 1 / K ∑ k = 1 K N ( y ; y i ; σ k 2 I ) q(y|y_i)=1/K\sum_{k=1}^KN(y;y_i;\sigma_k^2I) q(y∣yi)=1/K∑k=1KN(y;yi;σk2I);
-
polo
-
-
SA-SSD3D目标检测器
-
baseline的框架
给定LiDAR点云数据,该模型估计出D个预测 { d i } i = 1 D \{d_i\}_{i=1}^D {di}i=1D,每个d包含一个3D bbox的预测y: y = [ c x , c y , c z , h , w , l , , Φ ] ∈ R 7 y=[c_x,c_y,c_z,h,w,l,,\Phi]\in R^7 y=[cx,cy,cz,h,w,l,,Φ]∈R7,其中 Φ \Phi Φ为bbox的方位角。首先,LiDAR点云数据被编码为3D的tensor,输入backbone网络,使用子流形稀疏3D卷积进行处理,生成3为的tensor h 1 ( x ) ∈ R W × L × H × C h_1(x)\in R^{W\times L\times H\times C} h1(x)∈RW×L×H×C,将该特征进行flatten,得到其BEV(鸟瞰)特征表示 h 2 ( x ) ∈ R W × L × H C h_2(x)\in R^{W\times L\times HC} h2(x)∈RW×L×HC, h 2 ( x ) h_2(x) h2(x)再通过六个标准的2D卷积层,得到 h 3 ( x ) ∈ R W × L × C ′ h_3(x)\in R^{W\times L\times C'} h3(x)∈RW×L×C′, h 3 ( x ) h_3(x) h3(x)则被送入检测网络进行分类和回归;
-
polo
-
-
Conditional EBM的定义
-
为了实现输出 f θ ( x , y ) f_\theta(x,y) fθ(x,y)对3D的 y y y可微,基于2D的回归方法,为3D中的可微的池化操作;
-
3D的可微池化:利用2D的特征 h 3 ( x ) ∈ R W × L × C ′ h_3(x)\in R^{W\times L\times C'} h3(x)∈RW×L×C′,使用 y B E V y^{BEV} yBEV对 h 3 h_3 h3进行池化,提取特征向量 h 4 ( x , y B E V ) h_4(x,y^{BEV}) h4(x,yBEV)。其中 y B E V = [ c x , c y , w , l , Φ ] ∈ R 5 y^{BEV}=[c_x,c_y,w,l,\Phi]\in R^5 yBEV=[cx,cy,w,l,Φ]∈R5,其为一个具有方向的2D bbox,无法直接使用2D的池化。所以将 y B E V y^{BEV} yBEV划分为规则的grid,通过对 h 3 h_3 h3进行双线性插值来提取每个grid中的特征向量, g ∈ R C ′ g\in R^{C'} g∈RC′,然后flatten获取特征向量 h 4 ( x , y B E V ) ∈ R W ′ L ′ C ′ h_4(x,y^{BEV})\in R^{W'L'C'} h4(x,yBEV)∈RW′L′C′,该池化操作对 y B E V y^{BEV} yBEV是可微的。如下图:
-
但 h 4 ( x , y B E V ) h_4(x,y^{BEV}) h4(x,yBEV)是 y B E V y^{BEV} yBEV的函数,并不包含全部的3D bbox y y y,在测试期间使用梯度上升无法更新 c z c_z cz和 h h h。此处通过两个全连接层处理 c z c_z cz和 h h h,生成向量 g c z ∈ R C ′ ′ g_{c_z}\in R^{C''} gcz∈RC′′和 g h ∈ R C ′ ′ g_{h}\in R^{C''} gh∈RC′′,最终将三个特征向量cat到一起,得到来自3D的bbox y的池化特征 h 5 ( x , y ) h_5(x,y) h5(x,y)。如下图所示:
-
-
检测器的训练和推理
-
训练
-
推理
- 给定点云数据p,检测器SA-SSD输出2D特征 h 3 ( x ⋆ ) h_3(x\star) h3(x⋆)和检测结果 { ( y ^ i , s i ) } i = 1 D \{(\hat y_i,s_i)\}_{i=1}^D {(y^i,si)}i=1D, s i s_i si为分类得分;
- 将所有的bbox { y ^ i } i = 1 D \{\hat y_i\}_{i=1}^D {y^i}i=1D作为初始bbox,通过T步梯度上升进行微调使得趋向于 f θ ( x ⋆ , y ) f_\theta(x\star,y) fθ(x⋆,y)的不同局部最大值,最终得到 { y i } i = 1 D \{y_i\}_{i=1}^D {yi}i=1D;
-
实验结果:论文中
-