论文精读 《CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection》

CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection

文章目录

  • CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection
  • 论文精读
    • 摘要(Abstract)
    • 1. 介绍(Introduction)
    • 2. 相关工作
    • 3. 方法(Methodology)
      • 3.1 3D表示学习 (3D Representation Learning)
      • 3.2 基于BEV的3D目标检测(BEV 3D Object Detection)
      • 3.3 深度离散化(Depth Discretization)
      • 3.4 深度分布标签的生成(Depth Distribution Label Generation)
      • 3.5 训练损失(Training Losses)
  • 参考

论文精读

摘要(Abstract)

  • 研究动机:单目3D目标检测难以预测物体的深度
    单目 3D 目标检测是自动驾驶领域的一个关键问题,因为它与典型的多传感器系统相比配置比较简单。单目 3D 检测的主要挑战在于准确预测物体深度,由于缺乏直接的距离测量,因此必须从物体和场景线索推断出物体深度。许多方法试图直接估计深度以辅助 3D 检测,但性能有限,深度估计不准确。

  • 主要工作: 提出CaDDN
    我们提出的 Categorical Depth Distribution Network(CaDDN)使用每个像素的预测分类深度分布,将丰富的上下文特征信息投影到 3D 空间中的适当深度间隔。然后,我们使用计算效率高的鸟瞰投影和单级检测器来产生最终的输出检测。我们将 CaDDN 设计为一种完全可微的端到端方法,用于联合深度估计和目标检测

  • 实验结果
    我们在 KITTI 3D 目标检测基准上验证了我们的方法,我们在已发表的单目方法中排名第一。我们还提供了最新发布的 Waymo 开放数据集上的第一个单目 3D 检测结果。

1. 介绍(Introduction)

  • 3D感知任务背景 :基于激光雷达和双目相机的检测算法效果更好
    3D 空间中的感知是自动车辆和机器人等领域的关键组成部分,使系统能够了解其环境并做出相应反应。激光雷达和双目相机在 3D 感知任务中有着悠久的使用历史,由于其能够生成精确的 3D 测量,因此在 KITTI 3D 物体检测基准等3D 物体检测基准上显示出优异的结果。

  • 基于单目视觉3D感知技术背景:
    基于单目视觉的 3D 感知技术也在同步发展,其动机是一种低成本、易于部署的单摄像头解决方案。但在相同的 3D 目标检测基准上的性能表现,落后于以上两种方法,主要是因为场景信息投影到图像平面上时会丢失深度信息。

  • 方法1: 使用一个单目深度估计网络来单独预测深度信息以及它们的二大局限性
    为了消除这种影响,单目目标检测方法通常通过在单独阶段训练单目深度估计网络来学习深度。
    (1)然而,深度估计在 3D 目标检测阶段直接使用,而不了解深度置信度,导致网络在深度预测方面往往过于自信。深度上的过度自信是一个长期问题,这会导致实际应用效果不佳。
    (2)此外,在训练阶段,深度估计与三维检测分离,阻止了深度图估计针对检测任务进行优化

  • 方法2:隐式学习容易收到特征涂抹的影响
    图像数据中的深度信息也可以通过直接将特征从图像转换到三维空间,最终转换到鸟瞰(BEV)网格隐式学习。然而,隐式方法往往会受到**特征涂抹(feature smearing)**的影响,其中相似的特征可存在在投影空间中的多个位置。特征涂抹增加了在场景中定位对象的难度。

  • 解决方案:提出CaDDN方法及其三大特性
    为了解决这些问题,我们提出了一种单目 3D 目标检测方法 CaDDN,该方法通过学习分类深度分布来实现精确的 3D 检测。通过利用概率深度估计,CaDDN 能够以端到端的方式从图像生成高质量的鸟瞰特征表示。我们用三个方面来总结我们的方法。

(1) Categorical Depth Distributions
为了进行三维检测,我们预测像素级分类深度分布(pixel-wise categorical depth distributions),以便在三维空间中准确定位图像信息。每个预测分布描述了一个像素属于一组预定义深度单元(depth bins)的概率

