MIM4D: Masked Modeling with Multi-View Video for Autonomous Driving Representation Learning

论文链接:https://arxiv.org/pdf/2403.08760.pdf
代码链接:https://github.com/hustvl/MIM4D
发表单位:华中科技大学,地平线

1. 摘要(Abstract)

现有的预训练方法缺陷:

  • 依赖昂贵的3D标注监督学习,限制了可扩展性
  • 要么专注于单帧或单 目输入,忽略了时间信息。

为此,本文提出MIM4D,一种新的基于双掩码图像建模(MIM)的预训练范式:

  • MIM4D通过对掩码多视角视频输入的训 练,利用了空间和时间关系
  • 利用连续的场景流构建伪3d特征,并将其 投影到2D平面上进行监督。
  • 为解决密集3D监督的缺乏,MIM4D通过使 用3D体可微渲染来学习几何表示来重建像素。

nuScenes数据集上取得了最先进的性能。改进了多个下游任务上的现有方法,包括BEV分割(8.7% IoU)、3D目标 检测(3.5% mAP)和高清地图构建(1.4% mAP)

2. 相关工作(Related Work)

现有的3D驾驶场景预训练方法可以大致分为深度监督方法和基于Nerf的方法:

  • 1.基于深度估计的方法:利用图像-激光雷达对之间的几何关系获取图像的像素级深度图,并将其作为监督信号来预训练模型。
    • 然而,该方法仅从单幅图像中提取深度信息,忽略了多幅图像的几何信息。
  • 2.基于Nerf:受Nerf在新视图合成方面的成功启发,一种新的自监督学习方法。这些方法从多视图图像中构建了Nerf风格的3D体表示,并利用先进的体渲染技术来生成2D渲染,然后使用2D标签作为监督。
    • OccNerf:利用传统的占用网络从 多视图图像中获得体素的圳坄表示。然后,用Nerf将3D表示渲染回多视图图像。由冻结的SAM模型提供的2D分割标签。
      • 虽然该方法避免了标注3D标签的繁琐任务,但仍属于有监督的范式,其性能受限于SAM模型提供的标注质量。
    • UniPAD:将MAE与神经渲染网络相结合,它将掩码图像作为输入, 旨在通过神经渲染重建已渲染2D图像上的缺失像素

上述方法缺乏时间建模,对动态场景流和运动物体的精确感知至关重要。由于缺乏时间建模,此类方法不足以对端到端系统进行 预训练。

3. 文章主体

受MAE在圲坄图像任务中的成功和当前3D空间预训练方法的局限性的启发,我们渴望将MAE到3D视觉任务。本文提出一种新方法MIM4D,这是一种时间和空间域的双掩码图像建模(MIM)架构,它将时间建模与体绘制作为一种新的预训练范式进行协同。
我们方法的架构如图1所示。在空间域,以掩码后的多视点视频为输入,采用三维可微体绘制方法重建缺失的几何信息。在时域中,随机删除一帧的特征,从剩余的特征序列中重构圻通过结合时间建模,旨 在解决体绘制预训练方法在捕捉动态场景流方面的局限性,使它们相互补充和协同。

在这里插入图片描述

我们的贡献如下:

  • 将掩码图像建模(MIM)扩展到3D空间,利用连续的场景流来构建丢弃的体素特征,从而对时间信息进行建模,增强模型捕捉动态场景中
  • 采用3D体可微渲染,将体素特征投影到圲坄平面上进行监督,隐式地为模型提供连续的监督信号,以学习3D结构,避免了昂贵的3D标注。
  • 在nuScenes数据集上进行了广泛的实验。所提出的预训练方法优于之前的有监督和无监督表示学习方法,并在广泛的下游任务和各种骨干架构上表现良好。这为MIM4D的有效性和普遍性提供了令人信服的证据。

3.1. 体素编码器

