Bootstrap

端到端3D目标检测跟踪!Sparse4D论文精读

论文地址:Sparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion

源代码:Sparse4D

摘要

        最近,基于鸟瞰图(BEV)的方法在多视图3D检测任务中取得了巨大进展。与基于BEV的方法相比,基于稀疏的方法在性能上落后,但仍具有许多不可忽视的优点。为了进一步推动稀疏3D检测,本研究引入了一种新方法,名为Sparse4D,它通过对空间-时间特征进行稀疏采样和融合,对锚框进行迭代细化。(1) 稀疏4D采样:对于每个3D锚点,我们分配多个4D关键点,然后将它们投影到多视图/尺度/时间戳图像特征上以采样相应的特征;(2) 层次特征融合:我们层次化地融合不同视图/尺度、不同时间戳和不同关键点的采样特征,以生成高质量的实例特征。这样,Sparse4D可以高效且有效地实现3D检测,且不依赖于密集视图转换或全局注意力,更适合边缘设备部署。此外,我们引入了一个实例级深度重估模块,以减轻3D到2D投影中的不适定问题。在实验中,我们的方法在nuScenes数据集的检测任务上超越了所有基于稀疏的方法和大多数基于BEV的方法。

图 1   Sparse4D 概览。对于每个候选锚点实例,我们通过稀疏采样多个时间戳/视图/尺度特征的多个关键点,然后以层次化的方式融合这些特征作为实例特征,以实现精确的锚点细化。

1. 导言

        多视图视觉3D感知在自动驾驶系统中起着至关重要的作用,尤其是在低成本部署方面。与激光雷达(Lidar)模式相比,摄像头可以为长距离检测和视觉唯一元素识别提供有价值的视觉线索。然而,由于没有明确深度线索,从2D图像中进行3D感知是一个不适定问题,这导致了如何正确融合多摄像头图像以解决3D感知任务(如3D检测)的长期挑战。最近的方法主要分为两类:基于BEV的方法和基于稀疏的方法。

        基于BEV的方法通过将多视图图像特征转换到统一的BEV空间,并实现出色的性能提升。然而,除了BEV方式的优势外,仍存在一些不可避免的缺点:(1) 图像到BEV视角转换需要密集的特征采样或重新排列,这对低成本边缘设备部署来说复杂且计算成本高昂;(2) 最大感知范围受BEV特征图大小的限制,使其在感知范围、效率和精度之间难以权衡;(3) 高度维度在BEV特征中被压缩,失去了纹理线索。因此,BEV特征不适合某些感知任务,如标志检测。

        与基于BEV的方法不同,基于稀疏的算法不需要密集的视角转换模块,而是直接对3D锚点细化进行稀疏特征采样,从而可以减轻上述问题。其中,最具代表性的稀疏3D检测方法是DETR3D。然而,其模型容量有限,因为DETR3D只为每个锚点查询采样单一的3D参考点特征。最近,SRCN3D使用RoI-Align来采样多视图特征,但效率不够且无法精确对齐来自不同视图的特征点。与此同时,现有的稀疏3D检测方法没有利用丰富的时间上下文,并且与最先进的基于BEV的方法相比存在显著的性能差距。

        在这项工作中,我们致力于扩展基于稀疏的3D检测的极限。为了解决现有问题,我们引入了一种名为Sparse4D的新框架,该框架利用3D锚框区域内分布的多个关键点来采样特征。与单点方式[41]和RoI-Align方式[35]相比,我们的采样方式有两个主要优点:(1) 可以高效地提取每个锚框内的丰富和完整上下文;(2) 可以简单地扩展到时间维度作为4D关键点,然后有效地对齐时间信息。借助4D关键点,正如图1所示,Sparse4D首先对每个关键点执行多时间戳、多视图和多尺度的操作。然后,这些采样的特征通过一个层次融合模块来生成用于3D框细化的高质量实例特征。此外,为了减轻基于摄像头的3D检测中的不适定问题并提高感知性能,我们明确地添加了一个实例级深度重估模块,其中实例特征通过从预测的深度分布中采样的深度置信度进行重估。该模块以稀疏方式训练,无需额外的激光雷达点云监督。

        总结来说,我们的工作有四个主要贡献:

  • 据我们所知,我们提出的Sparse4D是第一个具有时间上下文融合的稀疏多视图3D检测算法,可以高效且有效地对齐空间和时间视觉线索以实现精确的3D检测。
  • 我们提出了一个可变形的4D聚合模块,可以灵活地完成多维(点、时间戳、视图和尺度)特征的采样和融合。
  • 我们引入了一个深度重估模块,以减轻基于图像的3D感知系统中的不适定问题。
  • 在具有挑战性的基准测试 - nuScenes数据集上,Sparse4D在3D检测任务上超越了所有现有的基于稀疏的算法和大多数基于BEV的算法,并且在跟踪任务上也表现良好。

