SMOKE 论文解读

摘要:

        估计物体的 3D 方向和平移对于无基础设施的自主导航和驾驶至关重要。在单眼视觉的情况下,成功的方法主要基于两个要素:(i)生成2D区域建议的网络,(ii)利用获取的感兴趣区域预测3D物体姿态的R-CNN结构。我们认为 2D 检测网络是冗余的,并且为 3D 检测引入了不可忽略的噪声。因此,本文提出了一种名为SMOKE的新型三维目标检测方法,该方法通过将单个关键点估计与回归的三维变量相结合来预测每个检测到的物体的三维边界框。作为第二个贡献,我们提出了一种用于构建三维边界框的多步骤解缠合方法,该方法显着提高了训练收敛性和检测精度。与以前的3D检测技术相比,我们的方法不需要复杂的前/后处理、额外的数据和细化阶段。尽管结构简单,但我们提出的SMOKE网络优于KITTI数据集上所有现有的单目3D检测方法,在3D目标检测和鸟瞰评估方面都提供了最佳的最新结果。该代码将公开提供。

这篇论文提出了一种新的基于单目图像的3D物体检测方法SMOKE。它主要有以下几个亮点:

  • 摒弃了传统的两步式检测方法(先2D检测,再3D姿态估计),而是直接从单目图像预测3D边界框。这样可以减少噪音并提高检测精度。
  • 提出了一种多步骤的3D边界框构建方法,通过解耦3D变量的预测,显著提高了训练收敛性和检测精度。
  • 与之前的方法相比,SMOKE网络结构较为简单,不需要复杂的预处理、后处理和refinement阶段,但仍然在KITTI数据集上取得了目前最好的3D检测和鸟瞰视评估结果。

介绍

        基于视觉的物体检测是自动驾驶汽车感知和基础设施(一般而言)机器人导航的重要组成部分。这种类型的检测方法用于通过检测对象实例并将其分类并识别其位置和方向来感知周围环境。二维目标检测的最新进展[28,20,27,18,12,42]在检测精度和速度方面都取得了令人鼓舞的性能。相比之下,3D物体检测[3,16,43]已被证明是一项更具挑战性的任务,因为它旨在同时估计每个物体的姿态和位置。目前,最成功的3D目标检测方法在很大程度上依赖于LiDAR点云[43,30,40]或LiDAR图像融合信息[17,33,5](从点云中学习的特征是检测网络的关键组成部分)。然而,LiDAR 传感器非常昂贵,使用寿命短,对于自主机器人来说太重了。因此,LiDAR目前被认为在支持自动驾驶汽车运行方面并不经济。另外,相机是经济高效、易于安装且重量轻的解决方案,适用于 3D 物体检测,预期使用寿命长。与LiDAR传感器不同,单个摄像头本身无法获得整个环境的足够空间信息,因为单个RGB图像无法提供现实世界中的物体位置信息或尺寸轮廓。虽然双目视觉可以恢复缺失的空间信息,但在许多机器人应用中,尤其是无人机(UAV)中,很难实现双目视觉。因此,即使这是一项更困难和更具挑战性的任务,也希望对单目图像进行 3D 检测。

        以前最先进的单目3D目标检测算法[25,1,21]在很大程度上依赖于基于区域的卷积神经网络(R-CNN)或区域建议网络(RPN)结构[28,18,7]。基于学到的大量二维建议,这些方法附加了一个额外的网络分支,以学习三维信息或生成伪点云并将其输入点云检测网络。由此产生的多阶段复杂过程引入了来自 2D 检测的持续噪声,这大大增加了网络学习 3D 几何形状的难度。为了提高性能,几何推理[25]、合成数据[22]和后期3D-2D处理[1]也被用于改进对单个图像的3D对象检测。据笔者所知,目前还没有引入可靠的单目3D检测方法到目前为止,直接从图像平面学习3D信息,避免了多阶段方法不可避免的性能下降。

        在本文中,我们提出了一种创新的单阶段三维目标检测方法,将每个目标与单个关键点配对。我们论证并随后表明,在3D参数估计中引入不可忽略噪声的2D检测对于执行3D对象检测是多余的。此外,如果已知 3D 变量和相机固有矩阵,则可以自然地获得 2D 信息。因此,我们设计的网络消除了 2D 检测分支,而是估计图像平面上的投影 3D 点。并行添加 3D 参数回归分支。这种设计产生了具有两个估计线程的简单网络结构。我们没有使用多个损失函数在单独的方法中回归变量,而是将这些变量与投影关键点一起转换为 3D 盒子的 8 个角表示,并使用统一的损失函数对其进行回归。与大多数单级 2D 对象检测算法一样,我们的 3D 检测方法仅包含一个分类和回归分支。得益于简单的结构,该网络在学习三维变量方面表现出更高的准确性,具有更好的收敛性和更少的整体计算需求。

