ICCV2023:HoP 即插即用时间增强范式

本文提出HoP,一种利用历史时空信息改进3D对象检测的新方法。通过时间解码器生成伪BEV特征,结合目标解码器实现更准确的位置预测。在nuScenes数据集上,HoP显著提高了性能并易于集成现有框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文标题:Temporal Enhanced Training of Multi-view 3D Object Detector via Historical Object Prediction

论文链接:https://arxiv.org/abs/2304.00967

论文代码:https://github.com/Sense-X/HoP

摘要

作者观察到,使用历史时空信息可以学到更准确的BEV特征。基于此,本文作者提出了一种新的3D检测范式HoP,它可以在多视图3D检测中更有效地利用时间信息。

首先,作者精心设计了长短期时间解码器,它可以在不需要t-k时刻相机图像的情况下生成该时刻的伪BEV特征。短期时间解码器处理t-k时刻的相邻帧,提供目标的空间语义;长期时间解码器处理多个帧,提供对短期解码器空间定位能力的补充。

然后,利用生成的伪BEV特征,使用目标解码器预测目标。

HoP是只在训练阶段使用的基于时间的辅助任务,推理的时候不会引入额外的开销,它是对流行的时间建模方法的补充,且有显著的收益。

本文贡献:

  • 提出了一种新的时间增强训练方案HoP,可以学习更准确的BEV特征
  • 设计了一个由短期解码器和长期解码器组成的时间解码器,提供可靠的空间定位和准确的目标运动估计

架构

在这里插入图片描述

如图所示,HoP可以很容易的合并到很多多视图3D目标检测器中(BEVFormerBEVDet等)。将历史帧的外参转换成当前坐标系下,做时间对齐(同BEVDet)。

HoP

Pipeline

HoP由时间解码器 T \mathcal{T} T和目标解码器 D ^ \hat{\mathcal{D}} D^组成。给定N个历史帧和1个当前帧组成的BEV特征序列 { B t − N , . . . , B t } \{B_{t-N},...,B_t\} {BtN,...,Bt}和对应的ground truth { G t − N , . . . , G T } \{G_{t-N},...,G_T\} {GtN,...,GT}。丢弃t-k时刻的BEV特征,时间解码器 T \mathcal{T} T利用剩下的 B r e m = { B t − N , . . . , B t } − B t − k B^{rem} = \{B_{t-N},...,B_t\} - {B_{t-k}} Brem={BtN,...,Bt}Btk重建t-k时刻的BEV特征,目标解码器 D ^ \hat{\mathcal{D}} D^利用伪BEV特征生成预测结果。
P ^ t − k = D ^ ( T ( { B t − N , . . . , B t } − { B t − k } ) ) \hat{P}_{t-k} = \hat{\mathcal{D}}(\mathcal{T}(\{B_{t-N},...,B_t\} - \{B_{t-k}\})) P^tk=D^(T({BtN,...,Bt}{Btk}))

G t − k G_{t-k} Gtk转换到当前帧的坐标系中,记为 G ^ t − k \hat{G}_{t-k} G^tk。最终的训练目标是最小化 P ^ t − k \hat{P}_{t-k} P^tk G ^ t − k \hat{G}_{t-k} G^tk之间的差异。

时间解码器的输入由两部分组成:1)短期BEV特征 { B t − k − 1 , B t − k + 1 } \{B_{t-k-1}, B_{t-k+1}\} {Btk1,Btk+1}和2)长期BEV特征 { B t − N , . . . , B t } − { B t − k } \{B_{t-N},...,B_t\} - \{B_{t-k}\} {BtN,...,Bt}{Btk}

Short-term temporal decoder

由于相邻帧之间的高度时间相关性,短期时间解码器只需要操作相邻的BEV特征集 B a d j = { B t − k − 1 , B t − k + 1 } B^{adj} = \{B_{t-k-1}, B_{t-k+1}\} Badj={Btk1,Btk+1}就可以构建详细的空间表示。首先,定义网格状可学习短期BEV queries Q t − k s h o r t ∈ R H × W × C Q_{t-k}^{short} \in \mathbb{R}^{H\times W\times C} QtkshortRH×W×C,其中H,W代表BEV平面的空间形状。短期BEV queries通过短期时间注意力从 B a d j B^{adj} Badj中聚合空间信息并对短期运动建模。

B ^ t − k s h o r t = ∑ V ∈ B a d j D e f o r m A t t n ( Q t − k , p s h o r t , p , V ) \hat{B}_{t-k}^{short} = \sum_{V\in B^{adj}}DeformAttn(Q_{t-k,p}^{short}, p, V) B^tkshort=VBadjDeformAttn(Qtk,pshort,p,V)
然而,仅有相邻两帧不足以精确构建 B t − k B_{t-k} Btk和其他BEV特征相同对象间的时间关系。

Long-term temporal decoder