2. 相关工作

2.1. 稀疏目标检测

        早期的目标检测方法[7, 22, 33, 37, 38]使用密集预测作为输出,然后使用非极大值抑制(NMS)处理这些密集预测。DETR[3]引入了一种新的检测范式,使用基于集合的损失和transformer直接预测稀疏检测结果。DETR在对象查询和全局图像上下文之间执行交叉注意力,导致计算成本高和收敛困难。由于使用了全局交叉注意力,DETR不能被视为纯粹的稀疏方法。Deformable DETR[51]修改了DETR,提出了基于参考点的局部交叉注意力,这加快了模型的收敛并减少了计算复杂性。Sparse R-CNN[36]提出了另一种基于区域提议的稀疏检测框架。网络结构极其简单有效,展示了稀疏检测的可行性和优越性。作为2D检测的扩展,许多3D检测方法最近更加关注这些稀疏范式,例如MoNoDETR[46]、DETR3D[41]、Sparse R-CNN3D[35]、SimMOD[48]等。

2.2. 单目3D目标检测

        单目3D检测算法以单个图像作为输入,输出对象的3D边界框。由于图像不包含深度信息,这个问题是不适定的,比2D检测更具挑战性。FCOS3D[39]和SMOKE[25]基于单阶段2D检测网络扩展而来,使用全卷积网络直接回归每个对象的深度。[31,40,43]将2D图像转换为3D伪点云信号,并使用基于激光雷达的检测网络完成3D检测。OFT[34]和CaDDN[32]利用视图转换模块将密集的2D图像特征转换为BEV空间,然后将BEV特征发送到检测器以完成3D目标检测。不同之处在于OFT使用3D到2D的逆投影关系完成特征空间转换,而CaDDN基于2D到3D的投影,更像是一种伪激光雷达方法。

2.3 多视图3D目标检测

        密集算法是多视图3D检测的主要研究方向,它们使用密集的特征向量进行视图转换、特征融合或框预测。目前,基于BEV的方法是密集算法的主体。BEVFormer[18]采用可变形注意力完成BEV特征生成和密集的空间-时间特征融合。BEVDet[11,12]使用lift-splat操作[30]实现视图转换。在BEVDet的基础上,BEVDepth[17]增加了显式深度监督,显著提高了检测的准确性。BEVStereo[15]和SOLOFusion[29]引入了时间立体技术到3D检测中,进一步提高了深度估计效果。PETR[23, 24]利用3D位置编码和全局交叉注意力进行特征融合,但全局交叉注意力计算成本高昂。像普通的DETR[3]一样,PETR不能被视为纯粹的稀疏方法。DETR3D[41]是稀疏方法的代表性工作,基于稀疏参考点执行特征采样和融合。Graph DETR3D[5]跟随DETR3D并引入了图网络,以实现更好的空间特征融合,特别是对于多视图重叠区域。