摒弃了传统的两步式3D目标检测方法(2D检测+3D姿态估计),而是采用单阶段的设计,直接从单目图像预测3D边界框。

  • 论证了2D检测分支在3D参数估计中引入了不可忽略的噪声,是多余的。相反,SMOKE网络直接预测图像平面上的3D关键点投影,并parallel地预测3D参数。
  • 将3D变量与2D关键点投影一起回归到3D边界框的8个角点表示,使用统一的损失函数进行优化。这种方法避免了多个独立损失函数的复杂性。
  • 相比之前的单阶段3D检测方法,SMOKE网络结构更加简单,但在学习3D变量的准确性、收敛性和计算效率等方面都有显著提升。
  • 在KITTI数据集上,SMOKE的3D检测和鸟瞰视评估结果均优于现有的单目3D检测方法,达到了最先进水平。

        我们工作的第二个贡献是用于 3D 边界框回归的多步骤解纠缠方法。由于所有几何信息都归入一个参数,因此网络很难以统一的方式准确地学习每个变量。我们提出的方法在三维边界框编码阶段和回归损失函数中分离了每个参数的贡献,这极大地有助于有效地训练整个网络。

        我们的贡献总结如下:

  •         我们提出了一种单阶段单目 3D 物体检测,其架构简单,可以端到端方式精确学习 3D 几何形状。
  •          我们提供多步解纠缠方法,以提高3D参数的收敛性和检测精度。

