BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection 论文阅读

论文链接

BEVDepth: Acquisition of Reliable Depth for Multi-View 3D Object Detection

0. Abstract

  • 提出了一种新的 3D 物体检测器,具有值得信赖的深度估计,称为 BEVDepth,用于基于相机的鸟瞰 (BEV) 3D 物体检测
  • BEVDepth通过利用显式深度监控来解决深度估计不足的问题,还引入了一个具有相机意识的深度估计模块,以促进深度预测能力
  • 设计了一个新颖的深度细化模块,以对抗不准确特征反投影所带来的副作用

1. Intro

本文的问题:检测器中学到的深度质量是否真正满足精确的3D物体检测的要求 ?

  • LSS 机制中存在三个缺陷
    • 深度不准确:由于深度预测模块直接受最终检测损失监督,绝对深度的质量远未令人满意
    • 深度模块过拟合: 大多数像素无法预测出合理的深度,这意味着它们在学习阶段没有得到适当的训练
    • BEV语义不准确 :LSS 中学到的深度将图像特征投射到三维视体特征中,然后进一步汇总为BEV特征,由于深度不准确,只有部分特征被投射到正确的BEV位置,导致BEV语义不准确
  • 提出 BEVDepth
    • 一种新的多视角3D检测器,利用来自点云的深度监督来指导深度学习
    • 创新地提出将相机内参和外参编码到深度学习模块中,使得检测器对各种相机设置都具有稳健性
    • 进一步引入了深度细化模块来改进学习到的深度

Fig.1 深度估计结果在Lift-splat检测器和BEVDepth中得以实现。虚线框突出显示了Lift-splat检测器在通常情况下能够进行"相对"准确的深度预测的区域,通常是物体和地面之间的连接区域

基于视觉的三维物体检测

  • 基于视觉的3D检测的目标是预测物体的3D边界框
  • 从单眼图像中估计物体的深度本质上是不确定的。即使有多视角摄像机,估计没有重叠视图的区域的深度仍然具有挑战性
  • 相关工作:
    • 直接从2D图像特征预测3D边界框
    • 预测三维空间中的物体

基于LiDAR的3D物体检测

  • 由于深度估计的准确性,基于激光雷达的三维检测方法经常在自动驾驶感知任务中使用
    • VoxelNet 将点云进行体素化,将其从稀疏体素转换为密集体素,然后在密集空间中提出边界框以在卷积过程中辅助索引
    • PointPillars 使用柱状结构编码点云,而不是3D卷积过程,使其快速但仍保持良好性能
    • CenterPoint 提出了一种无锚点检测器,将CenterNet 扩展到3D空间

深度估计

  • 深度预测对于单目图像解释至关重要
    • MVSNet 首次将代价体引入深度估计领域
    • 使用多尺度融合生成深度预测,并引入自适应模块同时提高性能和减少内存消耗

3. 深入研究 LSS 中的深度预测

  • 首先回顾了基准3D检测器的整体结构。
  • 然后,对基准检测器进行了一项简单实验,以揭示观察到的先前现象的原因
  • 最后讨论了这个检测器存在的三个不足之处,并指出了一个潜在的解决方案

3.1 基本检测器的模型体系结构

  • 基于 Lift-splat 的检测器将 LSS 中的分割头替换为 CenterPoint 的3D检测头

    其架构由四个部分组成

    • 提取 2D 特征的图像编码器 : F 2 d = { F i 2 d ∈ R C F × H × W , i = 1 , 2 , . . . , N } F^{2d} = \{F^{2d}_i∈ \mathbb{R}^{C_F ×H×W} , i = 1, 2, ..., N\} F2d={Fi2d∈RCF×H×W,i=1,2,...,N} 来自 N 个视图的输入图像 I = { I i , i = 1 , 2 , . . . , N } I = \{I_i, i = 1, 2, ..., N\} I={Ii,i=1,2,...,N},其中 H H H、 W W W 和 C F C_F CF 分别代表特征的高度、宽度和通道数

    • 深度网络 :根据图像特征 F 2 d F^{2d} F2d 估计图像深度 D p r e d = { D i p r e d ∈ R C D × H × W , i = 1 , 2 , . . . , N } D^{pred} = \{D^{pred}_i∈ \mathbb{R}^{C_D×H×W} , i = 1, 2, ..., N\} Dpred={Dipred∈RCD×H×W,i=1,2,...,N},其中 C D C_D CD 代表深度箱的数量

    • 视图变换器 :使用方程式将 F 2 d F^{2d} F2d 投影到 3D 表示 F 3 d F^{3d} F3d 中,然后将它们汇集到一个集成的 BEV 表示 F b e v F^{bev} Fbev 中
      F i 3 d = F i 2 d ⊗ D i p r e d , F i 3 d ∈ R C F × C D × H × W (1) F^{3d}_i = F^{2d}_i ⊗ D^{pred}_i\ ,\ \ \ \ F^{3d}_i ∈ \mathbb{R}^{C_F ×C_D×H×W} \tag{1} Fi3d=Fi2d⊗Dipred , Fi3d∈RCF×CD×H×W(1)

    • 3D 检测头:预测类别、3D 框偏移和其他属性

