Center-based 3D Object Detection and Tracking 论文阅读笔记
by:瀚 [email protected]
2022.秋于国防科大
文章供个人总结归纳使用,但由于作者理解水平有限欢迎大家对其中存在的错误与不明的地方进行讨论。
文章提供了一种双阶段的 3D 目标检测算法,第一阶段利用 PointPillars 或 VoxelNet 作为骨干网络对点云进行编码与特征提取,之后生成伪图并采用基于 2D 的关键点提取算法获得目标的中心点,根据中心点的特征向量进行 3D 框、旋转角度速度等回归。在第二阶段同过获取目标其它 5 个面中心点特征向量进行回归的精细化。其拥有众多优点包括:点目标减少回归空间,并且不需要考虑旋转不变性和等效性、模型处理速度快、基于中心表示的算法为下游任务如跟踪的进行提供简化。
在 Waymo 和 nuScenes 数据集上均达到了 state-of-art 效果。
3D 目标检测是自动驾驶领域的一个重要任务,目前面临一些实际问题:
综上,作者决定开发 CenterPoint 算法。总的思想是首先使用一个关键点检测器进行目标中心的检测,根据检测到的中心点特征进行目标属性的预测,如 3D size、旋转角等。对于预测结果再提取 bbox 各个面的中心特征进行位置细化。作者提到这样的设计有许多好处,首先是点目标具有旋转不变性,便于网络进行目标旋转不变性的学习。其次是点目标可以简化例如跟踪、速度预测等下游任务。
总的模型设计如下:
更具体的流程图如下所示:
作者使用已有的 backbone 进行特征的提取,并设计了两个 head 分别进行目标中心点的学习与目标其他特征的学习。首先通过特征点提取获得目标的中心点,将中心点的特征从 feature map 中获取送入 head_2,获得 3D bbox。作者同时设计了一个二阶段的精细化网络来细化对象位置。第二阶段提取估计对象 3D 边界框每个面的 3D 中心处的点特征。它恢复了由于跨步和有限的感受野而丢失的局部几何信息,并以较小的成本带来了不错的性能提升。也就是下表中的 + Surface Center
部分。
由于作者的主要贡献在于 Head 的建立,所以下面主要介绍 CenterPoint 的 Head 部分设计,对于encoder、backbone、Neck 不再介绍(可参考 VoxelNet、PointPillars)。
VoxelNet:
- Yan Yan, Y uxing Mao, and Bo Li. Second: Sparsely embedded convolutional detection. Sensors, 2018.
- Yin Zhou and Oncel Tuzel. V oxelnet: End-to-end learning for point cloud based 3d object detection. CVPR, 2018.
- Benjin Zhu, Zhengkai Jiang, Xiangxin Zhou, Zeming Li, and Gang Y u. Class-balanced grouping and sampling for point cloud 3d object detection. arXiv:1908.09492, 2019.
PointPillars:
- Alex H. Lang, Sourabh V ora, Holger Caesar, Lubing Zhou, Jiong Yang, and Oscar Beijbom. Pointpillars: Fast encoders for object detection from point clouds. CVPR, 2019.
粗略的预测目标的 bbox。
在 2D 中心点检测中,将目标中心点的检测作为关键点检测问题。通过全卷积主干网和密集预测头(即对每一个像素都进行类别预测)构成。
在训练阶段,将输入图像送入网络后使用高斯核来学习生成 heatmap: Y ^ ∈ [ 0 , 1 ] w × h × K \hat{Y}\in[0,1]^{w\times h\times K} Y^∈[0,1]w×h×K,其中 K 为分类的类别。heatmap 中每个局部最大的点都将作为该类别下目标的中心点。同时学习回归尺寸信息并生成与类别无关的 size map: S ^ ∈ R w × h × 2 \hat{S}\in \R^{w\times h\times2} S^∈Rw×h×2,其中 2 代表 2D 尺寸信息。
在检测阶段,网络会生成 k 个 heatmap 以及与类别无关的回归图,通过检索每张 heapmap 的峰值来在回归图中找出对应的位置,并赋予其类别信息。
在训练过程中,Center Heatmap Head 的目标是通过将边界框真值的 3D 中心投影到地图视图中并生成的 2D 高斯分布。下来步骤和 2D 中心点检测类似。
注:我认为其所述的 center point 更多的像是 2D 的 center point,因为一直在 BEV 视角进行检测,所以利用 3D 的信息,但是目的是进行 BEV 视角的回归。
focal loss: L f l = − ( 1 − p t ) γ l o g ( p t ) L_{fl}=-(1-p_t)^\gamma log(p_t) Lfl=−(1−pt)γlog(pt)
在 center point 获取过后,在对应特征图的位置上找到其特征向量。使用 regression head 寻找如下特征:
地面高度 h g h_g hg 有助于在 3D 中定位对象,并添加由地图视图投影删除的缺失高程信息。方向预测使用偏航角的正弦和余弦作为连续回归目标。这些 heads 提供 3D 边界框的完整状态信息。每个输出都使用自己的 head。回归到对数大小,以更好地处理各种形状的 bbox。
ground truth 中心位置的 L 1 \mathcal{L_1} L1 损失: L 1 ( y , y ^ ) = 1 N ∑ i = 1 N ∣ y i − y i ^ ∣ \mathcal{L_1}(y,\hat{y})=\frac{1}{N}\sum^{N}_{i=1}|y_i-\hat{y_i}| L1(y,y^)=N1∑i=1N∣yi−yi^∣
通过 Stage-I 的中心点以及预测的 bbox,找到各个面的中心点,并从特征图中提取出其特征向量送进 MLP进行与类别无关的置信度得分预测和框细化。
使用 IoU 引导打分:
I = m i n ( 1 , m a x ( 0 , 2 × I o U t − 0.5 ) ) I=min(1,max(0,2\times IoU_t-0.5)) I=min(1,max(0,2×IoUt−0.5))
其中 I o U t IoU_t IoUt 是第 t 个提案框与真实值之间的 IoU。
使用二元交叉熵损失进行训练:
L s c o r e = − I t l o g ( I t ^ ) − ( 1 − I t ) l o g ( 1 − I t ^ ) L_{score}=-I_tlog(\hat{I_t})-(1-I_t)log(1-\hat{I_t}) Lscore=−Itlog(It^)−(1−It)log(1−It^)
其中 I t ^ \hat{I_t} It^ 是预测的置信度得分。