相关工作

        在本节中,我们将深入概述基于所用传感器输入的 3D 物体检测的最新技术。我们首先讨论了基于LiDAR的LiDAR图像融合方法。之后,概述了基于立体图像的方法。最后,我们总结了仅依赖于单个RGB图像的方法。

        基于LiDAR/Fusion的方法:基于LiDAR的三维目标检测方法通过将稀疏点云处理成各种表示来实现高检测精度。一些现有方法,例如[15,39],将点云投影到2D鸟瞰图中,并配备标准的2D检测网络来执行对象分类和3D盒回归。其他方法,如 [43, 11, 13, 38],表示体素网格中的点云,然后利用 2D/3D CNN 生成提案。LiDAR图像融合方法[17,33,5]从点云和图像中学习相关特征。然后将这些特征组合并输入到经过检测和分类训练的联合网络中

        基于立体图像的方法:早期工作3DOP [4]通过探索许多手工制作的功能(如立体重建、深度特征和物体尺寸先验)来生成3D方案。TLNet [26]引入了一种基于三角测量的学习网络,用于在左右图像之间配对检测到的兴趣区域。Stereo R-CNN [16] 在立体图像上同时创建 2D 方案。然后,这些方法利用关键点预测为每个区域生成一个粗略的 3D 边界框。最后,在对象实例上使用3D盒对齐立体图像,以提高检测精度。伪LiDAR方法,例如[32],生成一个“假”点云,然后将这些特征输入到基于点云的3D检测网络中。

        基于单目图像的方法:基于单透视图像的3D物体检测已被广泛研究,被认为是一项具有挑战性的任务。一种常见的方法是将额外的 3D 网络分支应用于对象实例的回归方向和平移,参见 [3, 23, 37, 19, 14, 25, 22, 31]。Mono3D [3] 通过语义分割、对象轮廓和位置先验使用大量特征来生成 3D 锚点。然后通过能量函数评估这些特征,以适应相关信息的学习。Deep3DBox [23] 引入了基于条柱的离散化,用于估计每个对象的局部方向,并引入 2D-3D 边界框约束关系以获得完整的 3D 姿态。MonoGRNet[25]将3D对象定位任务细分为4个任务,分别估计实例深度、3D对象位置和局部角。然后将这些组件堆叠在一起,以在全局上下文中优化 3D 框。网络以阶段性方式进行训练,然后进行端到端训练以获得最终结果。某些方法(如 [36, 2, 10])依赖于在 2D 对象框中检测到的特征,并利用外部数据将信息从 2D 配对到 3D。DeepMANTA [2] 提出了一种从粗到细的过程来生成准确的 2D 对象提案,然后使用这些提案来匹配来自外部注释数据集的 3D CAD 模型。3D-RCNN [10] 还使用 3D 模型来配对 2D 检测网络的输出。然后,他们通过部署渲染和比较损失来恢复 3D 实例形状和姿势。其他方法,如[21,34,9],通过将图像上的感兴趣区域转换为其他表示来生成手工制作的特征。AM3D 通过将 2D 影像与深度图相结合,将其转换为 3D 点云平面。然后使用PointNet[24]来估计3D尺寸、位置和方向。唯一的一阶段方法M3D-RPN [1]提出了一个独立的网络,可以同时生成2D和3D对象建议。他们进一步利用深度感知网络和 3D-2D 后优化技术来提高精度。OFTNet[29]通过利用正交特征,将二维特征图映射到鸟瞰图,并独立地对每个三维变量进行回归。因此,如果不生成 2D 方案,上述方法都无法准确估计 3D 信息。

根据论文对单目图像3D目标检测方法的总结,可以看到主要存在以下几种技术路线:

1.利用额外3D网络分支进行3D信息回归:

  • Mono3D[3]通过语义分割、物体轮廓、位置先验等大量特征生成3D锚框,并利用能量函数来学习相对信息。
  • Deep3DBox[23]提出了基于bins的离散化方法来估计局部朝向,并利用2D-3D边界框约束关系来获得完整的3D姿态。
  • MonoGRNet[25]将3D目标定位分解为深度估计、3D位置估计和局部角点估计等子任务,通过逐步训练和端到端优化获得最终的3D边界框。

2.利用2D-3D特征对齐的方法:

  • DeepMANTA[2]提出了一种粗到细的2D目标proposal生成过程,并利用外部注释的3D CAD模型进行2D-3D对齐。
  • 3D-RCNN[10]也使用3D模型将2D检测网络的输出与3D信息进行配对,通过渲染比较损失函数来恢复3D实例形状和姿态。

3.基于手工设计特征的方法:

  • AM3D[21]将2D图像变换到3D点云平面,然后使用PointNet[24]估计3D尺寸、位置和朝向。
  • 其他一些方法也尝试通过手工特征变换的方式提取3D信息。

4.一阶段的联合2D-3D proposals生成:

  • M3D-RPN[1]提出了一个端到端的网络,同时生成2D和3D proposals,并利用深度感知和2D-3D优化提高精度。

        总的来说,基于单目图像的3D检测是一个非常具有挑战性的任务。所有这些方法都是通过各种机制从单目图像中尽可能多地提取3D几何信息,以弥补单目检测的局限性。

相比之下,论文提出的SMOKE方法是一种简单而又高效的单目3D检测方法,无需额外的3D分支或外部3D模型等,就可以直接从单目图像中回归出准确的3D边界框。这种方法更加直接和高效。

        

