单目 3D 目标检测使用 RGB 图像来预测目标 3D 边界框。由于 RGB 图像中缺少关键的深度信息,因此该任务从根本上说是不适定的。然而在自动驾驶中,汽车是具有(大部分)已知形状和大小的刚体。那么一个关键的问题是如何有效地利用汽车的强大先验,在传统 2D 对象检测之上来推断其对应的 3D 边界框。
传统的 2D 对象检测具有中心(x,y)和大小(w,h)的 4 个自由度(DoF),自动驾驶环境下目标通常具备 7 个自由度:3D 物理尺寸(w、h、l)、3D 中心位置(x、y、z)和偏航。请注意,滚动和俯仰通常假定为零。现在的问题是,我们如何从 4 自由度对象中恢复 7 自由度对象?
Deep3DBox 作为开创性工作(使用深度学习和几何的 3D 边界框估计,CVPR 2017)提出了回归观察角度(或局部偏航)和 2D 边界框所包含的图像块中的 3D 对象大小(w、h、l)。局部偏航和 3D 对象大小都与对象外观密切相关,因此可以从裁剪图像块中推断出来。为了完全恢复 7 DoF,我们只需要用三个未知数 (x, y, z) 推断 3D 位置。百度阿波罗所采用的单目 3D 方案也是基于此工作进行相关改进。
将 2D 物体提升到 3D 表示需要利用 3D 边界框的透视投影与其 2D 检测窗口紧密贴合的事实。此约束强制至少一个长方体顶点应投影到 2D 框的四个边中的每一边。
跟随 Deep3DBox 的脚步,以下论文也明确遵循相同的准则。他们的贡献是添加不同形式的第二阶段以微调生成的 3D 长方体,本文稍后将详细讨论。
由紧约束构成的四个方程可以写成如下。 对于每个由左上角和右下角的坐标参数化的 2D 边界框,(x_min, y_min, x_max, y_max),我们可以得到:
在上面的等式中,我已经注释了每个矩阵变量的大小。X(1) 到 X(4) 代表投影在 2D 边界框边界上的 4 个选定顶点。()_x 函数采用齐次坐标的 x 分量,因此它是第一个和第三个分量之间的比率。同样的逻辑适用于 ()_y 函数。有3个未知数和4个方程,所以是一个超定问题。
接下来我们来讨论的一件事是如何从落在 2D bbox 四个边上的 8 个长方体顶点中选择 4 个。Deep3DBox 的原始论文中有一段很长的论述,在合理的假设下,合理配置的数量可以从 8⁴ 减少到 64。Shift R-CNN有类似的结论,但得出这个数字的推理略有不同。
就个人而言,我发现级联几何约束的解释最容易理解。
因此,我们总共有 4x4x4=64 个可能的配置。一旦 64 个配置通过上述 4 个方程,64 个解决方案将根据拟合误差(如 Deep3DBox、FQNet)来进行排序,或者根据Iou分数进行排序(如 Shift R-CNN),其IOU是根据拟合长方体的 8 个投影顶点的最紧密 bbox 与 2D bbox计算。
几何约束的实现代码可参考:
https://github.com/skhadem/3D-BoundingBox/blob/master/library/Math.py
上述紧约束方法通过将 3D proposal紧凑地放置在 2D 检测框中来推断 3D 姿态和位置。这种方法在理论上听起来很完美,但它有两个缺点:
为了解决这个问题,有几篇论文跟进了 Deep3DBox 提出的上述工作流程,并用第二个细化阶段对其进行了扩展。
除了上述严格约束之外,实际上还有一种更快的方法来估计车辆的 3D 位置,只需基于 2D 检测框或相关关键点的大小即可。
利用2D/3D投影中的几何相似性,如果我们可以在图像平面上找出三个关键点在 3D 长方体上的投影位置,我们就可以通过简单的几何相似原理来估计距离。假设我们有顶面、底面和3D长方体中心的投影(如上图所示),我们可以得到通过主点的光线与通过3D长方体中心的光线之间的光线夹角。这个射线角也叫方位角,是连接局部偏航和全局偏航的关键。确切地说,应该有两个光线角度分量,一个在u-或x-方向,一个在v-或y-方向。
然后根据几何相似性,我们有 f/z = H_p/H,其中 H_p 是图像平面上下表面中心投影之间的 v 差异(以像素为单位),H 是 3D 物体的高度(以米为单位) , f 是焦距(以像素为单位),z 是纵向距离(以米为单位)。有了光线角度和 z,我们可以进行坐标变换并恢复物体的 3D 位置。
这正是Cascade Geometric Constraint 在推断初始 3D 位置时所做的(在将其提供给高斯-牛顿算法以求解约束方程之前),也最实用和可靠的解决方案。
此外,其他几篇论文也使用了关于汽车尺寸和关键点的强大先验知识来估计深度。
[1] A Mousavian et al, Deep3DBox: 3D Bounding Box Estimation Using Deep Learning and Geometry (2017), CVPR 2017
[2] L Liu et al, FQNet: Deep Fitting Degree Scoring Network for Monocular 3D Object Detection (2019), CVPR 2019
[3] A Naiden et al, Shift R-CNN: Shift R-CNN: Deep Monocular 3D Object Detection with Closed-Form Geometric Constraints (2019), TCIP 2019
[4] J Fang et al, Cascade Geometric Constraint: 3D Bounding Box Estimation for Autonomous Vehicles by Cascaded Geometric Constraints and Depurated 2D Detections Using 3D Results (2019), ArXiv, Sept 2019
[5] J Ku et al, MonoPSR: Monocular 3D Object Detection Leveraging Accurate Proposals and Shape Reconstruction (2019), CVPR 2019
[6] B Li et al, GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving (2019), CVPR 2019
[7] I Barabanau, MonoGR2: Monocular 3D Object Detection via Geometric Reasoning on Keypoints (2019), May 2019