考虑到多视图图像I,受MAE的启发,我们从这些输入中随机删除一些补丁,并将图像主干中的传统卷积替换为稀疏卷积,如SParK中的稀疏卷积,使其能够处理掩码图像,类似于transformer。通过这种方法,可以引导模型学习图像的全局结构,从而提高模型的性能和泛化能力。然后,采用lift-split-shoot(LSS)作为图像-视图变换模块,从多视图图像特征中构建三维体V

3.2. 体素解码器

在这里插入图片描述

通过体素编码器,我们获得了体素特征序列 V t − N , . . . , V t {V_{t−N} , ..., V_t} VtN,...,Vt。为了对时间依赖性 进行建模,随机丢弃一个体素特征 V t − m V_{t−m} Vtm ,并利用剩余的体素特征来重建它,类似于HoP。体素解码器的架构如上图所示。虽然基于查询的方法在时间建模中表现出了卓越的性能,但本文的重点偏离之前的工作,因为我们专注于提取3D体素特征,而不是2D BEV特征。因此,我们不能依靠2D查询来提取这样的3D特征。

高度通道变换

flashhocc中的通道到高度模块的启发,设计了一个高度通道转换模块。我们首先沿着通道和坚维度执行一个简单的重塑操作,将体素特 征 V ∈ R C × Z × H × W V ∈ R^{C×Z×H×W} VRC×Z×H×W 转换为BEV特征 B ∈ R C ′ × H × W B ∈ R^{C^′ ×H×W} BRC×H×W ,其中 C ′ = C × Z C^′ = C × Z C=C×Z。通过使用该模块,对高度维度进行临时压缩,使其适用于基于查询的时态建模方法。 过程如下所示场

B t − N , . . . , B t = H e i g h t 2 C h a n n e l ( V t − N , . . . , V t ) {B_{t−N} , ..., B_{t}} = Height2Channel({V_{t−N} , ..., V_{t}}) BtN,...,Bt=Height2Channel(VtN,...,Vt)

Temporal Transformer

先前的研究揭示了短期和长期时间融合之间的高度互补性。因此,在我们的工作中,我们独立地建模它们,以利用它们的互补性和协同作用。Temporal Transformer分为两个分支场短期和长期。最后, 使用MLP网络进行特征融合。

最后,我们应用反高度通道变换将重建的BEV特征 B ˆ t − m ∈ R C ′ × H × W Bˆ_{t−m} ∈R^{C′×H×W} BˆtmRC×H×W还原 为体素特征 V ˆ t − m ∈ R C × Z × H × W Vˆ_{t−m} ∈ R^{C×Z×H×W} VˆtmRC×Z×H×W

V ˆ t − m = C h a n n e l 2 H e i g h t ( B ˆ t − m ) Vˆ_{t−m} =Channel2Height(Bˆ_{t−m}) Vˆtm=Channel2Height(Bˆtm)

3.3. 神经渲染

为了在没有任何标签的情况下实现无监督学习,将体素特征 V ˆ t − m Vˆ_{t−m} Vˆtm投影回2D平 面。与之前的工作类似,我们采用可微体渲染 来合成颜色图和深度图,通过从Lidar点构建的原始RGB图像和深度图来监督它们。受神经隐式表面重建的最新进展的启发,本文将场景表示为隐式有符号距离场(SDF)。SDF将每个位置到最近表面的距离编码为一个标量值。与类似nerf的3D表示相比,SDF的使用允许基于零水平集隐式建模圳3D场景,使模型能够更有效地捕捉高质量、细粒度的几何信息。

3.4. 自监督损失

监督我们的模型的一个直接方法是计算渲染图像和训练图像之间的像素级坒均坂损 失。然而,我们的实验表明它并不有效。深度监督增强了神经辐射场的收敛 性,能够更快、更有效地学习精确的几何形状,特别是在稀疏视图下。与使 用密集监督来提高渲染图像质量的新视图合成任务不同,该任务是预训练主 干,而不是合成高质量的图像。因此,我们使用稀疏监督来提高训练效率。 在UniPAD之后,采用深度感知采样策略将lidar点云投影到多视图图像上, 选择深度低于一定阈值的像素集,并从该集中随机选择M像素作为监督。这种 采样策略不仅降低了计算复杂度,还允许我们的模型关注前景而不是无关的背景元素,如天空。
在这里插入图片描述
其中 C i C_i Ci D i D_i Di分别表示基于像素的真实颜色和深度