长期时间解码器处理 B r e m B^{rem} Brem集合,感知历史的运动线索,提升定位潜力,有助于更准确的定位。对于大多数具有BEV特征的3D对象检测器,高度信息被编码进BEV平面特征中。因此对 B r e m B^{rem} Brem集合使用通道缩减,对高度信息进行删除,从而获得更好的训练效率。

B ^ t − k l o n g = ∑ V ∈ B r e m D e f o r m A t t n ( Q t − k , p l o n g , p , V W r ) \hat{B}_{t-k}^{long} = \sum_{V\in B^{rem}}DeformAttn(Q_{t-k,p}^{long}, p, VW^r) B^tklong=VBremDeformAttn(Qtk,plong,p,VWr)
最后,将短期和长期的BEV特征连接起来,并通过3X3卷积进行特征融合。

Object decoder

目标解码器使用伪BEV特征生成3D预测 P ^ t − k \hat{P}_{t-k} P^tk,对齐 G t − k G_{t-k} Gtk P ^ t − k \hat{P}_{t-k} P^tk

为了清晰起见,将t帧的车坐标定义为e(t)。首先将以前帧的外参转换到当前帧的坐标系下,因此不同时刻的BEV特征和预测具有相同的e(t)。为了简化学习目标,需要将 G t − k G_{t-k} Gtk的坐标转换为e(t)。

G ^ t − k = T e ( t − k ) e ( t ) G t − k \hat{G}_{t-k} = T_{e(t-k)}^{e(t)}G_{t-k} G^tk=Te(tk)e(t)Gtk
T e ( t − k ) e ( t ) T_{e(t-k)}^{e(t)} Te(tk)e(t):e(t-k)转换到e(t)的转换矩阵

HQ Fusion

在这里插入图片描述

除了利用BEV特征级时间信息的HoP方法外,作者还研究了query级的时间建模,将历史的object queries融入的当前时刻的object queries,为当前时刻提供历史感知。

BEV特征序列 { B t − N , . . . , B t } \{B_{t-N},...,B_t\} {BtN,...,Bt}按时间顺序进行推理。对于时刻t-k,使用预定义的object queries来执行检测。
O ‾ t − k = D ( B t − k , O ) \overline{O}_{t-k} = \mathcal{D}(B_{t-k}, O) Otk=D(Btk,O)
D \mathcal{D} D:BEV解码器

每个object query关注BEV平面的特定区域,其输出的object queries包含这些区域丰富的语义信息。当对当前帧进行检测时,我们使用历史object queries代替预定义的queries,让学习过程更加容易。例如,如果一个object query在最后一帧中检测到一个静止对象,其历史object query可以帮助它快速定位该对象,而无需再次搜索其在BEV平面中的区域。另一方面,移动物体的历史信息也有助于定位和检测其速度。

为了推理t-k时刻的BEV特征 B t − k B_{t-k} Btk,首先获取历史object queries O t − k h i s O_{t-k}^{his} Otkhis。作者仅使用了最后一帧的历史object queries,因为作者认为更久远的历史与当前可见的对象几乎没有信息重叠。

O t − k h i s = M L P ( O ‾ t − k ) O_{t-k}^{his} = MLP(\overline{O}_{t-k}) Otkhis=MLP(Otk)
最后,与预定义的object queries合并。
O ‾ t − k = D ( B t − k , O + O t − k h i s ) \overline{O}_{t-k} = \mathcal{D}(B_{t-k}, O + O_{t-k}^{his}) Otk=D(Btk,O+Otkhis)

实验

在这里插入图片描述

  • HoP-BEVFormerBEVDepth(+GBGS)在NDS上增长2%,mAP增长3.6%
  • HoP-BEVFormer与其他的基于query的方法相比性能最好

在这里插入图片描述

  • HoP扩展性很强,可用于其他的模型。用于BEVDet4D-Depth,在测试集上获得NDS 68.5%,mAP 62.4%

在这里插入图片描述

  • BEVFormer-opt引入HoP,NDS+1.8%,mAP+1.4%
  • BEVDet4D-Depth引入HoP,NDS+1.6%,mAP+1.4%
  • BEVFormer-opt引入HQ Fusion,NDS+1.2%,mAP+1.1%
  • BEVFormer-opt引入HoP且不丢弃BEV编码器最后两层梯度的情况下,达到NDS 53.9%

在这里插入图片描述

  • Dropout设置为0,显著提高性能
  • Look forward twice是提高mAP的重要因素
  • Decoupled BEV encoder提升性能很高

在这里插入图片描述

  • 长短期时间解码器都可以提升性能,一起使用提升最大
  • BEV空间中3D目标显式监督对HoP很重要
  • k=1时,在准确性和训练成本之间取得了最好的平衡
  • HoP在训练过程中引入了额外的时间解码器和目标解码器,不可避免的增加了训练时间
  • 获得历史queries的三种方法都能提升性能,且相差不大

在这里插入图片描述

  • HoP成功的检测到了小物体或被遮挡的物体

