摘要:
翻译
在这项工作中,我们提出了一种高效、准确的单目3D单次检测框架。大多数成功的 3D 检测器将 3D 边界框到 2D 框的投影约束作为重要组件。2D 盒的四个边仅提供四个约束,并且 2D 检测器的误差很小,性能会急剧下降。与这些方法不同的是,我们的方法预测了图像空间中三维边界框的九个透视关键点,然后利用三维和二维透视的几何关系来恢复三维空间中的维度、位置和方向。在这种方法中,即使对关键点的估计非常嘈杂,也可以稳定地预测物体的属性,这使我们能够以较小的架构获得快速的检测速度。训练我们的方法仅使用对象的 3D 属性,不需要外部网络或监督数据。我们的方法是第一个用于单目图像3D检测的实时系统,同时在KITTI基准测试中实现了最先进的性能。
代码将于 https://github.com/Banconxuan/RTM3 发布
摘要总结:
- 与传统方法不同,该方法不是直接利用 2D 边界框到 3D 边界框的投影关系,而是预测 3D 边界框在图像空间中的 9 个透视关键点。这种方法更加稳定,即使关键点预测存在噪声,也能准确恢复 3D 属性。
- 该方法只需要利用 3D 物体属性进行训练,不需要外部网络或额外的监督数据,训练更加简单高效。
- 该方法实现了真正的实时性能,在 KITTI 基准测试中达到了最先进水平,在速度和准确度方面都有突出表现。
- 该方法只使用了常规的卷积和上采样操作,以及简单的几何模块(SVD),易于部署和加速,具有较小的模型体积。
介绍:
翻译
3D目标检测是自动驾驶中场景感知和运动预测的重要组成部分[2,10]。目前,大多数强大的3D探测器都严重依赖3D激光雷达激光扫描仪,因为它可以提供场景位置[9,48,43,31]。然而,基于激光雷达的系统价格昂贵,不利于嵌入到当前的车辆形状中。相比之下,单目相机设备更便宜、更方便,这使得它在许多应用场景中越来越受到关注[7,28,42]。在本文中,范围我们的研究在于仅从单目RGB图像进行3D物体检测。
单目三维目标检测方法根据训练数据类型大致可分为两类:一类利用复杂特征,如实例分割、车辆形状先验甚至深度图,在多级融合模块中选择最佳方案[7,8,42]。这些特性需要额外的注释工作来训练一些独立网络,这将在训练和推理阶段消耗大量的计算资源。另一个仅使用2D边界框和3D对象的属性作为监督数据[35,4,22,44]。在这种情况下,一个直觉的想法是建立一个深度回归网络来直接预测对象的 3D 信息。由于搜索空间很大,这可能会导致性能瓶颈。出于这个原因,最近的工作已经明确指出,从3D盒子中应用几何约束顶点到2D盒边,以优化或直接预测对象参数[30,25,4,22,28]。然而,2D 边界框的 4 条边仅提供 4 个恢复 3D 边界框的约束,而 3D 边界框的每个顶点可能对应于 2D 框中的任何边,这将需要 4,096 次相同的计算才能得到一个结果 [28]。同时,对2D盒的强烈依赖会导致3D检测性能急剧下降,而对2D探测器的预测甚至有轻微的误差。因此,这些方法大多利用两级检测器[12,11,34]来保证二维盒预测的准确性,这限制了检测速度的上限。
当前缺陷
- 复杂特征和多级融合:一些方法利用复杂特征,如实例分割、车辆形状先验和深度图等,在多级融合模块中选择最佳方案。然而,这些特征需要额外的注释工作来训练独立网络,并在训练和推理阶段消耗大量的计算资源。
- 深度回归网络:另一些方法仅使用2D边界框和3D对象的属性作为监督数据,建立深度回归网络来直接预测对象的3D信息。然而,由于搜索空间很大,这可能导致性能瓶颈。
- 几何约束和顶点匹配:最近的工作提出从3D边界框中应用几何约束将顶点匹配到2D边界框边,以优化或直接预测对象参数。然而,2D边界框的四条边仅提供有限的约束条件,而每个3D边界框顶点可能对应于2D框中的任何边,这需要大量的计算来得到结果。
- 二维框的依赖和性能下降:对2D边界框的强烈依赖会导致3D检测性能急剧下降,即使对于2D探测器的轻微误差也会造成影响。为了保证二维框预测的准确性,很多方法采用两级检测器,但这限制了检测速度的上限。
在本文中,我们提出了一种高效、准确的单目3D检测框架,该框架适用于不依赖2D探测器的3D检测。该框架可分为两个主要部分,如图1所示。首先,我们执行一个阶段全卷积架构来预测 9 个 2D 关键点,这些关键点是 8 个顶点和 3D 边界框中心点的投影点。这 9 个关键点在 3D 边界框上提供了 18 个几何约束。受CenterNet[47]的启发,我们对8个顶点和中心点之间的关系进行建模,以解决关键点分组和顶点顺序问题。采用SIFT、SUFT等传统关键点检测方法[26,1]计算图像金字塔求解尺度不变问题。CenterNet 使用类似的策略作为后处理步骤,以进一步提高检测准确性,从而减慢推理速度。需要注意的是,二维目标检测中的特征金字塔网络(FPN)[23]不适用于关键点检测网络,因为在小尺度预测的情况下,相邻的关键点可能会重叠。我们提出了一种新颖的多尺度金字塔关键点检测来生成尺度空间响应。关键点的最终激活图可以通过软权金字塔获得。给定 9 个投影点,下一步是最小化由对象的位置、尺寸和方向参数化的 3D 点透视的重新投影误差。将重投影误差表述为se3空间中多元方程的形式,可以准确高效地生成检测结果。我们还讨论了不同的先验信息对基于关键点的方法的影响,例如维度、方向和距离。获取此信息的前提条件是不要增加过多的计算量,以免影响最终的检测速度。我们将这些先验和重投影误差项建模为整体能量函数,以进一步改进 3D 估计。
根据文中的描述,基于透视投影几何约束优化 3D 边界框参数的具体原理如下:
透视投影模型:
3D 物体的 8 个顶点和中心点在 2D 图像上有对应的投影点这些投影点与 3D 坐标之间存在透视投影关系,可以通过相机参数表示
重投影误差优化:
给定 9 个 2D 投影关键点(8 个顶点 + 1 中心点)目标是找到 3D 物体的位置、尺寸和朝向参数,使得 3D 点投影到 2D 平面的误差最小可以将这个过程建模为一个优化问题,最小化 3D 点在 2D 平面的重投影误差
几何约束建模:
由于 9 个关键点提供了 18 个几何约束,可以帮助更好地约束 3D 属性的估计这些几何约束包括物体尺寸、方向和中心点位置等先验信息将这些先验约束和重投影误差项整合到一个整体的能量函数中优化
高效优化求解:
将重投影误差表述为 SE(3) 空间中的多元方程形式利用高效的数值优化算法,可以快速准确地求解 3D 边界框参数
kitti相机参数补充
calib文件中P0, P1, P2, P3 是相机矩阵,描述了从3D世界坐标系到2D图像坐标系的投影变换关系。它们的差异主要体现在:
- P0是默认的相机矩阵
- P1是左侧相机的相机矩阵
- P2和P3分别是前后两个相机的相机矩阵
在使用KITTI数据集进行计算机视觉任务时,P0相机参数矩阵的主要用途如下:
3D到2D投影:
利用P0矩阵,可以将3D世界坐标系下的点投影到2D图像平面上。公式为: x = P0 * X,其中 x = [u, v, 1]^T 是图像平面上的2D坐标, X = [X, Y, Z, 1]^T 是3D世界坐标。这个投影变换是许多3D视觉任务的基础,如3D物体检测、3D重建等。
相机标定:
P0矩阵包含了相机的内参(焦距、主点等)和外参(位姿)信息。利用这些参数,可以对相机进行标定,获得相机的几何特性。相机标定是多传感器融合、3D感知等任务的前提条件。
3D测量:
结合P0矩阵和双目/RGB-D相机数据,可以进行3D测量和重建。通过三角测量等方法,可以估计出3D场景中点的深度信息。这为诸如障碍物检测、场景理解等任务提供了重要输入。
2D-3D对应:
P0矩阵可用于建立2D图像特征和3D世界坐标之间的对应关系。这在3D目标检测、SLAM等任务中很有用,可以将2D观测与3D场景进行联系。
创新点
两阶段框架设计:
第一阶段使用全卷积网络预测 9 个 2D 关键点,包括 3D 边界框的 8 个顶点和中心点。
这 9 个关键点提供了 18 个几何约束,有助于后续准确恢复 3D 物体属性。
关键点检测创新:
建模了 8 个顶点和中心点之间的关系,解决了关键点分组和顺序问题。
采用了多尺度金字塔关键点检测的方式,可以更好地处理不同尺度的物体。
基于关键点的 3D 属性估计:
通过最小化 3D 点透视的重投影误差,高效准确地估计物体的位置、尺寸和朝向。
融合了物体尺寸、方向和距离等先验信息,进一步改进了 3D 属性估计。
速度和精度兼顾:
该方法不依赖 2D 检测器,避免了 2D 误差传播,保证了整体检测的高速和准确性。
相比传统方法,该方法能够在保持高精度的同时实现真正的实时性能。
相关工作
3D检测可按数据类型分为两组:激光雷达和基于图像的方法。基于LiDAR的方法。基于激光雷达的系统可以在3D场景中提供物体表面的精度和可靠的点云。因此,最近的大多数3D目标检测都以不同的表示方式使用它来获得心脏状态模型[48,3,9,36,21]。用于基于图像的 3D 对象检测的额外数据或网络。在过去的几年里,许多研究以基于图像的方法开发了3D检测,因为相机设备更方便,更便宜。为了补充基于图像的检测中缺乏的深度信息,以前的大多数方法都严重依赖独立网络或其他标记数据,例如实例分割、立体、线框模型、CAD 先验和深度,如表所示。1.其中,单目3D检测是一项更具挑战性的任务,因为很难从单个图像中获得可靠的3D信息。第一个例子[7]列举了来自预定义空间的大量3D建议,在这些空间中,对象可能显示为几何启发式。然后,它需要其他复杂的先验,例如形状、实例分割、上下文特征,以过滤掉可怕的提案,并通过分类器对它们进行评分。为了弥补深度的不足,[42]嵌入了一个预先训练的独立模块来估计视差和3D点云。视差图将前视图表示连接起来,以帮助 2D 提案网络和 3D 检测,通过融合 RoI 池化和点云后的提取特征来增强。作为后续,[27]结合二维探测器和单目深度估计模型,得到了二维箱体和相应的点云。通过注意力机制将图像特征和3D点信息聚合后,通过PointNet[32]回归得到最终的3D盒子,在单目图像中达到最佳性能。直观地说,这些方法肯定会提高检测的准确性,但额外的网络和注释数据将导致更多的计算和劳动密集型工作。
本章总结
1. 3D 检测方法可以分为两大类:基于激光雷达的方法和基于图像的方法。
2. 基于激光雷达的方法利用激光雷达提供的精确 3D 点云数据,能够更好地建立3D场景模型。这类方法在很多研究中被广泛使用。
3. 相比之下,基于图像的 3D 检测方法虽然更便宜和普及,但缺乏深度信息。因此,之前的大多数方法都依赖于额外的数据或网络,如实例分割、立体视觉、线框模型等,以弥补深度信息的缺失。
4. 单目 3D 检测是一个更具挑战性的任务,因为很难从单张图像中获得可靠的 3D 信息。一些方法尝试通过几何启发式和复杂的先验知识来识别和过滤 3D 提议。
5. 最近的一些方法结合 2D 检测和单目深度估计,通过注意力机制聚合图像特征和 3D 点云信息,取得了不错的单目 3D 检测性能。
6. 虽然这些基于图像的方法可以提高检测精度,但需要额外的网络和标注数据,会增加计算量和人力成本。(研究意义)
单目 3D 物体检测中的仅图像。最近的工作试图充分探索RGB图像在3D检测中的效力。它们中的大多数包括几何约束和 2D 检测器,以明确描述对象的 3D 信息。[28] 使用 CNN 估计从 2D 盒子中提取特征的尺寸和方向,然后提出使用 3D 点和 2D 盒子边缘之间透视关系的几何约束来获取对象的位置。大多数基于图像的检测方法要么在细化步骤中,要么在3D物体上直接计算[22,4]。在这个约束中,我们只知道某些 3D 点被投影到 2D 边上,但相应的关系和投影的确切位置并不明确。因此,它需要详尽枚举 8 4 = 4096 配置来确定最终的对应关系,并且只能提供 4 个约束,这对于 9 个参数的完全 3D 表示是不够的。这导致需要估计其他先前的信息。然而,二维边界框中可能存在的不准确性可能会导致具有少量约束的严重不准确的解决方案。因此,这些方法大多通过两级探测器获得更精确的2D盒,很难获得实时速度。
关键点在单目三维目标检测中的作用。人们认为,通过从车辆关键点推断完整的形状,可以提高对被遮挡和截断对象的检测准确性。关键点代表规则形状的车辆,以线框模板的形式呈现,该模板是从大量的CAD模型中获得的。为了训练关键点检测网络,他们需要重新标注数据集,甚至使用深度图来增强检测能力。与我们的工作最相关的是[14],它也将线框模型视为先验信息。此外,它通过四个不同的网络共同优化2D框、2D关键点、3D方向、尺度假设、形状假设和深度。这在运行时间上存在一定的限制。
与以往的工作相比,我们将3D检测重新定义为粗略关键点检测任务。我们不是基于现成的2D检测器或其他数据生成器来预测3D框,而是构建一个网络来预测由顶点和3D边界框中心投影的9个2D关键点,同时最小化重投影误差以找到最优解。
分析
1.首先,提到了使用关键点可以改善对被遮挡和截断目标的检测准确性。通过推断完整形状,关键点可以提供更多的信息来帮助准确地检测目标,特别是在存在遮挡或截断的情况下。
2.其次,关键点表示车辆的规则形状,并以线框模板的形式呈现。这个模板是通过大量的CAD模型获得的。为了训练关键点检测网络,需要重新标注数据集,并可能使用深度图来增强检测能力。这说明训练关键点检测网络可能需要更多的工作和资源。
3.接着,提到了与该工作相关的其他方法。引用的[14]工作也考虑将线框模型作为先验信息,并使用四个不同的网络来优化多个参数。然而,这种方法在运行时间上存在一定的限制。
4.最后,与之前的工作相比,本文提出了一种重新定义的方法。它将3D检测任务重新表述为粗略关键点检测任务。而不是依赖于现有的2D检测器或其他数据生成器来预测3D框,而是通过构建一个网络来预测9个2D关键点,并最小化重投影误差来寻找最优解。
建议的方法
在本节中。我们首先介绍关键点检测的整体架构。然后,我们详细介绍了如何从生成的关键点中找到3D车辆。
关键点检测网络
我们的关键点检测网络仅将RGB图像作为输入,并从3D边界框的顶点和中心生成透视点。如图2所示,它由主干、关键点特征金字塔和检测头三个部分组成。主架构采用单阶段策略,与无锚点二维目标检测器[38,16,47,19]共享相似的布局,这使我们能够获得较快的检测速度。网络的详细信息如下。
骨干为了在速度和准确性之间进行权衡,我们使用两种不同的结构作为主干:ResNet18[13] 和 DLA-34 [45]。所有型号都采用单个 RGB 图像 I ∈,并以因子 S = 4 对输入进行下采样。ResNet-18 和 DLA-34 构建用于图像分类网络,最大下采样因子为 ×32。我们通过三个双线性插值和 1 × 1 卷积层对瓶颈进行三次上采样。在上采样层之前,我们将低层的相应特征图连接起来,同时添加一个 1 × 1 卷积层以实现通道降维。经过三个上采样层后,通道分别为 256、128、64.
主干网络创新点:
1.通过使用ResNet-18和DLA-34这两种不同的结构,你可以比较它们在单目三维目标检测任务中的性能表现,并选择最适合你的需求的模型。
2.在进行上采样时,你使用了三个双线性插值和1×1卷积层对瓶颈进行三次上采样,通过逐步上采样,你可以增加特征图的分辨率,并利用不同层级的特征进行更准确的目标检测。
关键点特征金字塔网络(Keypoint Feature Pyramid Network,KFPN)是一种用于检测尺度不变关键点的新方法,与在不同金字塔层级上检测多尺度2D框的特征金字塔网络(Feature Pyramid Network,FPN)不同。在图3中展示了KFPN的结构。由于图像中的关键点在尺寸上没有差异,因此使用FPN进行关键点检测并不适用。
KFPN的工作原理如下:假设我们有F个尺度的特征图,首先将每个尺度f(其中1 < f < F)的特征图调整回最大尺度的大小,得到调整后的特征图ˆf1<f<F。然后,通过softmax操作生成软权重,用于表示每个尺度的重要性。最终的尺度空间分数图Sscore通过线性加权求和来获得。具体而言,可以定义如下:
Sscore = Σf=1 to F (ˆfw * w),
其中,ˆfw是调整后的特征图,w是对应尺度的权重。
KFPN的目标是在点空间中检测尺度不变的关键点。通过将不同尺度的特征图调整到相同的大小,并使用软权重进行加权求和,KFPN可以综合多个尺度的特征信息,并生成尺度空间分数图来表示关键点的位置和尺度信息。
KFPN在关键点上表现更好的原因可以从以下几个方面解释:
尺度不变性:关键点在图像中的尺寸是相同的,不受物体大小的影响。传统的FPN主要关注多尺度的目标检测,而对于尺度一致的关键点检测任务,将不同尺度的特征图进行上采样操作可能会引入不必要的尺度变化,降低关键点检测的准确性。KFPN通过特定的尺度调整和加权求和操作,保持了关键点的尺度一致性,更适合处理关键点检测任务的特点。
综合多尺度信息:KFPN利用特征金字塔结构,综合了不同尺度的特征信息。关键点通常具有多个尺度上的特征表示,例如边缘、角点等。KFPN通过将不同尺度的特征图调整到相同的大小,并使用软权重进行加权求和,能够更好地综合多尺度的特征信息,提高了关键点检测的准确性。
高分辨率特征:关键点检测通常需要对图像进行细粒度的分析,对于低分辨率的特征图可能无法捕捉到关键点的细节信息。KFPN通过特征金字塔结构和尺度调整操作,保持了高分辨率的特征图,能够更好地捕捉到关键点的细节信息,提高了检测的准确性
检测头 检测头由三个基本组件和六个可选组件组成,可以任意选择,以提高 3D 检测的精度,只需少量计算消耗。受CenterNet[47]的启发,我们将一个关键点作为连接所有功能的主要中心。由于在截断的情况下,物体的 3D 投影点可能会超过图像边界,因此 2D 框的中心点将是选择更合适。热图可以定义为 ,C为物体的类别。
另一个基本组件是热图 ,由顶点和 3D 边界框中心投影的九个透视点组成。对于一个物体的关键点关联,我们还从主中心回归
的局部偏移量 Vc 作为指示。最接近 Vc 坐标的 V 关键点被视为一组一个对象。
检测头总结
检测头由以下三个基本组件和六个可选组件组成:
基本组件:
主中心点热图 M ∈ [0, 1]^(H/S x W/S x C),C为类别数。用于连接所有特征。
9个透视点热图 V ∈ [0, 1]^(H/S x W/S x 9),表示3D边界框顶点和中心点的2D投影。
局部偏移 Vc ∈ R^(H/S x W/S x 18),从主中心点指示关键点位置。
可选组件:
可以任意选择6个可选组件来提高3D检测精度,同时消耗少量计算资源。
关键点关联:
通过Vc回归的局部偏移,将V热图中距离最近的关键点组成一个目标的关键点集合。
除了9个关键点可以提供18个约束来恢复3D信息外,作者还提供了以下几种额外的先验信息:
- 中心点偏移 Mos ∈ R^(H/S x W/S x 2) 和顶点偏移 Vos ∈ R^(H/S x W/S x 2),用于补充热图中的离散化误差。
- 3D物体尺寸 D ∈ R^(H/S x W/S x 3),由于变化较小,较易预测。
- 基于Multi-Bin的方法预测物体旋转角度 O ∈ R^(H/S x W/S x 8),使用两个bin分别预测余弦和正弦偏移。
- 预测3D边界框中心的深度 Z ∈ R^(H/S x W/S x 1),可用于加速后续求解过程。
训练 关键点训练策略的所有热图都遵循[47,19]。损失解决了正负样品与焦点损失的不平衡[24]:
这里的损失函数使用Focal Loss.
其中,K 是不同关键点的通道数,K = C 是主中心的通道数,K = 9 是顶点的通道数。N 是图像中主中心或顶点的数量,α 和 β 是用于减少负样本和简单正样本损失权重的超参数。在所有实验中,我们按照[47, 19]设定 α = 2 和 β = 4。
pkxy 可以由高斯核 pxy = exp(-x^2-y^2 / (2σ^2)) 来定义,其中 x 和 y 是以真实关键点 p˜xy 为中心的坐标。对于 σ,我们在训练数据中找到2D框的最大面积 Amax 和最小面积 Amin,并设置两个超参数 σmax 和 σmin。然后,我们定义 σ = A( (σmax-σmin) / (Amax-Amin) ),其中 A 是物体的大小。
对于尺寸和距离的回归,我们将残差项定义为:
3D 边界框估计
考虑一张图像 I,一组 i = 1...N 的物体由9个关键点和其他可选的先验信息表示,这些信息由我们的关键点检测网络给出。我们将这些关键点表示为 kpcij,其中 j ∈ 1...9,维度表示为 Dbi,方向表示为 ˆθi,距离表示为 Zbi。相应的3D包围框 Bi 可以由其旋转 Ri(θ),位置 Ti = [Tx, Ty, Tz]T 和尺寸 Di = [hi, wi, li]T 来定义。
我们的目标是估计最佳拟合相应2D关键点 kpcij 的包围框 Bi 的3D位置和旋转。这可以通过最小化3D关键点和2D关键点的重投影误差来解决。我们将此问题及其他先验误差形式化为非线性最小二乘优化问题:
这个公式描述了整个优化过程的目标函数。它由三个误差项组成:
Camera-Point 误差项 ecp:
表示 2D 关键点投影坐标和检测网络输出的关键点坐标之间的差异使用了协方差矩阵 Σ 对误差进行加权,体现了关键点检测的置信度
Dimension-Prior 误差项 ed:
表示优化得到的尺寸 Di 和检测网络给出的先验尺寸 Dbi 之间的差异加权系数为 ωd = 1
Rotation-Prior 误差项 er:
表示优化得到的旋转 Ri 和检测网络给出的先验旋转 θ̂i 之间的差异加权系数为 ωr = 1
目标函数是在 R、T、D 三个变量上的加权和最小化。通过这个优化过程,可以得到最终的 3D 边界框参数 R*、T*、D*。值得注意的是,使用了检测网络的输出作为先验信息来约束优化过程,这有助于提高优化的速度和鲁棒性。
Σi = diag [Softmax(V(kpc1:8i)), M(kpc9i)]
其中:
- kpc1:8i 表示 8 个 2D 关键点的投影坐标
- kpc9i 表示 3D 物体中心的投影坐标
- V(.) 表示从关键点热图中提取的置信度
- M(.) 表示从物体中心热图中提取的置信度
- Softmax 用于将置信度归一化到 [0, 1] 区间
- diag 将这些置信度组成对角线矩阵,作为 ecp 的加权系数 Σ
- 这个协方差矩阵的作用是给 Camera-Point 误差加权,反映了关键点检测的置信度。
齐次坐标表示:
- 作者定义了 8 个顶点和 3D 中心点的齐次坐标 P_i^3D。
- 其中 P_i^3D = diag(Di) * Cor
- Cor 是一个 4x9 的矩阵,其中包含了 8 个顶点和 3D 中心点的归一化坐标。
Cor 矩阵的具体形式:
- Cor 矩阵的第一行表示 x 坐标,第二行表示 y 坐标,第三行表示 z 坐标,第四行都是 1 表示齐次坐标。
- 这些坐标值在 -1 到 1 之间,是经过归一化的。
- 这样定义的好处是,通过简单地缩放 Cor 矩阵,就可以得到不同尺寸的 3D 物体模型。
整体意义:
- 作者将物体的 3D 模型表示成由 8 个顶点和 1 个中心点组成的齐次坐标集合。
- 这种表示方式可以很方便地表示不同尺寸的物体,并且便于后续的优化计算。
这个 Cor 矩阵给出了一个标准的 3D 物体模型,通过缩放 Di 就可以得到任意大小的 3D 物体的顶点坐标。
这样定义 Pi3D 之后,就可以将其投影到 2D 图像平面上,并计算与检测的 2D 关键点之间的距离(即 Camera-Point 误差)。这个误差项将在后续的优化过程中进行最小化。
根据给定的相机内参矩阵 K,可以将 3D 物体顶点和中心坐标 Pi3D 投影到 2D 图像平面上,得到对应的 2D 点坐标 kpi:
根据公式 (10),我们可以将 3D 物体的顶点和中心坐标 Pi3D 投影到 2D 图像平面上,得到对应的 2D 点坐标 kpi:
kpi = (1 / si) * K * [R T; 0 1] * diag(Di) * Cor
= (1 / si) * K * exp(ξ^∧) * diag(Di) * Cor其中:
- si 是一个尺度因子
- R 和 T 分别是物体的旋转矩阵和平移向量
- ξ 是旋转参数的向量表示,exp(ξ^∧)将其映射到 SE(3) 空间
这个公式描述了如何将 3D 物体的顶点和中心坐标投影到 2D 图像平面上。具体步骤包括:
- 使用相机内参矩阵 K 进行投影变换
- 应用物体的旋转 R 和平移 T
- 根据物体尺寸 Di 进行缩放
- 使用固定的 Cor 矩阵得到顶点和中心的相对坐标
这样得到的投影坐标 kpi 应该尽可能地拟合检测网络得到的 2D 关键点
最小化相机点误差需要 se3 空间中的雅可比。
∂ecp/∂δξ 部分:
这个部分表示 Camera-Point 误差对相机姿态增量 δξ 的雅可比矩阵
它由两部分组成:
- 第一部分是一个 3x6 的矩阵,包含相机内参 fx, fy 和 3D 点 P 的坐标 X, Y, Z
- 第二部分是一个 6x6 的矩阵,包含单位矩阵 I 和反对称矩阵 -P^∧
∂ecp/∂Di 部分:
- 这个部分表示 Camera-Point 误差对物体尺寸 Di 的雅可比矩阵
- 它由三部分组成:
第一部分是和 ∂ecp/∂δξ 中的第一部分相同
第二部分是旋转矩阵 R
第三部分是 Cor 矩阵的第 col 列,Cor 是一个 9x9 的对角矩阵
P' 的计算:
P' = [X', Y', Z']^T = exp(ξ^∧) * P
这里使用了 SE(3) 空间中的指数映射将相机姿态增量 ξ 应用到 3D 点 P 上,得到新的 3D 点 P'
总的来说,这个公式描述了如何计算 Camera-Point 误差在相机姿态和物体尺寸上的雅可比矩阵。这些雅可比矩阵可以用于基于优化的 3D 物体姿态和尺寸估计算法中。需要注意的是,这些计算需要相机内参 fx, fy 以及 3D 点 P 的坐标信息。
Dimension-Prior:
ed = Dbi - Di 表示物体尺寸的先验误差。
Dbi 是通过物体检测网络预测的尺寸,Di 是需要优化的实际尺寸。
这个先验误差 ed 可以作为优化目标函数的一部分,用于约束物体尺寸的估计。
Rotation-Prior:
er = log(R^-1 * R(θ̂))∨_se3 表示旋转的先验误差。
R 是相机当前的旋转矩阵,R(θ̂) 是预测的旋转矩阵。
log(·)∨_se3 表示将旋转误差映射到 SE(3) 空间的切空间。
这个先验误差 er 同样可以作为优化目标函数的一部分,用于约束相机旋转的估计。
优化算法:
这些多元方程可以通过 Gauss-Newton 或 Levenberg-Marquardt 算法在 g2o 库中求解。
这种优化策略需要一个好的初始值,否则可能收敛到局部最优解。
初始化:
作者采用了关键点检测网络生成的先验信息作为初始值。这个初始化非常重要,可以大大提高检测速度。