检测问题

        我们公式化了单目3D物体检测问题:给定一个RGB图像I∈RW×H×3,其中W是图像的宽度,H是图像的高度,为每个当前对象找到其类别标签C及其3D边界框B,其中后者由7个变量(h, w、l、x、y、z、θ)。这里,(h、w、l) 表示每个物体的高度、重量和长度(以米为单位),(x、y、z) 是相机坐标系中物体中心的坐标(以米为单位)。变量 θ 是相应立方体的偏航方向。按照 KITTI [6] 注释将滚动角和俯仰角设置为零。此外,我们假设相机固有矩阵 K 在训练和推理方面都是众所周知的。

  1. 问题输入:

    • 给定一张单目RGB图像I,图像的尺寸为W x H x 3。
  2. 问题输出:

    • 对于图像中存在的每个目标物体:
      • 预测目标的类别标签C
      • 预测目标的3D边界框B,该边界框由7个变量描述:
        • (h, w, l): 目标的高、宽、长(单位为米)
        • (x, y, z): 目标中心在相机坐标系下的坐标(单位为米)
        • θ: 目标的偏航角(yaw),roll和pitch角设置为0
  3. 其他假设:

    • 相机内参矩阵K在训练和推理时都已知。

SMOKE Approach

        在本节中,我们将介绍 SMOKE 网络,该网络可直接从单目影像中估计检测到的对象实例的 3D 边界框。与以前利用 2D 提案预测 3D 边界框的技术相比,我们的方法可以通过简单的单阶段检测 3D 信息。所提出的方法可分为三部分:(i)骨干,(ii)三维检测,(iii)损失函数。首先,我们简要讨论了特征提取的骨干,然后介绍了由两个独立分支组成的三维检测网络。最后,讨论了损失函数设计和多步解纠缠来计算回归损失。网络结构的概述如图 2 所示。

        在本节中,我们将介绍 SMOKE 网络,该网络可直接从单目影像中估计检测到的对象实例的 3D 边界框。与以前利用 2D 提案预测 3D 边界框的技术相比,我们的方法可以通过简单的单阶段检测 3D 信息。所提出的方法可分为三部分:(i)骨干,(ii)三维检测,(iii)损失函数。首先,我们简要讨论了特征提取的骨干,然后介绍了由两个独立分支组成的三维检测网络。最后,讨论了损失函数设计和多步解纠缠来计算回归损失。网络结构的概述如图 2 所示。

主干网络

        我们使用分层融合网络DLA-34 [41]作为主干来提取特征,因为它可以聚合不同层的信息。遵循与[42]相同的结构,所有分层聚合连接都被可变形卷积网络(DCN)[44]所取代。输出特征图相对于原始图像进行 4 次缩减采样。与原始实现相比,我们用 GroupNorm (GN) [35] 替换了所有 BatchNorm (BN) [8] 操作,因为它已被证明对批处理大小不太敏感,而对训练噪声更可靠。我们也在两个预测中使用了这种技术分支,这将在第 4.2 节中讨论。这种调整不仅提高了检测精度,而且还大大减少了训练时间。在第 5.2 节中,我们提供了 BN 和 GN 的性能比较,以证明这些特性。

  1. 主干网络的选择:

    • 您采用了 DLA-34 作为主干网络,这是一种分层融合网络,可以有效地聚合不同层级的特征信息。这种选择是合理的,因为它能够提取丰富的特征表示,有助于提高检测性能。
  2. 替换卷积操作:

    • 您将所有分层聚合连接都替换为可变形卷积网络(DCN)。这种操作可以增强网络的建模能力,提高特征提取的灵活性,从而潜在地提升检测精度。
  3. 特征图缩减:

    • 您的输出特征图相对于原始图像进行了 4 倍缩减采样。这可以减少计算开销,同时保留足够的语义信息用于后续的检测任务。
  4. BatchNorm 替换为 GroupNorm:

    • 您用 GroupNorm 替换了所有的 BatchNorm 操作。这是一个合理的选择,因为 GroupNorm 对批处理大小的依赖性较小,在训练过程中更加稳定,有助于提升模型性能。
  5. 在预测分支使用 GroupNorm:

    • 您也在两个预测分支中使用了 GroupNorm。这可以进一步增强模型在检测任务上的性能。