3.2 Making Lift-Splat Work Is Easy

  • 学习深度 D p r e d D^{pred} Dpred 被认为是至关重要的,因为它用于为后续任务构建 BEV 表示

  • 通过将 D p r e d D^{pred} Dpred 替换为随机初始化的张量,并在训练和测试阶段冻结它,将 D p r e d D^{pred} Dpred 替换为随机化的软值后,LSS 的 mAP 仅下降了3.7%(从28.2%降至24.5%)

  • 证明只要正确位置上的深度有激活,检测头就可以工作。解释了 LSS 大多数区域学习到的深度较差,但检测mAP仍然合理

    表1 评估在 nuScenes 验证集上的深度预测。 "soft"和"hard"分别表示深度维度上的高斯随机化和 one-hot 随机化

3.3 Making Lift-Splat Work Well Is Hard

  • 揭示了 Lift-splat 现有工作机制中存在的三个不足之处,包括深度不准确、深度模块过拟合和BEV语义不精确
  • 为了更清晰地展示这种想法比较了两个基准线
    • 一个是基于天线射频技术的检测器,命名为基检测器(Base Detector)
    • 另一个利用额外的深度监督从点云数据中派生出来的检测器 D p r e d D^{pred} Dpred,将其称为增强检测器(Enhanced Detector)

深度不准确

  • 在基检测器中,深度模块的梯度来自检测损失,这是一种间接的方法。使用常用的深度估计度量评估了在 nuScenes val 上学习到的深度 D p r e d D^{pred} Dpred,包括尺度不变的对数误差(SILog)、平均绝对相对误差(Abs Rel)、平均平方相对误差(Sq Rel)和均方根误差(RMSE)

  • 评估了两个探测器在两种不同的协议下

    • 每个对象的所有像素

    • 每个对象的最佳预测像素

      表2 评估 nuScenes 验证集上的深度预测结果。DL 代表深度损失。所有前景点均用于评估。

深度模块过拟合

  • 基检测器只学习在部分区域预测深度。大多数像素没有经过训练来预测合理的深度,这引发了对深度模块的泛化能力的担忧。(即该检测器对于超参数非常敏感)

  • 选择"图像尺寸"作为变量,进行以下实验来研究模型的泛化能力

    • 首先使用输入尺寸为256×704来训练基础检测器和增强检测器

    • 然后分别使用192×640、256×704和320×864这几种尺寸进行测试

      Fig.2 检测器对图像大小的鲁棒性测试。我们使用256×704进行训练。在nuScenes上报告mAP

BEV语义不精确

  • 没有深度监督时,图像特征不能被正确地反投影。因此,池化操作只能聚合部分语义信息

    Fig.3 与基准检测器(左侧)相比,改进的检测器(右侧)在特征反投影过程中保留了更多的结构信息,因此能够提供精确的语义信息。每个点表示一个图像特征。

  • 假设贫乏的深度对于分类任务是有害的。然后,我们使用两个模型的分类热图,并将它们的TP /(TP + FN)作为比较的指标进行评估,其中TP表示将反投影头正确分类的锚点/特征,被分配为正样本,而FN表示相反的意思

    表3 对 nuScenes val 数据集进行分类。我们使用分类热图进行评估,th 表示热图的阈值。

  • 意识到在多视图3D检测器中赋予更好的深度的必要性,并提出了解决方案------BEVDepth

4. BEVDepth

BEVDepth是一种带有可靠深度的新型多视角3D检测器。它利用相机感知深度预测模块(DepthNet)上的显式深度监督,结合未投影视锥特征上的新型深度细化模块,实现这一目标。
Fig. 4 BEVDepth框架。图像主干从多视图图像中提取图像特征。深度网络以图像特征作为输入,生成上下文和深度,并得到最终的点特征。体素池将所有点特征统一到一个坐标系统中,并将它们池化到BEV特征图上。