在这里插入图片描述

  • 短期解码器可以检测到对象的尺寸,如高度和长度,但不能精确地定位(第一行图片)
  • 短期解码器由于详细的空间语义,有助于检测更多的前景对象(第二行图片)
  • 长期解码器能够精确定位位置,但难以检测物体的尺寸,如高度
  • 结合长短期解码器,效果达到最好

结论

本文作者提出了一种新的范式HoP,可用于多视图3D检测以更有效地利用时间信息。作为一种即插即用的方法,HoP可以很容易的集成到最先进的BEV检测框架中,包括BEVFormerBEVDet系列。

nuScenes数据集上的大量实验验证了HoP的有效性。

HoPnuScenes测试集上达到了68.5%的NDS和62.4%的mAP,显著领先于排行榜上所有的3D目标检测器。

补充

Multi-view 3D Object Detection

现在多视图3D目标检测方法主要分为两个分支:基于LSS的和基于query的方法。

基于LSS的代表性方法是BEVDetBEVDet首先明确的估计每个图像像素的深度,然后,根据深度将2D特征提升到3D体素上,然后将3D特征压扁成到BEV特征,然后用它进行目标检测。BEVDepth进一步改进了视图转换器模块。

基于query的方法通常使用可学习queries,通过注意力机制聚合2D图像特征。DETR3D利用object queries预测3D位置,并将它们投影回2D坐标,以获得相应的特征。Graph-DETR3DSparse4D分别通过可学习的3D图和稀疏4D采样增强它。PETR将3D位置编码进图片特征,因此可以直接查询全局2D特征。BEVFormer利用网格BEV queries通过可变性注意力与2D特征交互,在此基础上,BEVFormerv2引入了透视监督。此外,PolarFormerEgo3RT提出用极坐标建模BEV queries,以适应真实场景。

Temporal Modeling for Multi-view 3D Object Detection

BEVFormer提出时间自注意力机制,通过deformable attention以RNN方法动态融合历史BEV特征。BEVDet4D引入时间建模,将BEVDet提升到时空4D空间。PETRv2使用时间对齐扩展了PETR中的3D位置编码。BEVStereoSTS都利用时间视图,通过一种有效地时间立体方法构建多视图立体。SOLOFusion充分利用了长短期时间信息的协同作用。BEVFormerv2使用双向时间编码器来利用历史和未来的BEV特性。

e attention以RNN方法动态融合历史BEV特征。BEVDet4D引入时间建模,将BEVDet提升到时空4D空间。PETRv2使用时间对齐扩展了PETR中的3D位置编码。BEVStereoSTS都利用时间视图,通过一种有效地时间立体方法构建多视图立体。SOLOFusion充分利用了长短期时间信息的协同作用。BEVFormerv2使用双向时间编码器来利用历史和未来的BEV特性。

在这里插入图片描述

### BEVFormer 开源代码及相关实现 BEVFormer 是一种基于时空 Transformer 的模型,旨在从多相机图像中学习鸟瞰图(Bird's Eye View, BEV)表示。以下是关于 BEVFormer 的开源代码及其相关内容: #### 官方及社区支持的 BEVFormer 实现 目前,BEVFormer 已经有多个官方和非官方的实现版本可供参考。其中最常用的实现之一可以在以下 GitHub 仓库找到[^5]: ```plaintext https://github.com/fundamentalvision/BEVFormer ``` 此仓库提供了完整的 PyTorch 实现,并附带详细的文档说明如何训练和测试模型。它还包含了预训练权重以及数据集准备脚本。 #### 主要功能模块 BEVFormer 的核心在于其时空 Transformer 结构,能够有效融合来自不同时间步和视角的信息。具体来说,该模型的主要组成部分包括: 1. **空间特征提取**:利用 CNN 或其他 backbone 提取每张图片的空间特征。 2. **时间维度建模**:通过引入 temporal self-attention,在连续帧之间建立关联。 3. **视图变换**:将二维图像特征转换为三维 BEV 特征,以便更好地适应自动驾驶场景中的感知需求。 这些机制共同作用,使 BEVFormer 能够高效地处理由多摄像头捕获的数据流并生成高质量的鸟瞰图表示[^6]。 #### 示例代码片段 下面是一个简单的伪代码示例展示如何加载 BEVFormer 并执行推理操作: ```python import torch from bevformer.models import build_model # 初始化模型配置 config = { 'backbone': 'resnet50', 'num_cameras': 6, 'img_size': (256, 704), } model = build_model(config) # 加载预训练参数 checkpoint_path = './checkpoints/bevformer_pretrained.pth' state_dict = torch.load(checkpoint_path)['state_dict'] model.load_state_dict(state_dict) # 输入样本模拟 batch_images = torch.randn(1, 6, 3, 256, 704) # N,C,H,W per camera view with torch.no_grad(): output_bev = model(batch_images) print(output_bev.shape) # 输出形状应匹配预期大小 ``` 上述代码展示了如何构建一个基础版 BEVFormer 模型实例,并完成一次前向传播计算过程[^7]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值