【单目3D】在自动驾驶中将 2D 物体检测提升到 3D

news2025/1/11 5:41:40

Lifting 2D object detection to 3D in autonomous driving

单目 3D 目标检测使用 RGB 图像来预测目标 3D 边界框。由于 RGB 图像中缺少关键的深度信息,因此该任务从根本上说是不适定的。然而在自动驾驶中,汽车是具有(大部分)已知形状和大小的刚体。那么一个关键的问题是如何有效地利用汽车的强大先验,在传统 2D 对象检测之上来推断其对应的 3D 边界框。
在这里插入图片描述

传统的 2D 对象检测具有中心(x,y)和大小(w,h)的 4 个自由度(DoF),自动驾驶环境下目标通常具备 7 个自由度:3D 物理尺寸(w、h、l)、3D 中心位置(x、y、z)和偏航。请注意,滚动和俯仰通常假定为零。现在的问题是,我们如何从 4 自由度对象中恢复 7 自由度对象?
3D

Deep3DBox 作为开创性工作(使用深度学习和几何的 3D 边界框估计,CVPR 2017)提出了回归观察角度(或局部偏航)和 2D 边界框所包含的图像块中的 3D 对象大小(w、h、l)。局部偏航和 3D 对象大小都与对象外观密切相关,因此可以从裁剪图像块中推断出来。为了完全恢复 7 DoF,我们只需要用三个未知数 (x, y, z) 推断 3D 位置。百度阿波罗所采用的单目 3D 方案也是基于此工作进行相关改进。
在这里插入图片描述

将 2D 物体提升到 3D 表示需要利用 3D 边界框的透视投影与其 2D 检测窗口紧密贴合的事实。此约束强制至少一个长方体顶点应投影到 2D 框的四个边中的每一边。

跟随 Deep3DBox 的脚步,以下论文也明确遵循相同的准则。他们的贡献是添加不同形式的第二阶段以微调生成的 3D 长方体,本文稍后将详细讨论。

  • FQNet: Deep Fitting Degree Scoring Network for Monocular 3D Object Detection (CVPR 2019)
  • Shift R-CNN: Shift R-CNN: Deep Monocular 3D Object Detection with Closed-Form Geometric Constraints (TCIP 2019)
  • Cascade Geometric Constraint: 3D Bounding Box Estimation for Autonomous Vehicles by Cascaded Geometric Constraints and Depurated 2D Detections Using 3D Results (ArXiv, Sept 2019)

The 2D/3D tight constraint

由紧约束构成的四个方程可以写成如下。 对于每个由左上角和右下角的坐标参数化的 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有类似的结论,但得出这个数字的推理略有不同。
在这里插入图片描述
就个人而言,我发现级联几何约束的解释最容易理解。

  1. 选择汽车长方体的四个侧面之一作为面向观察者的一侧(例如,5-4-0-1 汽车的前侧作为上图中面向观察者的一侧)。请注意,这仅取决于局部偏航或观察角度。
  2. 如上所示选择四个视点之一(例如左侧示例与四个视点中的左上角匹配)。
  3. 对于上面的两种情况,接触 2D bbox 的顶部和底部的顶点是固定的,但是我们仍然有四种选择,关于长方体的两个垂直边缘上的两个顶点选择哪个来符合 bbox 的左侧和右侧2D bbox。对于底部的两种情况,情况正好相反——接触 2D bbox 左右两侧的顶点是固定的,但我们有四种关于顶部和底部的选择。

因此,我们总共有 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 姿态和位置。这种方法在理论上听起来很完美,但它有两个缺点:

  1. 它依赖于对 2D bbox 的准确检测——如果 2D bbox 检测存在中等误差,则估计的 3D 边界框可能存在较大误差。
  2. 其优化纯粹基于边界框的大小和位置,未使用图像特征。因此它无法从训练集中的大量标记数据中获益。

为了解决这个问题,有几篇论文跟进了 Deep3DBox 提出的上述工作流程,并用第二个细化阶段对其进行了扩展。
在这里插入图片描述

  • FQ-Net 提出使用求解的最佳拟合作为 3D 中的种子位置来密集采样 3D proposals。然后训练神经网络通过查看具有 3D proposal(绿色线框)的 2D 投影的图像块来区分 3D proposal和真实情况之间的 3D IoU。这个想法听起来很疯狂,但确实有效。
    在这里插入图片描述

  • Shift R-CNN 通过“主动”回归proposal的偏移量来避免密集的proposal采样。他们将所有已知的 2D 和 3D bbox 信息输入到一个名为 ShiftNet 的快速简单的全连接网络中,并优化 3D 位置。