明确的深度监督

  • 在基检测器中,深度模块的唯一监督来自于检测损失。然而,由于单目深度估计的困难,仅仅使用一个检测损失远远不足以对深度模块进行监督

  • **提出使用由点云数据 P 导出的地面实况 D g t D^{gt} Dgt 来监督中间深度预测 D p r e d D^{pred} Dpred **
    P i i m g ^ ( u d , v d , d ) = K i ( R i P + t i ) (2) P^{\hat{img}}_i (ud, vd, d) = K_i(R_iP + t_i) \tag{2} Piimg^(ud,vd,d)=Ki(RiP+ti)(2)

    进一步转换为2.5D图像坐标 P i i m g ( u , v , d ) P^{img}_i(u,v,d) Piimg(u,v,d),其中 u 和 v 表示像素坐标,为了对齐投影的点云和预测的深度之间的形状,对 P i i m g P^{img}_i Piimg 采用最小池化和独热编码,将这两个操作一起定义为 ϕ \phi ϕ
    D i g t = ϕ ( P i i m g ) (3) D^{gt}_i = \phi(P^{img}_i)\tag{3} Digt=ϕ(Piimg)(3)

相机感知的深度预测

  • 将相机内参作为DepthNet的输入之一

    • 首先将相机内参的维度通过MLP层进行缩放。
    • 然后,使用 Squeeze-and-Excitation 模块对图像特征 F i 2 d F^{2d}_i Fi2d 进行重新加权。
    • 最后,将相机外参与其内参连接起来,以帮助 DepthNet 了解 F 2 d F^{2d} F2d 在自身坐标系中的空间位置

    设 ψ \psi ψ 为原始 DepthNet,整体的相机感知深度预测可以写成
    D i p r e d = ψ ( S E ( F i 2 d ∣ M L P ( ξ ( R i ) ⊕ ξ ( t i ) ⊕ ξ ( K i ) ) ) ) (4) D^{pred}_i = ψ(SE(F^{2d}_i |MLP (ξ(R_i) ⊕ ξ(t_i) ⊕ ξ(K_i)))) \tag{4} Dipred=ψ(SE(Fi2d∣MLP(ξ(Ri)⊕ξ(ti)⊕ξ(Ki))))(4)

    其中,ξ 表示 Flatten 操作。在 DepthNet 内部建模相机参数,旨在提高中间深度的质量。由于 LSS 的分离特性的好处,相机感知的深度预测模块与检测头隔离,因此在这种情况下,回归目标不需要改变,从而增加了可扩展性

深度细化模块

  • 为了进一步提高深度质量,设计了一个新颖的深度细化模块
    • 首先将 F 3 d F^{3d} F3d 从 [ C F , C D , H , W ] [C_F,C_D,H,W] [CF,CD,H,W] 重塑为 [ C F × H , C D , W ] [C_F × H,C_D,W] [CF×H,CD,W],并在 C D × W C_D × W CD×W 平面上堆叠几个3×3的卷积层。最后将其输出重塑回来,并输入到后续的 Voxel/Pillar Pooling 操作中
  • 一方面,当深度预测置信度低时,深度细化模块可以沿深度轴聚合特征
  • 另一方面,当深度预测不准确时,深度细化模块可以在理论上将其细化到正确的位置,只要接受域足够大即可
  • 深度细化模块赋予了 View Transformer 阶段一个校正机制,使其能够修正那些摆放不当的特征

5. Experiment

5.1 实验设置

数据集和指标

  • 数据集: nuScenes
  • 指标:nuScenes检测分数(NDS)、平均精度(mAP)以及五个真阳性(TP)指标,包括平均平移误差(mATE)、平均尺度误差(mASE)、平均方向误差(mAOE)、平均速度误差(mAVE)和平均属性误差(mAAE)

实施细节

  • 使用 ResNet-50 作为图像主干,图像大小处理为256×704。采用图像数据增强,包括随机裁剪、随机缩放、随机翻转和随机旋转,还采用BEV数据增强,包括随机缩放、随机翻转和随机旋转
  • 使用 AdamW 作为优化器,学习率设置为 2e-4,批量大小设置为64
  • 对于消融研究,所有实验都在不使用 CBGS 策略的情况下训练了24个周期。与其他方法相比,BEVDepth 使用 CBGS 训练了20个周期。摄像头感知 DepthNet 位于特征层,步幅为16