图 2. Sparse4D 的整体架构。输入多视图图像,我们首先使用图像特征编码器提取多时间戳/视图/尺度的特征图。解码器包含多个具有独立参数的细化模块,它们以图像特征图、实例特征和3D锚点为输入,并连续细化3D锚点以获得精确的检测结果。

3. 方法论

3.1. 总体框架

        如图 2 所示,Sparse4D 遵循编码器-解码器结构。图像编码器用于提取具有共享权重的图像特征,包括一个主干网络(例如,ResNet [10] 和 VoVNet [14])和一个颈部网络(例如,FPN [20])。给定时间 t 的 N 个视角输入图像,图像编码器提取多视角多尺度特征图作为 It = {It,n,s | 1 ≤ s ≤ S, 1 ≤ n ≤ N}。为了利用时间上下文,我们提取最近 T 帧的图像特征作为图像特征队列 I = {It}t0 t=ts, 其中 ts = t0 − (T − 1)。

        然后,解码器以迭代细化的方式预测检测结果,包含一系列细化模块和一个分类头,用于最终预测分类置信度。每个细化模块采用图像特征队列 I、3D 锚框 B ∈ RM×11 和相应的实例特征 F ∈ RM×C 作为输入,然后输出细化的 3D 框和更新的实例特征。这里,M 是锚点的数量,C 是特征通道数。锚点的格式为

所有 3D 锚点都设置在统一的 3D 坐标系中(例如,中央激光雷达坐标)。在每个细化模块中,我们首先采用自注意力实现实例之间的交互,前后添加锚点参数的嵌入。然后,我们进行可变形 4D 聚合(第 3.2 节)以融合多视图、多尺度、多时间戳和多关键点特征。此外,我们引入了一个深度重估模块(第 3.3 节),以减轻基于图像的 3D 检测中的不适定性问题。最后,使用一个回归头通过预测真实锚点和当前锚点之间的偏移来细化当前锚点。

3.2. 可变形 4D 聚合

        实例特征的质量对整个稀疏感知系统有重要影响。为了解决这个问题,如图 3 所示,我们引入了可变形 4D 聚合模块,通过稀疏特征采样和层次特征融合获得高质量的实例特征。

        4D 关键点生成。对于第 m 个锚实例,我们分配 K 个 4D 关键点作为 Pm ∈ RK×T ×3,由 KF 个固定关键点和 KL 个可学习关键点组成。如图 3(a) 所示,在当前时间戳 t0,我们首先将固定关键点 PF m,t0 直接放在锚框的立体中心和六个面中心。然后,与固定关键点不同,可学习关键点会根据不同的实例特征变化,这允许神经网络找到每个实例最具代表性的特征。给定带有锚框嵌入的实例特征 Fm,可学习关键点 PL m,t0 通过子网络 Φ 按照以下公式生成:

其中 Ryaw 表示偏航的旋转矩阵。时间特征对 3D 检测至关重要,可以提高深度估计的准确性。因此,在获得当前帧的 3D 关键点后,我们将其扩展到 4D,准备进行时间融合。对于过去的时间戳 t,我们首先建立一个恒定速度模型来移动当前帧 3D 坐标系中的每个 3D 关键点。

其中 dt 是相邻两帧之间的时间间隔。然后,我们使用自车运动信息将 P′ m,t 转换为过去 t 帧的坐标系。

其中 Rt0→t 和 Tt0→t 分别表示自车从当前帧 t0 到帧 t 的旋转矩阵和平移。通过这种方式,我们可以最终构建 4D 关键点作为 Pm = {Pm,t}t0 t=ts。

        稀疏采样。基于上述 4D 关键点 P 和图像特征图队列 F,可以高效地采样具有强大表征能力的稀疏特征。首先,通过变换矩阵T^{cam} 将 4D 关键点投影到特征图上。

然后,通过双线性插值对每个视图和每个时间戳进行多尺度特征采样:

这里的下标 m, k, t, n 和 s 分别表示锚点、关键点、时间戳、摄像头和特征图尺度的索引。到目前为止,我们已经获得了每个候选检测锚点的多关键点、时间戳、视图和尺度特征向量 fm ∈ RK×T ×N×S×C,其中 C 是特征通道的数量。

        层次融合。为了生成高质量的实例特征,我们以层次化的方式融合上述特征向量 fm。如图 3(c) 所示,对于每个关键点,我们首先使用预测的权重在不同的视图和尺度上聚合特征,然后使用序列线性层进行时间融合。最后,对于每个锚实例,我们融合多点特征以生成实例特征。具体来说,给定带有锚框嵌入的实例特征 Fm,我们首先通过线性层 Ψ 预测分组权重系数:

其中 G 是按通道分组的特征数量。有了这个,我们可以用不同的权重聚合不同组的通道,这类似于分组卷积。我们沿着尺度和视图维度对每个组的加权特征向量求和,然后连接各组以获得新特征 f ′ m,k,t。

上述的下标 i 是组的索引,[, ] 表示连接操作。接下来,通过连接操作和线性层 Ψtemp,特征 f ′ m,k,t 的时间戳维度将按顺序融合。

经过时间融合后的多点特征 f ′′ m,k 将被求和,以完成最终的特征聚合并获得更新的实例特征:

图 4. 深度重估模块的示意图。对于每个锚实例,我们沿着从摄像头到锚框中心的射线估计深度分布,然后在锚框的深度处采样深度置信度。采样得到的深度置信度用来重估实例特征。

3.3. 深度重估模块

        3D 到 2D 转换(公式 (5))存在一定的歧义性,即不同的 3D 点可能对应相同的 2D 坐标。对于不同的 3D 锚点,可能采样相同的特征(见图 4),这增加了神经网络拟合的难度。为了缓解这个问题,我们引入了一个显式的深度估计模块 Ψdepth,它由多个带有残差连接的 MLP(多层感知机)组成。对于每个聚合特征 F′ m,我们估计一个离散的深度分布,并使用 3D 锚框中心点的深度来采样相应的置信度 Cm,这将用于重估实例特征。

        这样,对于那些在深度方向上 3D 中心点远离真实值的实例,即使 2D 图像坐标非常接近真实值,相应的深度置信度趋于零。因此,重估后的实例特征 F ′′ m 也趋于零。引入显式的深度估计模块可以帮助视觉感知系统进一步提高感知精度。此外,深度估计模块可以作为独立部分进行设计和优化,以便于模型性能的提升。

3.4. 训练

        我们采样 T 帧的视频片段来端到端地训练检测器。连续帧之间的时间间隔在 {d_{t}, 2d_{t}} 中随机采样(d_{t}≈ 0.5)。按照 DETR3D [41] 的做法,使用匈牙利算法将每个真实值与一个预测值进行匹配。损失包括三部分:分类损失、边界框回归损失和深度:

其中,λ1、λ2 和 λ3 是用于平衡梯度的权重项。我们采用focal loss[21] 用于分类,L1 损失用于边界框回归,以及二元交叉熵损失用于深度估计。在深度重估模块中,我们直接使用标记的边界框中心的深度作为每个实例深度的监督真值。由于我们只估计每个实例的深度而不是密集深度,训练过程摆脱了对激光雷达数据的依赖。 

4. 实验

4.1. 数据集和指标

        我们在 nuScenes 基准上评估我们的方法。nuScenes 数据集[2] 包含 1000 个场景的数据,其中 700、150 和 150 个场景分别用于训练、验证和测试。每个场景是一个 20 秒的视频片段,以每秒 2 帧的速率。每个帧都有来自 6 个摄像头的图像数据,以及足够的标注,例如类别、3D 边界框和对象的 ID。对于 3D 检测任务,评估指标包括平均精度均值(mAP)、平移的平均误差(mATE)、尺度(mASE)、方向(mAOE)、速度(mAVE)、属性(mAAE)和 nuScenes 检测分数(NDS),其中 NDS 是其他指标的加权平均值。对于对象跟踪任务,平均多对象跟踪精度(AMOTA)、平均多对象跟踪精度(AMOTP)和召回率是三个主要的评估指标。详细信息请参考 [2,42]。