The Quick-and-Dirty Alternative

除了上述严格约束之外,实际上还有一种更快的方法来估计车辆的 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 位置时所做的(在将其提供给高斯-牛顿算法以求解约束方程之前),也最实用和可靠的解决方案。

此外,其他几篇论文也使用了关于汽车尺寸和关键点的强大先验知识来估计深度。

  • MonoPSR: Monocular 3D Object Detection Leveraging Accurate Proposals and Shape Reconstruction, CVPR 2019
  • GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving, CVPR 2019
  • MonoGR2 Monocular 3D Object Detection via Geometric Reasoning on Keypoints

总结

  • 在单目图像中深度很难预测,但它对于用单目图像估计准确的 7-DoF 3D 长方体至关重要。我们可以使用强烈的视觉线索和先验信息(例如汽车的平均尺寸)来进行有根据的猜测。
  • 我们可以求解四个 2D/3D 紧约束方程,假设 2D 边界框是准确的。
  • 我们可以通过利用 2D 边界框的大小或已知关键点之间的距离来获得快速而粗略的估计。
  • 我们也可以直接回归距离或视差。

[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

请关注博主,一起玩转人工智能及深度学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文通吃:从 ZooKeeper 一致性,Leader选举讲到 ZAB 协议与 PAXOS 算法(上)

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"或慕课网公众号! 作者:大能 | 慕课网讲师 本文将从ZooKeeper集群如何保证一致性,讲到zookeeper保证数据一致性的协…

打开docker-desktop报错问题解决

打开Ubuntu出现报错 Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x80070424 Error: 0x80070424 ????????? Press any key to continue... 命令行打开wsl出现报错 C:\Users\jiangcheng>wsl 指定的服务未安装。 Err…

windows环境下编译aws-sdk-cpp踩坑记

目录 1 前言 2 第一次编译 3 第二次编译 3.1 安装配置vcpkg 3.2 升级PowerShell 3.3 升级Cmake版本 3.4 vcpkg编译aws-sdk-cpp 4 工具合集下载 5 参考文献 1 前言 在做图片、视频片段存储技术调研时,从查阅的大量资料中,了解到很多人推荐的开源…

多层网关已成过去,网关多合一成潮流,网关改造正当时丨Higress 正式发布 1.0 版本

作者:Higress 团队 01 前言 K8s 通过 Ingress / Gateway API 将网关标准化,逐步将安全网关、流量网关、微服务网关内聚,解决从单体到微服务到云原生多层网关的复杂度,合久必分,分久必合,多层网关已成过去…

第21章 JQuery DataTables对角色的渲染显示

1 Services.Customers.CustomerServiceDefaults /// <summary> /// 【1个指定用户所对应的所有角色缓存键】 /// <remarks> /// 摘要&#xff1a; /// 设定一个缓存键实例&#xff0c;用于拼接1个指定的缓存键字符串&#xff0c;该缓存键字符与角色实体所有实例…

量化多因子——描述数据(空值、重复值、异常值)

数据清洗是量化的第一步&#xff0c;也是非常关键的一步。 检查数据的空值、重复值、异常值&#xff0c;并进行描述性数据分析&#xff0c;观察数据的分布情况。 缺失值&#xff1a; return_all.info() np.where(np.isnan(return_all)) np.where(np.isinf(return_all)) 重复值&…

基础巩固(五)Android通过WebView与Js交互

文章目录 简介WebView基本使用常用方法WebView的生命周期 / 状态切换关于前进 / 后退网页清除缓存数据 常用类WebSettings类常见用法&#xff1a;设置WebView缓存 WebViewClient类WebChromeClient类 注意事项如何避免WebView内存泄露 使用案例 通过WebView使得native与Js交互An…

k8s安装部署

1、基础环境 所有机器执行以下操作 hostname ipk8s-master192.168.0.121k8s-node1192.168.0.102k8s-node2192.168.0.160 docker version&#xff1a;20.10.7 k8s相关插件version&#xff1a;1.20.9 #各个机器设置自己的域名 hostnamectl set-hostname xxxx# 将 SEL…

Java中令人惊艳的五大算法,你知道多少?

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Golang - 选项模式 vs 构建器模式

在使用Golang创建复杂对象时&#xff0c;常用的两种模式是选项模式&#xff08;Options pattern&#xff09;和构建器模式&#xff08;Builder pattern&#xff09;。这两种模式各有优缺点&#xff0c;选择适合项目需求的模式取决于具体情况。 问题 假设我们想创建一个具有许…

【HTTP 协议】掌握 Web 的核心技术

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ 谈起 HTTP 协议&#xff08;超文本传输协议&#xff09;&#xff0c;不知道大家第一次是从什么地方了解到这个协议的呢&#xff1f;在真实的网络环境中网络协议的种类非常多&#xff0c;其中有一些耳熟能详的…

GBASE南大通用5月份公司动态一览

产品动态 5月初&#xff0c;GBASE南大通用两款新产品&#xff1a;GBase 8c V5.0和GBase 8s V8.8.5于鲲鹏开发者大会主论坛商业发行版联合发布仪式上正式发布。新版本与上一版本功能特性保持兼容&#xff0c;并在算子能力、用户级别审计、兼容性等方面全面增强&#xff0c;支持一…

最新版本 Stable Diffusion 开源 AI 绘画工具之微调模型篇

✨ 目录 &#x1f388; 模型种类&#x1f388; 变分自动编码器 / VAE&#x1f388; 美学梯度 / Aesthetic Gradients&#x1f388; 大型语言模型的低阶自适应 / LoRA&#x1f388; 超网络模型 / Hypernetwork&#x1f388; 微调模型 / LyCORIS &#x1f388; 模型种类 当你打开…

jacoco检测功能或自动化测试覆盖率

参考文档&#xff1a;http://t.csdn.cn/QqCSh http://t.csdn.cn/HonVL 目录 下载jacoco 启动jacocoagent监控被测项目 执行手工测试 生成exec文件 生成report报告 jacoco代码覆盖率报告分析 下载jacoco http://t.csdn.cn/HonVL 我下载的最新的 jacoco-0.8.10.zip 下…

虚拟化技术 — Cgroups 与 Namespaces 支撑实现的操作系统虚拟化

目录 文章目录 目录操作系统虚拟化&#xff08;容器技术&#xff09;的发展历程ChrootCgroupsCgroup SubsystemsCgroup FilesystemCgroup HierarchyCgroups 的操作规则Cgroups 的代码实现 NamespacesUTS namespacePID namespaceIPC namespaceMount namespaceNetwork namespaceU…

mysql order by 索引问题综合分析

一&#xff0c;文章1 Mysql-索引失效 order by优化_orderby索引失效_zyk1.的博客-CSDN博客 总结&#xff1a; 0&#xff0c;索引 与 查询条件 与 排序字段关系&#xff0c;Using filesort出现场景 1.联合索引&#xff0c;最左匹配原则&#xff0c;不仅查询条件需要遵循&…

vivado FIFO的Standard 和 FWFT模式

vivado FIFO的Standard 和 FWFT模式 Standard 模式读操作 对于标准 FIFO 读取操作&#xff0c;在断言读有效后&#xff0c;如果 FIFO 非空&#xff0c;存储在FIFO中的下一个数据被驱动到输出总线&#xff08;dout&#xff09;上和VALID标志有效。 下图显示标准模式下的读数据…

ChatGPT介绍与使用场景

ChatGPT是OpenAI开发的一款基于GPT-3和GPT-4的人工智能聊天机器人。“GPT"代表的是"Generative Pre-trained Transformer”&#xff0c;这是一种深度学习技术&#xff0c;使用人工神经网络来生成类似人类的文本。 ChatGPT能够处理各种对话任务&#xff0c;包括回答问…

教您如何快速自助搭建一个元宇宙场景

【导语】 在数字化时代&#xff0c;营销方式正经历着巨大的变革。而在这场变革的浪潮中&#xff0c;元宇宙编辑器凭借其独特的元宇宙展厅解决方案&#xff0c;为企业和个人提供了快速、简便的自助搭建元宇宙场景的机会。 今天&#xff0c;让我们一起走进元宇宙编辑器的世界&…

如何将Windows 7系统镜像部署到不同的硬件计算机?

案例&#xff1a;将Windows 7系统镜像恢复到另一台电脑 “我有一台运行 Windows 7 的电脑&#xff0c;我已经创建了一个系统镜像并希望将其加载到另一台电脑上。但是&#xff0c;当我运行恢复控制台时&#xff0c;我不断收到错误消息。这让我想知道是否可以创建 Windows 7 系…