3D Object Detector 3DSSD

概述

3DSSD是基于点的单阶段3D目标检测网络,该模型的提出背景是在3D单阶段目标检测器大都是基于体素,其在转换过程中会丢失信息,而基于点的检测器大都是两阶段网络,精度虽然高,但是推理性能差。而此时,基于点的单阶段网络还未充分探索。作者基于点基础,提出了一个轻量级且高效的单阶段网络(3DSSD),可以很好地在精度和效率之间保持平衡。 网络框图 作者通过分析两阶段网络各个部分耗时情况,发现SA层对于提取点得特征是必要的,但FP和细化模块确实限制了基于点的方法的效率。 各阶段时间

Backbone

Backbone: (左)KITTI (右)nuScenes

融合采样

F-FPS采样可以保留大都数前景点,但由于采样点数量的限制,很多背景点都被过滤掉(背景点语义特征与前景点语义特征相隔较大),这虽然对回归检测框有好处,但是背景点太少的话对分类任务不太友好(样本不均衡)。基于这一点考虑,作者将D-FPS和F-FPS进行融合,以保证有足够的前景点用于回归,以及足够的背景点用于分类,最终的采样点由D-FPS和F-FPS组成。

CG层

为了降低计算成本,并发挥融合采样的优势,作者提出在预测头之前加一个候选生成层,该层是SA层的变体。 因为D-FPS中的点大都是负样本点,对于边界框框回归是无用的。因此只使用F-FPS中的点作为初始中心点,这些初始中心点在其相对位置的监督下偏移到相应示例,如下图所示: 将这些平移操作后的新点称为候选点,将这些候选点作为CG层的中心点,而为何使用候选点而不是原始点作为中心点是从性能角度考虑的。 接下来,从来自D-FPS和F-FPS的整个点集中找到每个候选点在预定义阈值范围内的周围点。将他们的标准化位置和语义特征连接作为输入,并应用MLP层提取特征。这些特征将会被送到预测头用于回归和分类。

Anchor Free回归

对于回归分支需要回归的主要有中心点坐标、大小以及偏转角。

  • 中心点 候选点到标注中心的距离\((d_x,d_y,d_z)\)
  • 大小 候选点预测到的框大小与对应的Gt bbox的大小偏差\((d_l,d_w,d_h)\)
  • 偏转角 每个候选点预测的角度与实例Gt bbox的转角的偏移,这里引入了bin+res的形式进行回归(这个可参考PointRCNN,就是把角度划分成不同的区域(12),然后引入分类和回归损失)。

3D中心分配策略

在训练过程中,需要给每一个候选点分配一个标签,在2D检测器中通常采用IOU,设定一个阈值,超过某个阈值的作为正样本,或者是采样掩膜的方式来给每个像素分配一个标签。这里借鉴FCOS中心域的思想来给每个候选点分配一个标签,其可以产生连续的中心域标签,可以更好的进行框回归。 红色到蓝色表示1到0

如上图所示,离中心点越近其值接近于1,越远则接近于0. \[centerness^* = \sqrt{\frac{\min(l*,r*)}{\max(l*,r*)}\times\frac{\min(t*,b*)}{\max(t*,b*)}}\]

扩展到3维表示

\[l_{ctrness} = \sqrt[3]{\frac{\min(f,b)}{\max(f,b)}\times\frac{\min(l,r)}{\max(l,r)}\times\frac{\min(t,d)}{\max(t,d)}}\]

其中,$(f, b, l, r, t, d) \(表示中心点到前后左右上下表面的距离。 首先判断候选点在哪个真实框里面,得到\)_{mask}$,其值非0即1。最后的分类标签是两者的乘积。 \[u = \mathcal{l}_{ctrness}*\mathcal{l}_{mask}\]

损失函数

损失函数主要包含分类、回归和偏移损失三部分。 \[ L=\frac{1}{N_c}\sum_i{L_c(s_i,u_i)} + \lambda_1\frac{1}{N_p}\sum_i{[u_i>0]L_r} + \lambda_2\frac{1}{N_p^*}L_s \]

  1. \(N_c\):表示总的候选点数量;
  2. \(N_p\):表示正候选点数量,正候选点是位于前景实例中的候选点;

回归损失

回归损失包含 中心点距离损失(\(L_{dist}\))、候选框大小损失(\(L_{size}\))、角度损失(\(L_{angle}\))和角点位置损失(\(L_{corner}\))四部分。

smooth_L1

中心点距离损失(\(L_{dist}\))和候选框大小损失(\(L_{size}\))采用smooth_L1损失 \[ smooth_{L1}=\begin{cases}0.5x^2 & \text{if} \lvert x \rvert < 1\\ \lvert x \rvert - 0.5 &\text{otherwise} \end{cases} \]

基于bin

角度损失(\(L_{angle}\))采用bin + res 策略,损失表示如下: \[L_{angle}=L_c(d^a_c,t^a_{c})+ D(d_r^a,t_r^a)\]

角点损失

计算预测框的8个角点与真实角点之间的距离损失。 \[L_{corner}=\sum_{m=1}^{8}\|P_m-G_m\|\]

偏移损失

偏移损失应用在候选点生成(CG层中)的监督任务中,作者利用了smooth-l1损失函数来计算,用于度量预测的偏移值与候选点到真实中心点实际距离的差异。

实验数据

性能数据

性能

精度数据

精度
  • L:表示激光雷达
  • R:表示RGB图像

参考

  1. 3DSSD: Point-based 3D Single Stage Object Detector