我们让我们的深度估计分布尽可能的集中处于正确的深度单元,以便保证我们的网络在保证深度估计的精度和可信度的同时,聚焦更多的图像信息。通过这样做,我们的网络能够产生对 3D 检测有用的更清晰、更准确的特征(见图 1)另一方面,当深度估计置信度较低时,我们的网络仍能产生不高的分布。使用分类分布允许我们的特征编码捕获固有的深度估计不确定性,以减少错误深度估计的影响,这一特性在第 4.3 节中被证明是 CaDDN 改进性能的关键。我们预测的深度分布的清晰度是通过对正确的深度单元进行一次热编码(one-hot encodings)监督来激励的,该深度编码可以通过将激光雷达深度数据投影到相机帧中来生成。
(2) End-To-End Depth Reasoning
我们以端到端的方式学习深度分布,联合优化以实现精确的深度预测和精确的 3D 对象检测。我们认为,联合深度估计和 3D 检测证明针对 3D 检测任务优化深度估计可以提高性能,如第 4.3 节所示。
(3) BEV Scene Representation
我们介绍了一种利用分类深度分布和投影几何 从单个图像生成高质量鸟瞰场景表示的新方法。我们之所以选择鸟瞰场景表示法,是因为它能够以高计算效率产生出色的 3D 检测性能。生成的鸟瞰视图表示用作基于鸟瞰视图的检测器的输入,以生成最终输出。
论文精读 《CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection》_第1张图片

  • 实验结果:
    在 KITTI 3D 物体检测测试基准的汽车和行人类别中,CaDDN 在之前发布的所有单目方法中排名第一,其不确定度分别为 1.69%和 1.46%AP|R40。我们是第一个在 Waymo 开放数据集上报告单目 3D 目标检测结果的公司。

2. 相关工作

单目深度估计(Monocular Depth Estimation)

通过为图像中的每个像素生成单个深度值来执行单目深度估计。因此,许多单目深度估计方法都基于在语义分割等像素到像素映射问题中使用的体系结构。

例如,全卷积网络(FCN)被引入语义分割,随后被用于单目深度估计。Atrous spatial pyramid pooling(ASPP)模块也首次在 DeepLab中提出用于语义分割,
随后在 DORN和 BTS中用于深度估计。此外,许多方法以端到端的方式联合执行深度估计和分割。我们遵循语义分割网络 DeepLabV3的设计来估计图像中每个像素的分类深度分布。

基于BEV的语义分割(BEV Semantic Segmentation)

BEV 分割方法试图从图像中预测 3D 场景的 BEV 语义图。图像可用于直接估计 BEV 语义图,或估计 BEV 特征表示,作为分割任务的中间步骤。特别是,Lift、Splat、Shot以无监督的方式预测分类深度分布,以生成中间 BEV 表示。在这项工作中,我们通过监督真值热编码来预测分类深度分布,从而为目标检测生成更准确的深度分布。

单目的3D目标检测(Monocular 3D Detection)

单目 3D 目标检测方法通常会生成中间表示,以协助完成 3D 检测任务。基于这些表示,单目检测可以分为三类:直接、基于深度和基于网格的方法。

直接方法(Direct Methods)

直接从图像中估计 3D 检测,而无需预测中间 3D 场景表示。

基于深度的方法(Depth-based Methods)

使用像素级深度图作为附加输入执行 3D 检测任务,其中深度图使用单目深度估计架构预先计算

基于网格的方法(Grid-Based Methods)

通过预测 BEV 网格表示来避免估计原始深度值,BEV 网格表示将用作 3D 检测架构的输入。

3. 方法(Methodology)

  • CaDDN 通过将图像特征投影到 3D 空间,学习从图像生成 BEV 表示。然后,使用高效的BEV 检测网络以丰富的 BEV 表示来执行 3D 对象检测。
    论文精读 《CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection》_第2张图片

CaDDN算法结构。 该网络由三个模块组成,分别用于生成三维特征表示和执行三维检测。使用估计的深度分布D从图像 I 生成平截头体特征G, 并将其转换成体素特征V, 体素特征折叠为鸟瞰特征B, 用于3D对象检测。

3.1 3D表示学习 (3D Representation Learning)

我们的网络学习生成非常适合 3D 对象检测任务的 BEV 表示。以一幅图像为输入,(1)我们使用估计的分类深度分布构造了一个平截头体特征网格。(2) 使用已知的相机校准参数将平截头体特征网格转换为体素网格,(3)然后折叠为鸟瞰特征网格

(1) Frustum Feature Network

平截头体特征网络的目的是通过将图像特征与估计深度相关联, 将图像信息投影到三维空间。

