3DSSD学习笔记
介绍
这篇文章主要是对CVPR2020年发布的3D单阶段目标检测论文3DSSD: Point-based 3D Single Stage Object Detector的解读。
动机
作者提出以往基于点的三维目标检测方法时间和内存占有远远大于基于体素的方法,考虑到FP层占用了一部分时间,作者将针对FP层进行问题解决,同时引发了两个问题。
1.FP层的丢弃或保留
在以往基于点的检测方法通过SA模块仅仅只有采样的点才会有这些特征,没有被采样的点就没有特征,因此需要FP模块将这些特征传递给没有被采样到的点。作者给出以下表格:
可以看出FP层是占有相当一部分的时间。作者打算舍弃FP层。
但是如果直接丢弃FP层采用SA最后剩下的采样点进行预测的方法几乎是预测不出结构的。这是因为前人的采样是D-FPS,这会导致采样点中存在很多的背景点,不利于预测。
由图可以看出D-FPS在512个点时召回率仅为一半,因此直接丢弃FP层是不行的。
2.融合采样的提出
前人采用的D-FPS算法是在欧式空间中进行的最远点采样,并不会考虑到该点的任何语义特征,所以作者提出了针对语义特征的F-FPS。因为在语义信息的引导下,能够排除大量的背景点信息,保留更多的前景点信息。
但如果仅仅只使用F-FPS,会保留很多同一个物体的点,也会导致精度下降,因此作者同时考虑了欧式和特征空间的采样信息。也就是说保留的点会造成冗余从而影响其他物体的检测。
所以作者提出了融合采样。
3.F-FPS导致cls分数下降
由于背景点过少的时候对cls是不友好的,作者假设最终采样点个数为N_m个,则对其每一半做不同的操作。
方法论
framework
这是3DSSD的网络框架。
backbone
作者根据数据集的不同设计了不同的backbone。(左边是KITTI数据集,右边是nuScenes数据集)
CG layer
前人的研究工作在得到每个点的feature后,接上三层的SA layer,分别用于中心点选择,周围点特征提取以及生成语义信息。为了进一步降低计算成本,候选中心点的生成就直接在F-FPS采样后进行。
F-FPS采样的点由于比D-FPS的点更加可能是前景点,所以候选点仅仅只是在F-FPS的点上生成。CG层根据候选中心点领域选择从F-FPS和D-FPS中采样得到的代表点进行局部特征提取,采用MLP进行特征提取。
3D Center-ness Assignment Strategy
在二维上,label分配的方法有IOU阈值和mask。在3DLIDAR数据上,点的center-ness都非常小并且接近,不能得到好的预测,所以作者将F-FPS采样后再向中心靠近的点作为CG层的中心点。
Anchor-free Regression Head
假设采用anchor-based的方法
- 在3D检测网络中,都是按照预先设置的object级别的大小anchor,在全场景中每隔一段距离就设置一个anchor,同时每个anchor有几个不同的朝向。计算量大
采用Anchor-free
- 同样是7个量回归,通过点预测是没有预先设置朝向的,因此作者采用分类和回归的混合表达式
center-ness label
- 首先确定该点是否在一个object中
- 画出object的六面体,然后计算该点到其前后左右上下表面的距离
其中f,b,l,r,t,d分别代表前后左右上下。
loss
损失函数分为分类损失、回归损失和偏移损失
分类损失
N_c表示所有候选点的个数
回归损失
N_p表示为候选点中前景点的个数。
- 距离回归,中心点坐标的回归x,y,z采用smooth l1函数
- size回归,回归bbox的l,w,h采用smooth L1函数
- 角度回归,回归偏航角yaw,角度回归也分为两部分,第一部分是cls,第二部分是残差reg,如下:
- 角点损失,八个角点的损失函数,如下,其中P_m和G_m分别表示对应的预测的角点坐标
偏移损失
N_p^∗表示F-FPS采样到的postive的候选点。
在CG layer中被监督训练,是预测候选采样点到object中心点的残差,采用smooth L1损失函数。
实验
KITTI数据集
nuScenes数据集
nuScenes数据集是19年CVPR推出的新的自动驾驶数据集,有着更大的场景和更复杂的分类任务,每一帧有超过4w个点,其中有一些关键帧,前人的方法都是将关键帧和随后的0.5s的帧结合以致于超过40w个点来做目标检测。
消融实验
融合采样方法
CG层的偏移
point-based的方法的时间对比
总结
- 3D-SSD是一个综合利率和精度的one-satge的目标检测框架
- 融合采样模块
- anchor free Head
- 3D center-ness label