4. 实验效果

4.1. 定量结果

主干网络

在nuScenes数据集上进行了广泛的实验,以评估预训练方法MIM4D的有效性。首先,将该方法与已有的视觉表示学习方法进行比较:

  • 利用预训练模型作为骨干,观察到与在ImageNet上预训练的基线相比,mAP和NDS显著增加了9.2和6.6。
  • 与之前最先进的表示学习方法UniPAD相比,该模型获得了0.8 mAP的增益,提升了1.1NDS。

在这里插入图片描述

BEV分割

在广泛的下游任务上评估了预训练模型,实验结果表明,与基线相比,用所提出方法进行的骨干预训练在各种下游任务中表现出显著的改进
在这里插入图片描述

  • 对于BEV分割任务,当使用我们的预训练模型时,CVT实现了坉坯坕的显著增加8.7%。
3D目标检测
  • 对于3D目标检测,PETR + 2.6%NDS,BEVDet4D + 3.5% mAP,Sparse4Dv3,也构成了细粒度时间建模和应用深度估计作为一项额外的辅助任务,所提出方法在NDS指标上仍有0.6改进。

在这里插入图片描述

高精度图
  • 对于高清地图构建任务,该方法始终使MapTR的平均性能优于1.3% mAP。

在这里插入图片描述

4.2. 消融实验

在这里插入图片描述
在这里插入图片描述

### 解决 `mmcv` 安装过程中遇到的 `subprocess-exited-with-error` 错误 当安装 `mmcv` 或其他 Python 包时,如果遇到了 `subprocess-exited-with-error` 的错误信息,这通常意味着构建过程中的子进程未能正常完成。对于 `mmcv` 特定情况下的处理方法如下: #### 尝试更新并重新安装依赖工具链 确保所有开发工具和编译器是最新的版本可以减少很多兼容性和稳定性方面的问题。可以通过升级 pip 和 setuptools 来实现这一点。 ```bash pip install --upgrade pip setuptools wheel ``` #### 使用官方推荐的方式安装最新版 `mmcv` 考虑到不同版本间的差异可能导致不兼容问题,建议按照官方文档指引来操作,即通过 OpenMMLab 提供的方法来进行安装[^1]。 ```bash pip install -U openmim mim install mmcv-full ``` #### 如果上述命令仍然失败,则考虑使用 Conda 渠道进行安装 有时候 Anaconda/Miniconda 环境能够更好地管理软件包及其依赖关系,从而避免一些棘手的安装难题[^3]。 ```bash conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch conda install -c open-mmlab mmcv-full ``` #### 验证 CUDA 和 PyTorch 是否匹配 由于 `mmcv` 支持 GPU 加速功能,因此需要确认当前使用的 PyTorch 和 CUDA 版本相匹配。如果不一致可能会引发各种运行期异常或者编译阶段的错误[^4]。 #### 处理特定于系统的库缺失问题 某些情况下,本地环境中缺少必要的 C++ 编译器或其他支持库也会造成此类错误发生。针对 Linux 用户来说可能要预先安装 g++, 而 Windows 则需保证 Visual Studio Build Tools 已经正确设置好路径变量。 #### 检查网络连接状况 偶尔因为下载源不稳定或者其他原因造成的中途断连同样会引起类似的报错现象。此时不妨切换到更稳定的互联网环境下重试一次。 #### 查看详细的日志输出寻找线索 最后但并非最次,在终端里执行带有 `-v` 参数(verbose mode)的安装指令可以帮助获取更多关于哪里出了差错的信息,进而采取针对性措施加以修复。 ```bash pip install mmcv-full -v ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌青羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值