Sparse4D v2:Recurrent Temporal Fusion with Sparse Model
注:该博客用来记录自己读文献的过程,方便日后回顾。同时也将其分享给有需要的同学,仅用于学习交流
想看英文原文,点击下面超链接
原文链接
0 摘要
摘要: 该论文介绍了Sparse4Dv2,这是Sparse4D的一个改进版本,用于多视角时间感知任务。通过实现递归形式的多帧特征采样来改进时间融合模块。Sparse4Dv2通过有效地解耦图像特征和结构锚定特征,实现了高效的时间特征转换,从而仅通过稀疏特征的逐帧传输来实现时间融合。采用循环时间融合方法有两个主要好处。首先,它将时间融合的计算复杂度从O(T)降低到O(1),从而显著提高了推理速度和内存使用效率。其次,它使长期信息的融合成为可能,由于时间融合,性能得到更加显著的提升。我们提出的Sparse4Dv2方法进一步提高了稀疏感知算法的性能,并在nuScenes 3D检测基准测试中取得了最先进的结果。
1 引言
自动驾驶系统中的感知模块起着至关重要的作用。实现多传感器和时间特征的高效有效融合是提高感知性能的关键研究方向。虽然基于鸟瞰图(BEV)的算法已经引起了广泛关注并展示了高水平的感知性能,但我们认为它们可能不代表最优解决方案,原因如下:
- 将图像特征转换为BEV向量空间需要重新组织和重排密集特征,而没有引入额外的见解。然而,这种转换确实增加了模型的复杂性。
- 在感知范围、准确性和计算复杂度之间取得平衡对于实现最佳结果至关重要。不同的驾驶场景(如高速公路、城市或乡村地区)需要特定的参数设置,以确保感知能力和计算效率之间的有效权衡。
- 在端到端自动驾驶的背景下,由基于稀疏算法产生的实例特征具有更大的意义,因为它们可以更容易地与基于图形的模型(如transformers)集成。
鉴于上述原因,我们仍致力于开发基于稀疏算法来改善感知性能并为端到端自动驾驶做准备。我们选择Sparse4D作为进一步改进的基线算法。
Sparse4D的时间模块具有一个显著的限制,即需要在执行特征融合之前对多个历史数据帧进行采样,如图1(a)所示。这导致计算复杂度随历史帧数的增加呈线性增长,从而降低了推理和训练速度,增加了GPU内存使用(如表1所示),并且难以有效地整合长期时间特征。为了克服这个缺点,我们提出了一种替代方案,通过类似于基于查询的跟踪器和SteamPETR的实例特征来代替多帧采样方法,如图1(b)所示。
除了时间模块外,Sparse4Dv2还引入了以下改进:
- 通过将双线性网格采样和加权求和组合成一个单独的CUDA运算符来重构可变形聚合操作,从而显著减少了训练期间的内存占用,并在某种程度上提高了训练速度。
- 将摄像机参数编码与可变形聚合相结合,并在训练期间进行图像和输出坐标增强,以实现更高的感知指标和鲁棒性。
- 引入基于LiDAR点云的密集深度监督,以促进训练优化和提高检测精度。
我们在nuScenes 3D检测数据集上进行了广泛的实验,结果表明Sparse4Dv2表现出高度竞争力。它在感知性能方面优于现有的基于BEV的算法(如SOLOFusion [22]和VideoBEV [4]),并且在推理速度方面也具有优势。
2 Related Works
2.1 Camera-only 3D Detection
摄像头三维检测的关键是从二维图像中估计物体的深度或三维坐标。这个领域主要包括单目3D、立体3D和多视角3D三个研究方向。单目3D是一个不适定问题,依赖于神经网络强大的拟合能力,通过从图像中提取各种信息来回归相机坐标系中的深度。立体3D涉及两个或多个具有重叠角度的相机输入。它利用特征点匹配和基于方程的联合优化来计算目标点的深度。另外,也可以通过构建代价体来预测深度。多视角3D介于单目3D和立体3D之间,主要关注于利用多视角和时间特征的融合来提高深度估计的准确性,是自动驾驶和机器人领域非常感兴趣的研究方向。
2.2 Multi-view Feature Fusion
多视角特征融合可以显著提高不同视点下物体的感知能力,理论上在多个视角重叠的区域可以提高深度估计的准确性。LSS算法利用深度估计结果将图像特征投影到三维空间,并在BEV平面上进行密集的多视角特征融合。当深度估计的准确性很高时,基于LSS的算法可以实现更好的感知准确性。LSS的计算复杂度取决于输入特征图的分辨率和输出BEV特征的大小。事实上,BEVFormer也在BEV特征空间中执行特征融合,但它采用了3D到2D反向投影,并利用可变形注意力进行特征融合。由于BEVFormer需要输出密集的BEV特征,注意力中的查询计数可能很大(例如200×200),这限制了训练和推理效率。PETR系列算法放弃了BEV的概念,而是利用稀疏查询来执行感知任务。通过3D位置编码建立2D和3D信息之间的对应关系。PETR采用全局注意力,计算效率受到图像特征分辨率的显著影响,难以处理非常高分辨率的图像(例如4K以上的分辨率)。像DETR3D这样的稀疏算法利用稀疏查询和稀疏特征采样。头部部分的计算复杂度与图像分辨率无关,从理论上讲具有高计算效率。然而,与密集算法相比,性能上还存在一定差距。
2.3 Temporal Feature Fusion
时间特征融合可以极大地提高单帧模型的位置和速度估计性能,从而提高感知结果的稳定性。最初,时间融合仅使用两个帧进行。BEVDepth和BEVDet4D缓存上一帧的BEV特征,将其变形到当前时间步,并与当前帧的特征串联起来。在PETRv2中,前一帧和当前帧的特征都用作跨注意力的键。后来发现,长期时间特征融合可以进一步提高感知性能。Sparse4D使用4D关键点进行跨多帧特征采样,然后使用全连接网络进行融合。SOLOFusion在滑动窗口中缓存多个帧的特征,窗口长度长达16帧,实现了显著的感知性能提升。VideoBEV将SOLOFusion中的并行融合转换为循环形式,降低了融合的计算复杂度。StreamPETR也采用了循环形式,使用稀疏查询在时间维度上传播特征,并实现了最先进的性能。
3 方法
3.1总体框架
如图2所示,在Sparse4Dv2中,首先对多视图图像进行编码,以提取多视图多尺度特征图I = Is ∈ R N×C×Hs×Ws |1 ≤ s ≤ S,其中S是尺度数量,N是视图数量。然后将这些特征图输入到解码器中,解码器包括一个单帧层和五个多帧层。单帧层包括三个子模块:可变形聚合、前馈网络(FFN)和用于细化和分类的输出层。多帧层除了上述子模块外,还包括两个多头注意力层[24]。交叉注意力用于增强时间特征的融合,而自我注意力则促进实例之间的特征交互。首先,我们初始化了一组实例,其中包括它们的锚框和特征向量。我们使用单帧层对它们进行细化和打分,并选择最高的前景置信度实例作为输入到多帧层。多帧层的输入实例不仅来自单帧层,还来自先前帧的输出,例如历史帧。每个层中锚点的数量是一致的,无论是在多帧层还是单帧层中。多帧层的输出作为当前帧的检测结果,具有高置信度得分的部分实例被选为下一帧的输入。
3.2 Instance Temporal Propagation
在Sparse4D中,一个实例由三部分表示,分别是锚点、实例特征和锚点嵌入。锚点是结构化信息,表示实例的状态,并具有实际物理意义。实例特征是从图像中提取的高阶语义特征,主要来自图像编码器。而锚点嵌入是锚点的特征编码,使用小型锚点编码器Ψ将锚点的结构化信息映射到高维空间。这种设计完全解耦了实例的图像特征和结构化状态,因此我们可以更方便地添加先验知识。例如,对于实例的时间传播,我们只需要投影其锚点,并使用锚点编码器对投影后的锚点进行编码,实例特征可以保持不变,公式如方程式1所示。其中A表示锚点,E表示锚点嵌入,F表示实例特征,Ψ表示锚点编码器。Sparse4D可用于处理各种感知任务,只需为不同的感知任务设计不同的锚点和投影函数。特别地,对于3D检测,锚点被定义为3D边界框,投影函数如方程式2所示。其中dt是帧t和t-1之间的时间间隔,Rt-1→t和Tt-1→t分别表示自车从时间步t-1到t的旋转矩阵和平移矩阵。如果需要进行3D车道线检测,则可以将锚点定义为多边形线,并且投影函数将是每个3D点在多边形线上的投影。
3.3 Efficient Deformable Aggregation
变形聚合的设计旨在实现跨多个尺度和视图的特征融合。它涉及从多个特征图中进行特征采样和加权求和。其中一个最基本的实现如算法1所示。可以观察到,算法1需要多次加载和存储HBM。在训练期间需要存储大量的中间变量进行反向传播,尤其是当f的大小较大时。因此,它消耗了大量的GPU内存。此外,频繁的HBM访问也会降低推理速度。为了解决这个问题,我们将特征采样和尺度/视图维度加权封装在基本的变形聚合中作为CUDA操作,直接在单步中输出多点特征。我们将这种优化称为高效变形聚合(EDA),如图3所示。EDA展现出优秀的并行性能,允许在K和C维度上进行完全并行化。单个线程的计算复杂度仅为N×S。此外,对于多视图场景,一个点最多被投影到两个视图中,导致单个线程的计算复杂度仅为2S。这种设计利用了GPU和AI芯片的并行计算能力,显著提高了效率,并减少了内存消耗和推理时间。EDA可以作为一种通用操作,适用于各种需要多图像和多尺度融合的应用。
3.4 Camera Parameter Encoding
在Sparse4Dv1中,变形聚合中的权重是通过全连接层计算的。摄像机参数的信息在训练过程中逐渐嵌入到这个全连接层的参数中,这可以看作是一种隐式神经表示或对训练集的过度拟合。这种方法可能导致对摄像机参数的泛化性能较差。具体来说,当交换两个图像的输入顺序时,权重的顺序不会相应地改变,这可能会影响感知性能。此外,如果在训练期间对摄像机参数进行大规模的数据增强,这种参数化的隐式表示的收敛速度可能会受到显著影响。为了解决这个问题,我们直接将摄像机参数输入到网络中,并将从输出空间到图像坐标空间的转换矩阵映射为高维特征向量。然后将这个特征向量添加到实例特征中,并使用组合特征计算相应视图的权重。
3.5 Dense Depth Supervision
在我们的实验中,我们观察到基于稀疏表示的方法在早期训练阶段缺乏足够的收敛能力和速度。为了缓解这个问题,我们引入了带有点云作为监督的多尺度密集深度估计。在推理过程中,这个子网络将不会被激活。对于每个特征图的尺度,我们使用1×1卷积在预定义的等效焦距处输出深度值。然后将这些深度值乘以摄像机焦距与等效焦距之比。密集深度监督的损失函数使用基本的L1损失。在加入了密集深度监督之后,我们将从Sparse4Dv1中删除深度重新加权模块。
4 实验
4.1基准
为了验证Sparse4Dv2的有效性,我们使用了nuScenes基准测试。该数据集包括1000个场景,其中700个场景用于训练,150个用于验证,150个用于测试。每个场景包括一个20秒的视频片段,以2帧每秒(fps)的速度捕获,具有6个视点图像。除了10种不同对象类别的3D边界框标签外,数据集还提供了有关车辆运动状态和相机参数的信息。评估指标包括平均精度(mAP),平均平移误差(mATE),比例(mASE),方向(mAOE),速度(mAVE),属性(mAAE)和nuScenes检测分数(NDS),其中NDS是其他指标的加权平均值。请参阅[1]以获取详细信息。
由于我们的目标是提高基于稀疏算法的性能,我们的直接基准线是Sparse4Dv1。此外,为了展示稀疏算法的竞争力,我们还将将我们的方法与其他最先进的BEV-based算法进行比较。
4.2实现细节
我们使用ResNet50、ResNet101 [5]和VoVNet-99 [10]作为主干网络,以及FPN [14]作为neck架构。ResNet模型的预训练权重来自ImageNet-1K [9]和nuImages数据集,而VoVNet的预训练权重由DD3D [21]提供。所有实验都使用AdamW优化器[20]进行了100个epoch的训练,没有使用CBGS [33]。与大多数开源算法类似,我们采用了图像数据增强和激光雷达旋转增强技术。为了提高时间模型的训练效率,我们采用了SOLOFusion [22]启发的顺序迭代方法。我们使用了总共900个实例锚点,其中600个是历史输出的时间实例,剩余的300个来自单帧层。网络的其余超参数与Sparse4Dv1 [15]保持一致。
4.3消融实验和分析
在我们的消融实验中,我们始终使用ResNet50进行ImageNet-1K预训练。输入图像大小设置为256×704。
高效可变形聚合: 如表2所示,高效可变形聚合显著影响GPU内存使用和推理速度。在训练阶段,当批量大小设置为1时,GPU内存消耗从6328 MB降至3100 MB,减少了51%。最大可用批量大小从3增加到8。此外,完整实验的总训练时间从23.5小时减少到14.5小时。这些改进极大地降低了训练难度,提高了Sparse4D的效率。在推理阶段,EDA将模型的FPS从13.7提高到20.3,显著提高了约42%。此外,EDA在推理过程中减少了53%的GPU内存使用,降低了Sparse4D的成本和部署复杂性。
相机参数编码 明确地将相机参数纳入网络中。从指标上可以看出,删除此模块会导致mAP和mAOE分别降低2.0和4.8,如表3(Exp.3和Exp.5)所示。理论上,估计物体的方向不仅依赖于其图像特征,还需要了解物体在坐标系中的位置和相机内部和外部参数。因此,明确编码相机参数可以提高方向估计的准确性。
密集深度监督主要是为了使Sparse4D更易于训练。与Sparse4Dv1相比,我们增加了更多的数据增强,并将预训练参数从FCOS3d更改为ImageNet,使模型训练更具挑战性。从表3中的Exp.4和Exp.5可以看出,删除密集深度监督会导致性能指标(mAP和NDS分别下降8.5和10.4)。这种下降归因于训练过程中梯度崩溃的发生。
时间解码器由单帧层和五个多帧层组成。单帧层主要设计用于处理新生成对象的选择。如果解码器中的所有层都改为多帧层,则用于处理新对象的锚点数量将减少,同时保持预定的总锚点数量不变。这种新对象锚点数量的减少会导致检测结果下降,如表3中Exp.2和Exp.3所示(分别下降3.5和2.0)。如果删除多帧层,并且解码器中的所有层仅从当前帧接收输入实例,则会导致非时间融合模型。直接将非时间模型与时间模型(表3中的Exp.1和Exp.5)进行比较,可以直接展示时间融合的显著影响。它带来了显著的改进,mAP和NDS分别提高了9.8和12.5。
4.3主要结果
为了更好地控制变量,我们首先在nuScenes验证数据集上将我们的方法与其他方法进行比较,结果如表4所示。在ResNet50和低分辨率输入设置下,Sparse4Dv2实现了最佳的mAP和NDS,超过了SOTA基于BEV的算法VideoBEV 1.7 mAP和0.4 NDS,并且优于基于查询的SOTA算法StreamPETR 0.7 mAP和0.2 NDS。
在ResNet101和高分辨率输入设置下,Sparse4Dv2也实现了最高的性能指标。与基线Sparse4Dv1相比,修订版本将NDS提高了3.0倍,推理速度提高了2.9倍。与StreamPETR相比,Sparse4Dv2还表现出优势,NDS提高了0.2,推理速度提高了2 FPS。当我们引入额外的未来帧时,Sparse4Dv2仍然保持比StreamPETR更快的推理速度,并实现了1.6个更高的NDS分数。
需要注意的是,当低分辨率图像用作输入时,Sparse4Dv2的推理速度比StreamPETR显著降低(20.3 vs 26.7 FPS)。然而,当分辨率增加到512×1408时,Sparse4Dv2在速度方面超过StreamPETR(8.4 vs 6.4 FPS)。Sparse4Dv2头部的计算工作量不受输入分辨率的影响,使其更适合于长距离检测等高分辨率应用。这进一步证明了稀疏解码器的优势。
表5呈现了nuScenes测试数据集上的性能指标。与Sparse4Dv1相比,本文中的增强版本改善了所有指标,并取得了显著进步的4.3 NDS。在指标NDS方面,我们已经实现了SOTA性能,超过了SOLOFusion、BEVFormerv2、VideoBEV和StreamPETR。
5 结论和展望
这篇论文主要关注于增强多视角时间感知的基于稀疏算法的性能。在基于Sparse4D的基础上进行了一系列改进,包括:
1)结构:将时间模块从多帧采样方法转换为循环方式,并加入了相机参数编码。
2)训练优化:引入了密集深度监督作为辅助监督信号,以提高训练性能。
3)效率:提出了高效可变形聚合,以减少训练内存使用并提高训练和推理速度。在nuScenes 3D检测数据集上进行了实验。结果表明,我们改进的模型Sparse4Dv2不仅在推理速度上取得了显著的改进,而且在检测性能上也取得了实质性的进展,达到了SOTA水平。
进一步探索还需要验证Sparse4Dv2的泛化性、场景鲁棒性和远程检测性能。此外,稀疏基础方法在高清地图构建、拓扑、轨迹预测和端到端规划等各个领域仍具有显著的研究潜力。在未来的研究中,我们希望Sparse4Dv2可以作为一个新的基线,并在这些方向上进行进一步的研究。