3D 检测网络(检测头)

关键点分支:

我们定义了类似于 [42] 的关键点估计网络,使得每个对象都由一个特定的关键点表示。关键点不是标识 2D 边界框的中心,而是定义为对象在图像平面上的投影 3D 中心。2D 中心点和 3D 投影点之间的比较如图 3 所示。投影的关键点允许使用相机参数完全恢复每个对象的 3D 位置。设 表示相机帧中每个对象的 3D 中心。3D点到图像平面上的点的投影可以通过相机本征矩阵K以均匀形式获得:

  1. 关键点映射:

     对于每个地面真实的关键点,计算其在特征图上的对应位置。这是通过将 3D 目标的位置投影到 2D 图像平面上来实现的。
  2. 高斯核分布:

    使用高斯核对映射后的关键点位置进行分布。这是为了平滑关键点的表示,以应对标注不精确或者目标变形等问题。
  3. 标准差计算:

    标准差的大小是根据 3D 目标的边界框在图像平面上的投影来确定的。具体来说,首先将 3D 目标的 8 个顶点投影到 2D 图像平面上,得到 8 个 2D 点 (xb,1∼8, yb,1∼8)。然后计算一个最小的 2D 边界框,它刚好包含这 8 个 2D 点。这个边界框的宽高分别作为高斯核的标准差。

 回归分支:

我们的回归头预测了用于构建热图上每个关键点的3D边界框所需的关键变量。与其他单目3D检测框架[22, 31]类似,3D信息被编码为8元组:

τ = [δz, δxc, δyc, δh, δw, δl, sin(α), cos(α)]

其中:

δz表示深度偏移
δxc和δyc表示由于下采样导致的离散化偏移
δh、δw和δl表示尺寸残差
sin(α)和cos(α)表示旋转角度α的向量表示

        我们将所有需要学习的变量编码为残差表示,以缩短学习间隔,简化训练任务。回归结果的特征图大小为Sr∈R^(H/R×W/R×8)。

编码为残差表示的意思是

  1. 原本需要学习的变量是普通的绝对值表示,比如目标的真实尺寸。

  2. 但为了简化训练任务,减小学习间隔,网络并不直接学习这些绝对值,而是学习它们相对于某个预定义值的残差。

        受[22]中提到的提升变换的启发,我们引入了一个类似的操作F,可以将投影的3D点转换为3D边界框。

                                                                B = F(τ)∈R^(3×8)。

对于每个物体,其深度z可以使用预定义的缩放和偏移参数σz和μz来恢复:

                                                                z = μz + δzσz

给定物体深度 z,可以通过使用其在图像平面上的离散化投影质心 [xc, yc]T >和下采样偏移 [δxc δyc]T来恢复相机帧中每个物体的位置:

                        

损失函数

关键点分类损失

首先,si,j是在热图位置(i, j)处的预测得分,yi,j是由高斯核分配的每个点真值。根据定义,y˘i,j和s˘i,j分别表示:


- y˘i,j = 0,如果yi,j = 1;否则为yi,j。
- s˘i,j = si,j,如果yi,j = 1;否则为1 - si,j。

接着,构建了分类损失函数Lcls,其计算公式如下:
Lcls = - (1/N) * Σ(i,j=1 to h,w) [(1 - y˘i,j)^β * (1 - s˘i,j)^α * log(˘si,j)]

在这个公式中,α和β是可调参数,N是每个图像中关键点的数量。公式中的各项含义如下:
- (1 - yi,j):惩罚地面真实位置周围的点。
- (1 - y˘i,j)^β:用于焦点损失的降低惩罚。
- (1 - s˘i,j)^α:用于焦点损失的降低惩罚。
- log(˘si,j):对数变换后的预测得分。