平截头体特征网络的输入是图像 I ∈ R W I × H I × 3 I \in \mathbb{R}^{W_I \times H_I \times 3} IRWI×HI×3, 其中 W l , H I W_l, H_I Wl,HI 分别是图像的宽和高。 输出是平截头体特征网格 G ∈ R W F × H F × D × C G \in \mathbb{R}^{W_F \times H_F \times D \times C} GRWF×HF×D×C, 其中 W F , H F W_F, H_F WF,HF 是图像特征表示的宽和高, D \mathrm{D} D 是离 散化深度单元的个数, C \mathrm{C} C 是特征通道的个数。我们注意到, 平截头体网格的结构类似于立 体 3D 检测方法 DSGN中使用的平面扫描体积。

论文精读 《CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection》_第3张图片

每个像素特征F(u,v) 通过其属于D个离散深度单元的深度分布概率D(u,v) 进行加权,以生成平截头体特征 G(u,v)

ResNet-101主干网用于提取图像特征 F ~ ∈ R W F × H F × C \tilde{F} \in \mathbb{R}^{W_F \times H_F \times C} F~RWF×HF×C。在 我们的实现中, 我们从 ResNet-101 主干的 Block1 中提取图像特征, 以保持较高的空间分 辨率。高空间分辨率对于有效的平截头体到体素网格转换是必要的, 这样可以在不重复特 征的情况下对平截头体网格进行精细采样。图像特征 F \mathrm{F} F 用于估计像素级分类深度分布 D ∈ R W F × H F × D D \in \mathbb{R}^{W_F \times H_F \times D} DRWF×HF×D, 其中类别为 D 个离散化深度单元。具体来说, 我们预测了图像特征 F ~ \tilde{F} F~ 中每个像素的 D 分布概率, 其中, 每个概率表示深度值属于指定的深度箱的置信度。深度箱的定义 取决于第 3.3 节中讨论的深度离散化方法。

  • Depth Distribution Network 的具体实现
    我们遵循语义分割网络 DeepLabV3的设计, 根据图像特征 F ~ \tilde{F} F~ (图 2 中的深度分布网 络) 估计分类深度分布, 其中, 我们修改网络, 以产生属于深度箱的像素级概率分数, 而 不是具有下采样-上采样结构的语义类。图像特征 F ~ \tilde{F} F~ 用 ResNet-101主干网的其余组件 (Block2、Block3 和 Block4)进行下采样。应用 Atrus spatial pyramid pooling (ASPP) 模块捕获多尺度信息, 其中输出通道数设置为 D。ASPP 模块的输出通过双线性揷值上采 样到原始特征尺寸, 以产生分类深度分布 D ∈ R W F × H F × D D \in \mathbb{R}^{W_F \times H_F \times D} DRWF×HF×D 。对每个像素应用 softmax 函数, 以将 D 归一化为 0 到 1 之间的概率。

  • Image Channel Reduce 的具体实现
    在估计深度分布的同时, 我们对图像特征 F ~ \tilde{F} F~执行通道缩减 (Image Channle Reduce) 以生成最终的图像特征 F \mathrm{F} F, 使用 1 x 1 1 \mathrm{x} 1 1x1 卷积+BatchNorm+ReLU 层将通道数从 C = 256 \mathrm{C}=256 C=256 减少到 C = 64 \mathrm{C}=64 C=64 。为了减少将在 3D 平截头体网格中填充的 ResNet-101 功能的高内存占用, 需要减少通道。

  • Outer Product 的具体实现
    ( u , v , c ) (u, v, c) (u,v,c) 代表图像特征 F 中的坐标, ( u , v , d i ) \left(u, v, d_i\right) (u,v,di) 代表分类深度分布 D 中的坐标, 其中 ( u , v ) (u, v) (u,v)是特征像素的位置, c c c 是通道索引, d i d_i di 是深度单元索引。为了生成平截头体特征网格 G G G, 每个特征像素 F ( u , v ) F(u, v) F(u,v) 通过其在 D ( u , v ) D(u, v) D(u,v) 中的相关深度单元概率进行加权, 以填充深度轴 , 如图 3 所示。特征像素可以使用外积按深度概率加权, 定义为:

G ( u , v ) = D ( u , v ) ⊗ F ( u , v ) G(u, v)=D(u, v) \otimes F(u, v) G(u,v)=D(u,v)F(u,v)

