BEVDepth

BEVDepth框架
摘要
  1. BEVDepth,一种新的多视图3D检测器,它利用来自点云的深度监督来指导深度学习。
  2. 创新地提出将相机的内在和外在特征编码到一个深度学习模块中,使检测器对各种相机设置具有鲁棒性。
  3. 引入深度细化模块对学习深度进行细化。
相关工作
  1. 基于视觉的3D目标检测
    • 直接从2D图像特征预测3D边界框
      • CenterNet (2019)可以用于3D检测,只需对检测头进行微小的更改。
      • M3D-RPN (2019)提出了深度感知卷积层来增强空间感知。
      • D4LCN (2020)采用深度图来指导动态核学习。
      • FCOS3D (2021)通过将3D目标转换为图像域,预测物体的2D和3D属性。
      • PGD (2022)提出了几何关系图,便于三维目标检测的深度估计。
      • DD3D (2021)证明深度预训练可以显著提高端到端3D检测。
    • 预测3D空间中的物体(将二维图像特征转换为三维空间)
      • LSS (2020)提出了一种视图变换方法,预测深度分布并将图像特征投影到鸟瞰视图(BEV)上。
      • BEVFormer (2022)通过局部关注和网格状BEV查询执行2D-to-3D转换。
      • DETR3D (2022)通过变形器和对象查询检测3D对象。
      • PETR (2022)通过引入3D位置感知表示进一步提高了性能。
  2. 基于激光雷达的3D目标检测
    • VoxelNet (2018)将点云体素化,将其从稀疏体素转换为密集体素,然后在密集空间中提出边界框,以帮助卷积期间的索引。
    • SECOND (2018)通过引入基于VoxelNet的更有效的结构和采样技术,提高了在KITTI数据集上的性能。稀疏卷积也用于SECOND以提高速度。
    • PointPillars (2019)使用柱子而不是3D卷积过程对点云进行编码,使其快速但保持良好的性能。
    • CenterPoint (2021)提出了一种无锚点检测器,将CenterNet (2019)扩展到3D空间,并在nuScenes数据集和Waymo开放数据集上实现高性能。
    • PointRCNN (2019)与上面讨论的基于网格的方法不同,它直接从点云创建建议。然后使用激光雷达分割来识别提议的前景点,并在第二阶段产生边界框。使用霍夫投票来收集点特征,然后从聚类中提出边界框。
    • PV-RCNN (2020)在保持效率的同时允许点特征的可调节接受域。
问题背景
  1. 当检测器在没有深度损失的情况下进行训练时(就像 Lift-splat 一样),它仅通过学习部分深度来检测物体。用一个随机初始化张量替换Lift-splat的 DpredD^{pred}Dpred ,并在训练和测试阶段冻结它。结果表示,在用随机软值代替 DpredD^{pred}Dpred 后,mAP只下降了3.7%。进一步将软随机深度替换为硬随机深度(每个位置一次热激活),mAP下降了6.9%。这说明,只要在正确位置的深度被激活,检测头就可以工作。
随机初始化深度维度矩阵效果对比
  1. Lift-splat检测器仅学习预测部分区域的深度。大多数像素都没有经过训练来预测合理的深度,可能导致其对图像大小、相机参数等超参数非常敏感,缺乏泛化能力。使用输入大小 256×704 训练Lift-splat检测器和改进的检测器,然后使用192×640、256×704和320×864尺寸进行测试。
泛化能力对比
  1. 在没有深度监督的情况下,图像特征无法正确投影。因此,池化操作仅聚合部分语义信息。增强型检测器在这种情况下表现更好。
深度信息对投影结果的影响
方法分析
1. 显示深度监督

Lift-splat中深度模块的唯一监督来自于检测损失,但是单独的检测损失远远不足以监督深度模块。因此,可以从点云数据中导出的真实 DgtD_{gt}Dgt 来监督中间深度预测 DpredD^{pred}Dpred。通过从点云数据 PPP 中提取真实深度信息 DgtD_{gt}Dgt,并将其投影到相机视图以生成2.5D图像坐标。具体步骤如下:

  • 坐标转换: 使用旋转矩阵 Ri∈R3×3R_i \in \mathbb{R}^{3 \times 3}RiR3×3 和平移向量 ti∈R3t_i \in \mathbb{R}^{3}tiR3 将LiDAR点云从LiDAR坐标系转换到第 iii 个相机坐标系:

Pcam,i=Ri⋅P+ti P_{\text{cam}, i} = R_i \cdot P + t_i Pcam,i=RiP+ti

  • 投影到图像平面: 使用相机的内参矩阵 Ki∈R3×3K_i \in \mathbb{R}^{3 \times 3}KiR3×3 将三维点投影到二维图像平面,同时保留深度信息,得到2.5D图像坐标 Pimg,i(u,v,d)P_{\text{img}, i}(u, v, d)Pimg,i(u,v,d),其中 uuuvvv 表示像素坐标,ddd 表示深度:

(uv1)=Ki⋅Pcam,i \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = K_i \cdot P_{\text{cam}, i} uv1=KiPcam,i

  • 处理投影结果: 如果某个点云的2.5D投影没有落入第 iii 个视图,就直接丢弃它。然后,在 Pimg,iP_{\text{img}, i}Pimg,i 上应用最小池化和单热化操作,以确保投影点云和预测深度之间的形状对齐。这些操作定义为 ϕ\phiϕ

Dgt=ϕ(Pimg,i) D_{gt} = \phi(P_{\text{img}, i}) Dgt=ϕ(Pimg,i)

  • 深度监督: 最后,使用二元交叉熵损失函数 LdepthL_{\text{depth}}Ldepth 来监督模型的中间深度预测 DpredD_{pred}Dpred

Ldepth=Binary Cross-Entropy(Dgt,Dpred) L_{\text{depth}} = \text{Binary Cross-Entropy}(D_{gt}, D_{pred}) Ldepth=Binary Cross-Entropy(Dgt,Dpred)

2. 相机感知深度预测

经典视觉模型中估计深度与相机内参相关,而相机可能具有不同的 FOV(Field of View)。因此,可以将相机内参作为 DepthNet 的输入之一。具体步骤如下:

  • 相机内参的引入: 深度估计与相机内参有关,特别是在视场(FOV)不同的多视角数据集中。为此,将相机内参作为DepthNet的输入之一。

  • 内参特征化:首先,将相机内参通过MLP扩展到特征空间的维度。

  • 重权重图像特征:使用Squeeze-and-Excitation(SE)模块对图像特征 F2diF_{2d}^{i}F2di 进行重新加权,自适应地调整特征的权重,增强相关特征和抑制无关特征。

  • 拼接相机外参:将相机的外参(包括旋转矩阵 RiR_iRi 和平移向量 tit_iti)与内参拼接,帮助DepthNet感知图像特征 F2diF_{2d}^{i}F2di 在自车坐标系中的空间位置。

  • 整体架构:原始的DepthNet记为 ψ\psiψ,总体的相机感知深度预测可以表示为:

Dpredi=ψ(SE(F2di∣MLP(ξ(Ri)⊕ξ(ti)⊕ξ(Ki)))) D_{pred}^{i} = \psi(SE(F_{2d}^{i} \mid MLP(\xi(R_i) \oplus \xi(t_i) \oplus \xi(K_i)))) Dpredi=ψ(SE(F2diMLP(ξ(Ri)ξ(ti)ξ(Ki))))

其中,ξ\xiξ 表示扁平化操作, ⊕\oplus 表示拼接操作。

3. 深度细化模块

新设计的深度优化模块(Depth Refinement Module),为了进一步增强深度预测的质量。具体步骤如下:

  • 特征重新调整:首先,将特征张量 F3dF_{3d}F3d 从形状 [CF,CD,H,W][C_F, C_D, H, W][CF,CD,H,W] 重新调整为 [CF×H,CD,W][C_F \times H, C_D, W][CF×H,CD,W]。这里,CFC_FCF 是特征通道数,CDC_DCD 是深度维度,HHHWWW 是图像的高度和宽度。

  • 卷积处理:在调整后的特征平面 CD×WC_D \times WCD×W 上堆叠多个 3×33 \times 33×3 卷积层进行处理。

  • 输出重塑:卷积层的输出再次调整回原来的形状,然后输入到后续的体素/柱体池化(Voxel/Pillar Pooling)操作中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值