回归损失:

       在给定的描述中,回归损失用于通过将输入的8D元组τ回归到每个对象的3D边界框的参数。这些参数包括尺寸(dimension)和方向(orientation)。此外,在每个特征图位置上,对回归得到的尺寸和方向参数进行通道级别的激活,以保持一致性。

        对于尺寸参数,选择了sigmoid函数σ作为激活函数。sigmoid函数将输入值映射到0到1的范围内。在这种情况下,sigmoid函数常常用于确保尺寸值保持在有效范围内,即非负且不会过大。

        对于方向参数,选择了2范数(也称为欧几里得范数或L2范数)作为激活函数。2范数用于计算多维空间中向量的大小。在这里,2范数用于确保方向值得到适当的缩放和归一化。

        通过对回归得到的参数应用这些激活函数,可以限制结果值在合适的范围内,并与所表示的对象特性保持一致。

        给定的方程表示从预测参数(oh,ow,ol)到回归参数(δh,δw,δl)的转换,其中使用了S型激活函数σ。它还涉及计算sin α和cos α,其中α是网络的特定输出。此外,方程还包括将预测的变换Bˆ与真实值B之间的L1距离定义为3D边界框回归损失的部分。

        通过采用在第4.2节中介绍的关键点抬升转换,我们将3D边界框回归损失定义为预测变换Bˆ与真实值B之间的L1距离(绝对差异)。具体而言,损失函数Lreg定义如下:

        其中,λ是一个缩放因子,用于确保分类和回归两者都具有合适的权重。通过将损失函数进行分解,可以有效地优化3D回归损失函数[31]。为了进一步扩展损失解耦的概念,我们将其设计为一个多步形式。在公式(3)中,我们使用投影到图像平面上的真实3D关键点坐标(xc,yc),结合网络预测的离散化偏移量(δxc,δyc)和深度zˆ,来计算每个物体的位置(xˆ,yˆ,zˆ)。

        

在公式(5)中,我们使用真实的位置(x,y,z)和预测的观测角度αˆz来构建估计的偏航角度ˆθ。3D边界框的8个角点表示也根据解耦的概念被划分为三个不同的组,即方向、尺寸和位置。最终的损失函数可以表示为:

        其中i代表我们在3D回归分支中定义的组数。多步解耦变换将每个参数组对最终损失的贡献进行分割。在第5.2节中,我们展示了这种方法显著提高了检测准确性。

        这段描述讨论了公式(5)中的内容。公式中使用真实位置和预测的观测角度来构建估计的偏航角度。3D边界框的8个角点表示被划分为方向、尺寸和位置三个组,以实现解耦的效果。最终的损失函数由分类损失Lcls和每个组的回归损失Lreg组成。多步解耦变换将不同参数组对最终损失的贡献分离开来。实验结果表明,这种方法显著提高了检测的准确性。

总结

在单目图像中估计物体位置的挑战,主要是由于空间信息的不完整性。通过使用两种不同的距离测量方法评估了SMOKE的深度估计。在图5中,展示了按照10米间隔划分的深度误差。如果检测到的2D边界框与任何一个真实物体的IoU大于0.7,则计算误差。如图所示,随着距离增加,深度估计误差也增加。这种现象在许多基于单目图像的检测算法中都观察到,因为小物体具有较大的距离分布。我们将我们的方法与两个其他方法Mono3D [3]和3DOP [4]在相同的验证集上进行比较。曲线显示我们提出的SMOKE方法在深度误差上明显优于两种方法。特别是在距离大于40m时,我们的方法实现了更稳健和准确的深度估计。

2D物体检测方面,图3中展示了在KITTI官方测试集上的2D检测性能。尽管在SMOKE网络中没有直接回归2D边界框,但我们观察到我们的方法在2D物体检测任务上实现了可比较的结果。2D检测框是通过在图像平面上围绕投影的3D边界框的最小矩形获得的。与其他遵循2D→3D结构的方法不同,我们的方法以3D→2D的方式反向进行了这个过程,并且在许多现有方法中表现出色。这清楚地表明,3D物体检测提供了比2D检测更丰富的信息,因此2D提议对于3D检测是多余且不需要的。此外,与其他方法相比,我们的方法不使用额外的数据、复杂的网络和高分辨率输入

  • 12
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值