其中 D ( u , v ) D(u, v) D(u,v) 是预测的深度分布, G ( u , v ) G(u, v) G(u,v) 是尺寸为 D × C \mathrm{D} \times \mathrm{C} D×C的输出矩阵。方程式 1 中的外 积是为每个像素计算的, 以形成平截头体特征 G ∈ R W F × H F × D × C G \in \mathbb{R}^{W_F \times H_F \times D \times C} GRWF×HF×D×C

(2) Frustum to Voxel Transformation

平截头体特征 G ∈ R W F × H F × D × C G \in \mathbb{R}^{W_F \times H_F \times D \times C} GRWF×HF×D×C 利用已知的摄像机校准和可微采样被转换为体素表示 V ∈ R X × Y × Z × C V \in \mathbb{R}^{X \times Y \times Z \times C} VRX×Y×Z×C,如图 4 所示。体素采样点 s k v = [ x , y , z ] k T s_k^v=[x, y, z]_k^T skv=[x,y,z]kT在每个体素的中心生成, 并转换为平截体网格以形成平截体采样点 s ~ k f = [ u , v , d c ] k T \tilde{s}_k^f=\left[u, v, d_c\right]_k^T s~kf=[u,v,dc]kT, 其中, d c d_c dc 是沿平 截头体深度轴 d i d_i di 的连续深度值。这个转换是使用相机校准矩阵 P ∈ R 3 × 4 P \in \mathbb{R}^{3 \times 4} PR3×4完成的。使用第3.3节中概述的深度离散化方法, 将每个连续深度值 d c d_c dc转换为离散深度单元索引 d i d_i di。使用采样点 s k f = [ u , v , d I ] k T s_k^f=\left[u, v, d_I\right]_k^T skf=[u,v,dI]kT和三次线性揷值(如图 4 中的蓝色所示) 对 G \mathrm{G} G中的平截头体特征进行采 样, 以填充 v \mathrm{v} v中的体素特征。
论文精读 《CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection》_第4张图片

为了进行有效的变换平截头体栅格 G \mathrm{G} G和体素栅格 V \mathrm{V} V的空间分辨率应该相似。高分辨率 体素栅格 V \mathrm{V} V会产生高密度的采样点, 这将对低分辨率的平截头体栅格进行过采样, 从而产生大量相似的体素特征。因此, 我们从 ResNet-101 主干的 Block1 中提取特征 F ~ \tilde{F} F~, 以确保我们的平截头体网格 G \mathrm{G} G 具有高空间分辨率。

(3) Voxel Collapse to BEV

将体素特征 V ∈ R X × Y × Z × C V \in \mathbb{R}^{X \times Y \times Z \times C} VRX×Y×Z×C 折叠到单个高度平面以生成鸟瞰特征 B ∈ R X × Y × C B \in \mathbb{R}^{X \times Y \times C} BRX×Y×C 。BEV 网格极大地降低了计算开销, 同时提供了与 3D 体素网格相似的检测性能, 这促进了它们在我们的网络中的使用。我们沿着通道维度 c 将体素网格 V \mathrm{V} V的垂直轴 z \mathrm{z} z连接起来, 以形成 B E V \mathrm{BEV} BEV网格 B ∈ R X × Y × Z ∗ C B \in \mathbb{R}^{X \times Y \times Z * C} BRX×Y×ZC。使用 1 x 1 1 \mathrm{x} 1 1x1卷积+BatchNorm+RELU 层减少 通道数(参见图 2 中的 BEV 通道减少), 其在学习每个高度切片的相对重要性的同时检索通道 C \mathrm{C} C的原始数量, 从而产生 BEV 网格 B ∈ R X × Y × C B \in \mathbb{R}^{X \times Y \times C} BRX×Y×C

3.2 基于BEV的3D目标检测(BEV 3D Object Detection)

为了要在 BEV 特征网格上执行 3D 目标检测,我们采用配置良好的 BEV 3D 物体探测器PointPillars的主干和探测头,因为它已经被证明以较低的计算开销提供准确的 3D 检测结果。对于 BEV 主干,我们将下采样块中 3x3 卷积+BatchNorm+ReLU 层的数量从原始中使用的(4、6、6)分别增加到块 1、块 2 和块 3 的(10、10、10)。增加卷积层的数量可以扩展我们的 BEV 网络的学习能力,这对于从图像生成的低质量特征中学习非常重要,而不是从最初由激光雷达点云生成的高质量特征中学习。我们使用与 PointPillars相同的探测头来生成最终的探测结果。

3.3 深度离散化(Depth Discretization)