5.2 消融实验

组件分析
表4 Depth Loss(深度丧失),Camera-awareness(相机感知)和Depth Refinement Module(深度细化模块)对nuScenes验证集进行消融研究。DL,CA,DR和MF分别表示Depth Loss(深度丧失),相机感知,深度细化模块和多帧

  • 基准 BEVDepth 获得28.2%的mAP和32.7%的 NDS,添加深度损失将 mAP 提高了2.2%
  • mATE 略微降低 0.21,因为原始的BEVDepth已经在检测损失的帮助下部分学习了深度预测。将相机参数建模到 DepthNet 中进一步减小了mATE 0.41,揭示了相机感知的重要性
  • 深度细化模块将mAP提高了0.8%

深度损失

  • 在深度估计领域中,BCE和L1Loss是两种常见的损失函数。在本部分中,我们剔除了在DepthNet中使用这两种不同损失函数的影响,发现不同的深度损失几乎不会影响最终的检测性能

    表5 不同深度损失的消融研究,包括BCELoss和L1Loss。结果在nuScenes val上报告

深度细化模块

  • 在效率方面,最初在其中采用了3×3卷积。在这里,消除了包括1×3、3×1和3×3在内的不同卷积核来研究其机制

  • 当在 C D × W C_D × W CD×W 维度上使用1×3卷积时,信息不会沿深度轴交换,并且检测性能几乎不受影响。当使用3×1卷积时,特征可以在深度轴上相互交互,对应地提高了 mAP 和 NDS。这类似于使用原始的 3×3 卷积,揭示了该模块的本质

    表6 深度细化模块中卷积核的消融研究。结果报告在nuScenes验证集上

5.3 基准测试结果

高效的体素池化

  • 现有的Lift-splat中的 Voxel Pooling 利用了涉及"排序"和"累积求和"操作的"累加技巧"。这两个操作在计算上效率低下
  • 提议利用GPU的强大并行性,通过为每个视锥特征分配一个CUDA线程,将特征添加到其对应的BEV网格中

多帧融合

  • 多帧融合有助于更好地检测物体,并赋予模型估计速度的能力
  • 将来自不同帧的视锥体特征的坐标与当前自我坐标系统对齐,以消除自我运动的影响,然后进行 Voxal 池化
  • 不同帧的池化的 BEV 特征直接连接并输入到后续任务

nuScenes 验证集
表7 nuScenes验证集的比较

nuScenes 测试集
表8 在 nuScenes 测试集上的比较。L表示激光雷达(LiDAR),C表示相机(camera)。BEVDepth 使用预训练的VovNet作为骨干网络。输入图像的分辨率设置为640×1600。BEVDepth † ^{†} † 使用 ConvNeXT 作为骨干网络。

6. 总结

  • 提出了一种新的网络架构,名为BEVDepth,用于准确预测3D物体检测的深度
  • 首先研究了现有3D物体检测器的工作机制,并揭示了它们中的不可靠深度
  • 在BEVDepth中引入了相机感知深度预测和深度细化模块,并使用显式深度监督,使其能够生成稳健的深度预测
  • BEVDepth获得了预测可信深度的能力,并获得了显着的改进
相关推荐
实验室里哈啤酒12 小时前
ResEmoteNet论文阅读与推理
论文阅读
LuH112414 小时前
【论文阅读笔记】Learning to sample
论文阅读·笔记·图形渲染·点云
开心星人18 小时前
【论文阅读】Unlearning Backdoor Attacks in Federated Learning
论文阅读
七夜星七夜月3 天前
时间序列预测论文阅读和相关代码库
论文阅读·python·深度学习
WenBoo-3 天前
HIPT论文阅读
论文阅读
chnyi6_ya3 天前
论文笔记:Buffer of Thoughts: Thought-Augmented Reasoning with Large Language Models
论文阅读·人工智能·语言模型
Jude_lennon4 天前
【论文笔记】结合:“integrate“ 和 “combine“等
论文阅读
LuH11244 天前
【论文阅读笔记】HunyuanVideo: A Systematic Framework For Large Video Generative Models
论文阅读·笔记
lalahappy4 天前
Swin transformer 论文阅读记录 & 代码分析
论文阅读·深度学习·transformer
开心星人4 天前
【论文阅读】Trigger Hunting with a Topological Prior for Trojan Detection
论文阅读