4.2. 实现细节

        3D 锚点的初始 {x, y, z} 参数是通过在训练集上执行 K-Means 聚类获得的,其他参数全部初始化为固定值 {1, 1, 1, 0, 1, 0, 0, 0}。实例特征采用随机初始化。默认情况下,3D 锚点和实例特征的数量 M 设置为 900,级联细化模块的数量为 6,来自颈部网络的特征图尺度 S 为 4,固定关键点的数量 KF 为 7,可学习关键点的数量 KL 为 6,输入图像大小为 640 × 1600,主干网络是 ResNet101。

        Sparse4D 采用 AdamW 优化器 [27] 进行训练。主干网络和其他参数的初始学习率分别为 2e-5 和 2e-4。衰减策略采用余弦退火 [26]。初始网络参数来自预训练的 FCOS3D [39]。在 nuScenes 测试集上的实验中,网络训练了 48 个周期,其余实验除非另有说明,否则只训练了 24 个周期。为了节省 GPU 内存,在训练阶段我们分离了所有历史帧的特征图以及历史帧中随机部分的融合特征 f′t。在所有实验中都没有使用 CBGS [50] 和测试时增强。

表 3. 不同方法的 FLOPs 和参数量比较,所有方法共享相同的主干网络,具有 854.3G FLOPs 和 23.3M 参数。* LS-DETR 这里代表 LiftSplat + Deformable DETR。

4.3. 消融研究和分析

        深度重估模块和可学习关键点。通过添加深度重估模块或可学习关键点,我们比较并分析了在 nuScenes 验证数据集上指标的前后变化,见表 1。可以看出,这两个模块的添加对模型性能有一定的提升效果,对 NDS 指标的影响类似,分别为 0.33% 和 0.35%。当这两个结构一起添加时,所有指标都会提高,其中 mAP 提高了 0.38%,NDS 提高了 0.79%。

        运动补偿。在生成 4D 关键点时,我们同时考虑了自车运动和被检测对象的运动。从表 2 可以看出,即使没有任何运动补偿,在添加时间信息后,模型性能仍然有所提高,其中 mAVE 提高了 20.8%,NDS 提高了 2.3%。然而,这个模型的整体感知性能仍然较低。在添加自车运动补偿后,模型效果显著提高,特别是 mAP 和 mAVE,分别提高了 4.2% 和 28.4%,综合指标 NDS 提高了 6.4%。在此基础上,考虑被检测对象的运动,检测精度没有提高,但速度估计的误差降低了 6.9%,从而 NDS 提高了约 0.7%。

        细化次数。迭代细化的次数对检测性能也有显著影响。在这方面,我们设计了两组实验进行分析。在第一组实验中,我们训练了一个包含 6 个细化模块的模型,并计算了每个细化模块输出的检测指标。从图 5(a) 可以看出,随着细化次数的增加,整体指标呈上升趋势,增长率逐渐减小。与第一个相比,第二个细化模块的输出精度显著提高,但第五个和第六个细化模块之间的检测效果没有太大差别。在第二组实验中,我们训练了多个模型,其细化模块的数量从 2 增加到 14。当模块数量为 10 时,NDS 最高,达到了 38.1%,如图 5(b) 所示。

        历史帧的数量。我们用不同数量的历史帧训练和推断 Sparse4D,并发现随着帧数的增加,模型性能持续增长(见图 5(c))。即使帧数增加到 10(相当于 5 秒的历史),与 8 帧相比仍有小幅提升。如果增加更多帧,Sparse4D 的性能可能仍有提升空间。然而,由于我们训练设备的内存限制(V100, 32G),无法尝试更多的帧。

        FLOPs 和参数。在这个实验中,输入图像大小设置为 900x1600,使用 ResNet101 作为主干网络,实验结果如表 3 所示。当 T = 1 时,我们模型的 FLOPs 是 1019.2G,参数量是 58.1M。与 DETR3D 相比,计算量和参数量仅分别增加了 2.3% 和 9.0%,而 mAP 和 NDS 分别提高了 3.6% 和 2.6%。与 Lift-splat 和 BEVFormer-S 相比,我们在算法指标、FLOPs 和参数量上都有一定的优势。添加 3 个历史帧后,Sparse4D 仅增加了 9.3% 的 FLOPs 和 1.4% 的参数量,并取得了非常明显的改进,mAP 提高了 5.4%,NDS 提高了 9.0%。