对连续深度空间进行离散化,以定义深度分布 D 中使用的一系列 D 点。深度离散化可以采用固定尺寸的均匀离散化(UD)、对数空间中尺寸增大的间距增大离散化(SID)或尺寸线性增大的线性增大离散化(LID进行。深度离散化技术如图 5 所示。我们采用 LID 作为深度离散化,因为它为所有深度提供了平衡的深度估计[60]。LID 的定义如下:

d c = d min ⁡ + d max ⁡ − d min ⁡ D ( D + 1 ) ⋅ d i ( d i + 1 ) d_c=d_{\min }+\frac{d_{\max }-d_{\min }}{D(D+1)} \cdot d_i\left(d_i+1\right) dc=dmin+D(D+1)dmaxdmindi(di+1)

其中 dc 是连续深度值,[, ]是要离散的完整深度范围,D 是深度单元的数量,是深度单元索引。

论文精读 《CaDNN: Categorical Depth Distribution Network for Monocular 3D Object Detection》_第5张图片

3.4 深度分布标签的生成(Depth Distribution Label Generation)

我们需要深度分布标签 D ^ \widehat{D} D ,以监督我们预测的深度分布。深度分布标签是通过将激光雷达点云投影到图像帧中来生成的,以创建稀疏密集的地图。执行深度补全以在图像中的每个像素处生成深度值。我们需要每个图像特征像素的深度信息,因此我们将大小为 W I × H I W_I\times H_I WI×HI的深度图下采样为图像特征大小 W F × H F W_F\times H_F WF×HF。使用第 3.3 节所述的 LID 离散化方法将深度图转换为面元索引,然后转换为一次热编码,以生成深度分布标签。一次热编码确保深度分布标签清晰,这对于通过监督鼓励深度分布预测的清晰性至关重要。

3.5 训练损失(Training Losses)

通常, 分类是通过预测分类分布, 并鼓励分布的尖锐性来选择正确的类别。在监控深 度分布网络时, 我们利用焦点损失 [32], 利用分类鼓励使用一个正确的深度箱:

L depth  = 1 W F ⋅ H F ∑ u = 1 W F ∑ v = 1 H F F L ( D ( u , v ) , D ^ ( u , v ) ) L_{\text {depth }}=\\ \frac{1}{W_F \cdot H_F} \sum_{u=1}^{W_F} \sum_{v=1}^{H_F} F L(D(u, v), \widehat{D}(u, v)) Ldepth =WFHF1u=1WFv=1HFFL(D(u,v),D (u,v))

其中 D 是深度分布预测, D ^ \widehat{D} D 是深度分布标签。我们发现, 自动驾驶数据集包含的图像对象 像素少于背景像素,导致损失函数在所有像素损失加权时优先考虑背景像素。对于前景对象像素, 我们将焦损加权因子 a 设置为 α f b = 3.25 \alpha_{f b}=3.25 αfb=3.25, 对于背景像素, 我们将 α b g = 0.2 5 b g \alpha_{b g}=0.25_{bg} αbg=0.25bg。前景对象像素被确定为位于 2D 对象边界框标签内的所有像素,而背景像素则是所有剩余像素。我们设置聚焦损耗聚焦参数 γ = 2.0 \gamma=2.0 γ=2.0
我们使用 PointPillars中的分类损失 、回归损失 L r e g L_{r e g} Lreg和方向分类损失 L d i r L_{d i r} Ldir进行 3D 目标检测。我们网络的总损失是深度和 3D 探测损失的组合:
L = λ depth  L depth  + λ c l s L c l s + λ reg  L reg  + λ dir  L dir  L=\lambda_{\text {depth }} L_{\text {depth }}+\lambda_{c l s} L_{c l s}+\lambda_{\text {reg }} L_{\text {reg }}+\lambda_{\text {dir }} L_{\text {dir }} L=λdepth Ldepth +λclsLcls+λreg Lreg +λdir Ldir 

其中 λ depth  、 λ c l s 、 λ r e g 、 λ d i r \lambda_{\text {depth }} 、 \lambda_{c l s} 、 \lambda_{r e g} 、 \lambda_{d i r} λdepth λclsλregλdir是固定损失加权因子。

参考

Categorical Depth Distribution Network for Monocular 3D Object Detection

https://github.com/TRAILab/CaDDN

单目三维目标检测之CaDDN论文阅读_hello689的博客-CSDN博客_单目三维目标检测

你可能感兴趣的:(#,论文精读——3D目标检测,目标检测,3d,计算机视觉)