摘要
三维物体通常表示为点云中的三维框。 这种表示模拟了经过充分研究的基于图像的2D边界框检测,但也带来了额外的挑战。 3D世界中的目标不遵循任何特定的方向,基于框的检测器很难枚举所有方向或将轴对齐的边界框匹配到旋转的目标。 在本文中,我们提出用点来表示、检测和跟踪三维物体。 我们的框架CenterPoint,首先使用关键点检测器检测目标的中心,然后回归到其他属性,包括3D尺寸、3D方向和速度。 在第二阶段,它使用目标上的额外点特征来改进这些估计。 在CenterPoint中,三维目标跟踪简化为贪婪最近点匹配。 由此产生的检测和跟踪算法简单、高效、有效。 CenterPoint在nuScenes基准测试中实现了最先进的3D检测和跟踪性能,单个模型的NDS和AMOTA分别为65.5和63.8。 在Waymo开放数据集上,Center-Point的表现远远超过了之前所有的单一模型方法,在所有仅使用激光雷达的提交中排名第一。
强大的3D感知能力是许多先进驾驶系统的核心组成部分。 与已经深入研究的二维检测问题相比,点云的三维检测提出了一系列有趣的挑战:首先,点云是稀疏的,大多数三维物体都没有测量。 其次,结果输出是一个三维的框,它通常没有与任何全局坐标系很好地对齐。 第三,3D物体有各种大小、形状和高宽比,例如,在交通领域,自行车接近平面,公共汽车和豪华轿车被拉长,行人很高。 2D和3D检测之间的这些显著差异使得这两个领域之间的idea转移更加困难。 轴向2D方框是自由形状3D目标的糟糕代理。 一种解决方案可能是为每个目标方向分类不同的模板(锚),但这不必要地增加了计算负担,并可能引入大量潜在的假正样本检测。 我们认为,连接2D和3D领域的主要潜在挑战在于目标的这种表示。
在本文中,我们展示了如何将物体表示为点(图1),极大地简化了3D识别。 我们的两阶段3D检测器CenterPoint使用关键点检测器来找到物体的中心和它们的属性,第二阶段改进了所有的估计。 具体来说,CenterPoint使用标准的基于Lidar的骨干网,即VoxelNet或PointPillars,来构建输入点云的表示。 然后,它将这种表示平铺到一个高架地图视图中,并使用基于标准图像的关键点检测器来寻找目标中心。 对于每个检测到的中心,它会从中心位置的点特征退化到所有其他目标属性,如3D尺寸、方向和速度。 此外,我们使用一个轻量级的第二阶段来细化目标位置。 第二阶段提取被估计物体三维边界框中每个面的三维中心的点特征。 它恢复了由于步幅和有限的接收域而丢失的局部几何信息,并以较小的成本带来了良好的性能提升。
基于中心的表示法有几个关键的优点:首先,与包围框不同,点没有内在的方向。 这大大减少了目标检测器的搜索空间,并允许主干学习目标的旋转不变性和等价性。 其次,基于中心的表示简化了下游任务,如跟踪。 如果物体是点,轨迹就是空间和时间中的路径。 中心点预测目标在连续帧和链接目标之间的相对偏移(速度)。 第三,基于点的特征提取使我们能够设计一个有效的两阶段细化模块,其速度远快于以往的方法。
我们在两个流行的大数据集上测试我们的模型:Waymo Open和nuScenes。 我们发现,在不同的主干下,从盒子表示到基于中心表示的简单切换可以增加3-4个mAP。 两阶段细化进一步带来额外的2 mAP提升,计算开销很小(< 10%)。 我们最好的单一模型在Waymo上实现了71.8和66.4 level 2 mAPH的车辆和行人检测,在nuScenes上实现了58.0 mAP和65.5 NDS,优于所有已发布的方法。 值得注意的是,在NeurIPS 2020 nuScenes 3D检测挑战赛中,前4名获奖作品中有3个以CenterPoint为基础。 对于3D跟踪,在nuScenes上我们的模型执行63.8 AMOTA优于之前的先进的8.8 AMOTA。 在Waymo 3D跟踪基准上,我们的模型对车辆和行人的跟踪分别达到59.4和56.6 level 2 MOTA,比以前的方法高出50%。 我们的端到端3D检测和跟踪系统几乎是实时运行的,在Waymo上是11 FPS,在nuScenes上是16 FPS。
2、相关工作
二维目标检测可以从图像输入预测轴链边界框。 RCNN家族找到一个类别不可知论的边界框候选人,然后对其进行分类和改进。 YOLO、SSD和RetinaNet直接找到一个类别特定的候选框,避免了后续的分类和细化。 基于中心的检测器,如CenterNet或CenterTrack,直接检测隐式的目标中心点,而不需要候选框。 许多三维检测器都是从这些二维检测器演化而来的。 我们证明基于中心的表示是3D应用的理想选择。
三维目标检测的目标是预测三维旋转的包围框。 它们不同于输入编码器上的2D检测器。 Vote3Deep利用以特征为中心的投票有效地处理等距3D体素上的稀疏3D点云。 VoxelNet使用每个体素内部的PointNet[38]生成统一的特征表示,使用3D稀疏卷积和2D卷积的头部生成检测。 第二[54]简化了VoxelNet,加快了稀疏的3D卷积。 PIXOR将所有点投影到带有3D占用和点强度信息的2D特征图上,以消除昂贵的3D卷积。 PointPillars用支柱表示取代了所有的体素计算,每个地图位置都有一个细长的体素,提高了骨干效率。 MVF和Pillar-od结合多种视图特征来学习更有效的支柱表示。 我们的贡献集中在输出表示,并与任何3D编码器兼容,并可以改进它们。
VoteNet通过使用点特征抽样和分组的投票聚类来检测目标。 相反,我们直接通过中心点的特征回归到3D边界框,而不需要投票。 Wong等人和Chen等人在目标中心区域使用了类似的多点表示(即点锚),并回归到其他属性。 我们对每个对象使用一个正单元,并使用关键点估计损失。
两阶段三维目标检测。 最近的研究考虑直接将RCNN风格的2D检测器应用于3D领域。 他们中的大多数应用RoIPool或RoIAlign在3D空间中聚合特定于ROI的特征,使用基于PointNet的点或体素特征提取器。 这些方法从3D激光雷达测量中提取区域特征(点和体素),由于大量的点,导致运行时间令人望而却步。 相反,我们从中间特征图中提取5个表面中心点的稀疏特征。 这使我们的第二阶段非常有效,并保持有效。
3D目标的跟踪。 许多2D跟踪算法容易跟踪3D目标。 然而,基于3D卡尔曼滤波器的专用3D跟踪器仍然有边缘,因为它们更好地利用了场景中的三维运动。 在这里,我们采用了CenterTrack的一种更简单的方法。 我们使用速度估计和基于点的检测来通过多帧跟踪目标的中心。 这种跟踪器比专用的3D跟踪器更快、更准确。
3、基础知识
2D CenterNet将目标检测改写为关键点估计。 它取一幅输入图像,对每K个类预测一个w×h热图hat{Y} in[0,1]^{w times h times K} 。 输出热图中的每个局部最大值(即大于其8个邻居的像素)对应于检测对象的中心。 为了检索一个2D框,CenterNet回归到所有类别之间共享的尺寸图 hat{S} in mathbb{R}^{w times h times 2} 。 对于每个检测目标,尺寸图将其宽度和高度存储在中心位置。 CenterNet架构使用了标准的全卷积图像主干,并在顶部添加了密集的预测头。 在训练过程中,CenterNet学习对每个类c_{i} in{1 ldots K} ,在每个标注的目标中心mathbf{q}_{i} 处预测带有渲染高斯核的热图,并回归到标注边界框中心的目标大小S。 为了弥补由主干网结构的跨步引入的量化误差,CenterNet也回归到一个局部偏移hat{O} 。
在测试时,检测器生成K热图和密集的类不可知回归图。 热图中的每个局部最大值(峰值)对应一个目标,置信度与峰值处的热图值成正比。 对于每一个被检测的目标,检测器从相应的峰值位置的回归图中获取所有的回归值。 根据应用程序域的不同,非最大抑制(NMS)可能是合理的。
3D目标检测 设mathcal{P}=left{(x, u, z, r)_{i}right} 为三维位置(x, y, z)和反射率r测量值的无序点云。 三维物体检测的目标是从该点云预测鸟瞰图中一组三维物体包围框mathcal{B}=left{b_{k}right} 。 每个包围框b=(u, v, d, w, l, h, alpha) 由相对于物体地面的中心位置(u, v, d) 、3D尺寸(w, l, h)
和以偏差alpha 表示的旋转组成。 在不失一般性的前提下,我们采用自中心坐标系统,传感器位置为(0,0,0),yaw= 0。
现代3D物体检测器使用3D编码器将点云量化到常规容器中。 然后,基于点的网络为一个容器内的所有点提取特征。 然后,3D编码器将这些特征集合到其主要特征表示中。 大部分的计算都发生在骨干网中,骨干网只对这些量化和池化的特征表示进行操作。 骨干网络的输出是一个映射视图参考框架中宽度为W,长度为L,通道数为F的映射视图特征映射mathbf{M} in mathbb{R}^{W times L times F} 。 宽度和高度都直接与个体体素条的分辨率和主干网络的步幅有关。 常见的骨干包括VoxelNet和PointPillars。
对于一个映射视图特征映射M,一个检测头(通常是一个或两级边界框检测器),然后从锚定在这个开销特征映射上的一些预定义边界框生成目标检测。 由于3D包围框具有不同的尺寸和方向,基于锚的3D检测器很难将轴向的2D框与3D目标相匹配。 此外,在训练过程中,以往基于锚的3D检测器依赖于2D Box IoU进行目标分配,这为不同类别或不同数据集选择正/负阈值带来了不必要的负担。 在下一节中,我们将展示如何基于点表示建立一个有原则的3D目标检测和跟踪模型。 我们引入了一种新的基于中心的检测头,但依赖于现有的3D骨干(VoxelNet或PointPillars)。
4、CenterPoint
图2显示了CenterPoint模型的总体框架。 设mathbf{M} in mathbb{R}^{W times H times F} 为3D主干的输出。 CenterPoint的第一阶段预测特定类别的热图、目标大小、亚体素位置细化、旋转和速度。 所有的输出都是密集的预测。
中心热图头
中心头部的目标是在任何被检测物体的中心位置产生一个热图峰值。 这个头产生一个K通道热图hat{Y} ,每个K类有一个通道。 在训练过程中,它的目标是由带注释的边界框的3D中心投影到地图视图中产生的2D高斯函数。 我们使用focal loss。 自上而下地图视图中的目标比图像中的目标更稀疏。 在地图视图中,距离是绝对的,而图像视图通过透视扭曲了距离。 考虑一个道路场景,在mapview中车辆所占的面积很小,但在图像视图中,一些大的物体可能会占据屏幕的大部分。 此外,透视投影中深度维数的压缩自然使图像中物体中心更接近彼此。 遵循CenterNet的标准监控会导致非常稀疏的监控信号,其中大多数位置都被认为是背景。 为了抵消这一点,我们增加了目标热图Y的正向监督,通过放大每个ground-truth目标中心渲染的高斯峰。 具体来说,我们设置高斯半径为sigma=max (f(w l), tau) ,其中tau=2 是允许的最小高斯半径,f是在CornerNet中定义的半径函数。 通过这种方式,CenterPoint保持了基于中心的目标分配的简单性; 该模型从附近的像素得到更密集的监督。
回归。 我们将一些目标属性存储在目标的中心特征处:亚体素位置的优化o in mathbb{R}^{2} ,地面高度h_{g} in mathbb{R} ,3D尺寸s in mathbb{R}^{3} ,偏转角度(sin (alpha), cos (alpha)) in[-1,1]^{2} 。 亚体素定位的细化减少了由于体素化和主干网络的步幅而产生的量化误差。 高度高于地面的h_{g}有助于在3D中定位物体,并添加被地图视图投影删除的缺失的海拔信息。 方位预测采用偏航角的正弦和余弦作为连续回归目标。 结合框大小,这些回归头提供了三维包围盒的完整状态信息。 每个输出使用它自己的头。 我们在ground-truth中心位置使用L1损失来训练所有输出。 我们回归到对数大小,以更好地处理各种形状的框。 在推理时,我们通过索引到每个目标的峰值位置的稠密回归头输出提取所有属性。
速度头和跟踪
为了通过时间跟踪目标,我们学习预测每个检测目标的二维速度估计mathbf{v} in mathbb{R}^{2} 作为额外的回归输出。 速度估计需要时间点云序列[6]。 在我们的实现中,我们将以前帧中的点转换并合并到当前参考帧中,并通过时间差(速度)来预测当前帧和过去帧之间物体位置的差异。 与其他回归目标一样,速度估计也利用地面真实目标在当前时间步长的位置上的L1损失进行监督。
在推断时,我们使用这个偏移量以一种贪婪的方式将当前的检测与过去的检测关联起来。 具体来说,我们利用负速度估计将当前帧中的目标中心投影回上一帧,然后通过最近距离匹配将它们与被跟踪的目标进行匹配。 按照SORT,在删除它们之前,我们保持不匹配的跟踪到T = 3帧。 我们用最后已知的速度估计更新每个不匹配的轨迹。 详细跟踪算法图见补充。
CenterPoint将所有热图和回归损失合并到一个共同的目标中,并联合优化它们。 它简化并改进了以前基于锚的3D检测器(见实验)。 然而,当前所有目标属性都是从目标的中心特征推断出来的,而中心特征可能不包含足够的信息来进行精确的对象定位。 例如,在自动驾驶中,传感器往往只看到物体的侧面,而不是中心。 接下来,我们通过使用一个轻量级点特征提取器的第二个细化阶段来改进CenterPoint。
4.1、两阶段CenterPoint
我们使用CenterPoint作为第一阶段。 第二阶段从骨干网的输出中提取额外的点特征。 我们从预测边界框的每个面的三维中心提取一个点特征。 注意,边界框的中心,顶部和底部的中心都投射到地图视图中的同一个点上。 因此,我们只考虑四个向外的框面和预测的目标中心。 对于每个点,我们使用双线性插值从主映射视图输出m中提取一个特征。接下来,我们将提取的点特征连接起来,并将它们通过一个MLP传递。 第二阶段在一级CenterPoint的预测结果之上预测一个类不可知的置信度得分和框的细化。
对于类不可知的置信评分预测,我们遵循,并使用一个得分目标,我引导着框的3D IoU与相应的地面真相边界框:I=min left(1, max left(0,2 times I o U_{t}-0.5right)right)
I o U_{t} 是在第t个提议框和地面真相之间的IoU。 我们使用二元交叉熵损失进行训练:
left.L_{text {score }}=-I_{t} log left(hat{I}_{t}right)-left(1-I_{t}right) log left(1_{text {sō̄ }} hat{L}_{text {th }}right)_{text {ndefing }}right)
hat{I}_{t}是预测的自信分数。 在推理,我们直接使用类从单程中心预测,计算最终的信心得分的几何平均两个分数hat{Q}_{t}=sqrt{hat{Y}_{t} * hat{I}_{t}}
,其中hat{Q}_{t} 是最后的预测目标的置信度和hat{Y}_{t}=max _{0<k leq K} hat{Y}_{p, k} 和hat{I}_{t} ,分别是第一阶段和第二阶段目标t的置信度。
4.2、结构
所有第一级输出共享一个前3 × 3卷积层、批处理归一化和ReLU。 然后,每个输出使用自己的两个由批处理规范和ReLU分隔的3 × 3卷积分支。 我们的第二阶段使用一个共享的两层MLP,带有批规范、ReLU和Dropout, drop率为0.3,然后是单独的三层MLP,用于置信度预测和框回归。