4.4. 主要结果

        在 nuScenes 验证集上的结果比较显示在表 4 中。在所有非时间模型中,Sparse4D 获得了最高的 mAP 和 NDS。与稀疏方法的基线 DETR3D 相比,我们在 mAP 和 NDS 上分别提高了 3.3% 和 1.7%。与基于 BEV 方法的基线 BEVFormer 相比,我们在 mAP 上领先 0.7%,在 NDS 上领先 0.3%。我们还与其它最先进的时间算法进行了比较,仍然获得了最好的 NDS 和 mAP。当 T = 4 时,Sparse4D 在 mAP 上比 BEVDepth 高出 2.4%,在 NDS 上高出 0.6%。当 T 从 4 增加到 9 时,Sparse4D 的 mAP 和 NDS 分别提高了 0.9% 和 0.6%。此外,增加 24 个周期的训练可以进一步提高 NDS 0.3%。我们在 nuScenes 测试集(在线排行榜)上将 Sparse4D 与其他最先进的算法进行了比较。如表 5 所示,使用 DD3D [28] 预训练的 VoVNet-99,Sparse4D 在 mAP 和 NDS 上分别达到了 51.1% 和 59.5%,在所有非 BEV 方法中领先,包括 PETRv2。与基线 DETR3D 相比,我们的方法取得了显著的改进。mAP 和 NDS 分别提高了 9.9% 和 11.6%,大大提高了稀疏方法的竞争力。此外,Sparse4D 也优于其它基于密集 BEV 方法,包括 UVTR [16]、BEVdet [11]、BEVFormer [18] 和 BEVDistill [1],特别是在 mAP 上,比 BEVDistill 高出 1.5%。

4.5. 扩展到 3D 对象跟踪

        基于检测-跟踪框架 [6],Sparse4D 可以很容易地扩展为跟踪器。我们使用最后一个细化模块输出的实例特征和边界框来提取身份特征,并使用一个轻量级子网络来估计历史轨迹和当前对象之间的相关矩阵。然后,使用匈牙利匹配算法获得历史轨迹和当前对象之间的匹配关系。如表 6 所示,在 nuScenes 测试集上,Sparse4D 获得了 0.519 的 AMOTA 和 1.078 的 AMOTP,这超过了大多数基于学习的跟踪方法。

5. 结论

        在这项工作中,我们提出了一种新的方法,Sparse4D,它通过对多时间戳和多视图的特征进行特征级融合,并通过迭代细化实现 3D 边界框回归。Sparse4D 能够提供卓越的感知性能,并且在 nuScenes 排行榜上超越了所有现有的稀疏算法和大多数基于 BEV 的算法。我们相信 Sparse4D 仍有很大的改进空间。例如,在深度重估模块中,可以添加多视图立体(MVS)[15, 45]技术以获得更准确的深度信息。在编码器中考虑相机参数也可以提高 3D 泛化能力[8, 17]。因此,我们希望 Sparse4D 能够成为稀疏 3D 检测的新基线。此外,Sparse4D 的框架也可以扩展到其他任务,如高清地图构建、占用估计、3D 重建等。

;