[Mono Depth/3DOD]单目3D检测基础
1. 数据增强
- 图像放缩和裁剪后,相机内参要做相应变化
import random
def random_scale(image, calib, scale_range=(0.8, 1.2)):scale = random.uniform(*scale_range)width, height = image.sizeimage = image.resize((int(width * scale), int(height * scale)))calib[:2, :] *= scalereturn image, calibdef random_crop(image, left, w_out, upper, h_out, calib):right = left + w_outlower = upper + h_outimage = image.crop((left, upper, right, lower))calib[0, 2] -= left # cx - ducalib[1, 2] -= upper # cy - dvcalib[0, 3] -= left * calib[2, 3] # tx - du * tz calib[1, 3] -= upper * calib[2, 3] # ty - dv * tz
2. 数据集
2.1. KITTI
- Rotation_y(全局航向角<BOC):
- 车头方向与相机的x轴正方向的夹角
- 描述目标在现实世界中的朝向,不随目标的位置和采集车的位置变化而变化
- theta:目标方位角
- Alpha:目标观测角,Alpha = theta + Rotation_y
- 单目3D学习alpha角,因为alpha是跟图像特征相关的
3. 单目3D检测任务问题总结
- 单目3D模型对相机的内外参变换敏感
- 对遮挡和截断目标的检测性能下降明显
- 对远距离的小目标性能下降严重(KITTI数据集,把超过46m的物体过滤)
- 2D检测框和3D检测框在2D图像上的投影不完全重合(传感器的时间同步问题,相机频率(20HZ)快于lidar频率(10HZ))
- 航向角预测不达标
- 无时序约束,3D检测结果抖动明显
单目3D检测的难点:
- 输入信息(2维)维度少于输出信息(3D)的维度
- 2D检测:输入输出都是2D
- 雷达检测:输入输出都是3D
- 输入的信息熵小于输出的信息熵
- 单目图像缺少深度信息
上图来自论文:https://openreview.net/pdf?id=mPlm356yMIP,ICLR 2022
- 现有3D检测方法的深度误差下限跟理论下限对比深度误差随着深度呈指数增长,理论误差与深度呈二次方增长
- CaDDN和Monodle在40米后呈现指数增长
- KITTI数据集,40米的深度理论误差是1.48米,60米是3.3
4. 单目3D检测范式
上图来自论文:3D Object Detection for Autonomous Driving: A Comprehensive Survey
- Images-only 单目3D检测(绿色)
- 单阶段anchor-base
- 单阶段anchor-free
- 两阶段3D检测
- Depth-assisted 单目3D检测(深蓝色)
- Depth-images based mono3D
- Pseudo-Lidar based mono3D
- Patch-based mono3D
- Prior-guide 单目3D检测(蓝色)
4.1. Images-only 单目3D检测
- 单阶段anchor-base (yolo3D)
- 利用图像特征和预定义的3D anchor来预测3D box的参数
- 单阶段anchor-free (centernet, KM3D)
- 直接利用图像特征来预测3D box的参数
- 两阶段3D检测
- 从2D检测生成2D边界框并crop 2D ROI
- 通过从2D ROI特征预测3D对象参数,将2D检测提升到3D空间
4.2. Depth-assisted 单目3D检测(引入深度先验)
- Depth-images based mono3D
- 融合RGB图像和深度图得到depth-aware特征
- 深度图由预训练的深度预测模型得到
- Pseudo-Lidar based mono3D
- 基于伪激光雷达的方法,首先讲深度图转为3D伪激光点云,再用基于激光雷达的3D检测算法进行检测
- Patch-based mono3D
- 基于patch的方法,将深度图转化为二维坐标图(2D coordinate map),然后在坐标图上用CNN进行检测
4.3. Prior-guide 单目3D检测
先验引导方法利用物体形状先验、几何先验、分割和时间约束来帮助检测3D物体
单目3D检测的先验信息:
- 先验信息:3D box下底边的中心点在图像的投影点的越靠近消失线,深度越大
- 物体3D尺寸与2D图像上投影比例关系
- 场景集合信息(消失点,消失线,车道线,天空)
3D检测用到的几何信息
- 相机没有pitch角,车辆没有抖动
- 地面是平的,地面没有起伏
注:对于没有深度图预测的3D检测算法,基本是在放宽这两个假设上,通过几何关系求深度
上图来源论文:How do neural networks see depth in single images?
- h/H = f/Z,得到Z=Hf/h
- f:相机的焦距
- Z:深度
- H:实际世界中的车宽
- h:物体在图像中的像素高度
- y/Y:f/Z
- y:相机距离地面的安装高度
- Y:图像中车轮与地面接触点的纵坐标
- 直观上理解,离我们越近的物体它的纵坐标应该越靠近图像下方,越远的物体越靠图像上方
相关文章:

[Mono Depth/3DOD]单目3D检测基础
1. 数据增强 图像放缩和裁剪后,相机内参要做相应变化 import random def random_scale(image, calib, scale_range(0.8, 1.2)):scale random.uniform(*scale_range)width, height image.sizeimage image.resize((int(width * scale), int(height * scale)))cal…...
【Docker 内核详解】namespace 资源隔离(三):PID namespace
namespace 资源隔离(三):PID namespace 1.PID namespace 中的 init 进程2.信号与 init 进程3.挂载 proc 文件系统4.unshare() 和 setns() PID namespace 隔离非常实用,它对进程 PID 重新标号,即两个不同 namespace 下的…...

1600*C. Game On Leaves(博弈游戏树)
Problem - 1363C - Codeforces 解析: 我们将目标结点 x 当作树的根,显然,到当 x 的度为 1 的时候,此时行动的人胜利。 我们假设现在的情况为,只剩余三个点,再选择任意一个点,则对方获胜。但是两…...

Apache Ant的安装
介绍 Apache Ant是一个Java库和一个 命令行工具,可以用来构建Java应用。Ant提供了许多内置的任务(tasks),可以编译、组装、测试、运行Java应用。Ant也可以构建非Java应用,例如C、C应用。 Ant非常灵活,没有…...
考研:数学二例题--∞−∞和0⋅∞型极限
前言 本文只是例题,建议先参考具体如何做这类型例题。请到主文章中参考:https://blog.csdn.net/grd_java/article/details/132246630 ∞ − ∞ 和 0 ⋅ ∞ \infin - \infin 和 0\infin ∞−∞和0⋅∞ 例题 例1: lim x → ∞ x 2 x 2 −…...

C++算法:图中的最短环
题目 现有一个含 n 个顶点的 双向 图,每个顶点按从 0 到 n - 1 标记。图中的边由二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和 vi 之间存在一条边。每对顶点最多通过一条边连接,并且不存在与自身相连的顶点。 返回图中 …...
C++学习——类其实也是一种作用域
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 其实也是一种作用域,每个类都会定义它自己的作用域。在类的作用域之外,普通的成员只能通过对象(可以是对象本身,也可以是对象指针或对象…...

Seata入门系列【4】undo_log、global_table、branch_table、lock_table字段及作用详解
1 客户端 1.1 undo_log 在AT模式中,需要在参与全局事务的数据库中,添加一个undo_log表,建表语句如下: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for undo_log -- --…...
虚幻引擎:数据表格的C++常用API
1.将数据表格中的所有数据存到一个数组中 //参数1 // 错误提示 //参数2 // 存储的数组 TArray<FKeyInfoHeader*> array; KeyInfoDT->GetAllRows<FKeyInfoHeader>(TEXT("错误"),array); 2.获取表格中所有的行名称 TArray<FName>array; …...
Java日期格式化(DateFormat类和SimpleDateFormat类)
格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式。例如将日期“Fri May 18 15:46:24 CST2016” 格式转换为 “2016-5-18 15:46:24 星期五”的格式。 在 java 中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期,下面详细介绍这两…...

centos 7 lamp owncloud
OwnCloud是一款开源的云存储软件,基于PHP的自建网盘。基本上是私人使用,没有用户注册功能,但是有用户添加功能,你可以无限制地添加用户,OwnCloud支持多个平台(windows,MAC,Android&a…...

屏幕亮度调节保护您的眼睛
官方下载地址: 安果移动 视频演示:屏幕亮度调节-保护您的眼睛_哔哩哔哩_bilibili 嗨,亲爱的用户,你是否有过这样的体验:夜晚安静的时刻,想要在抖音上看看热门的舞蹈、在快手上发现生活的 趣味、或是在哔…...
CentOS Linux下CMake二进制文件安装并使用Visual Studio调试
cmake安装——二进制安装(很简单,推荐!!) 1)下载二进制包。首先就是官网下载二进制安装包(我们是64位系统,就下载对应的包),这里。 例如:在/home/DOWNLOAD目录下执行,即下载二进制…...
ASP.net相关目录,相关配置文件和.后缀名解释
App_Data:用于存储应用程序的数据文件,例如数据库文件或其他本地文件。 App_Start:包含应用程序的启动配置文件,例如路由配置、日志配置等。 Content:存放应用程序的静态资源文件,如 CSS、JavaScript、图…...

一键批量转换,轻松将TS视频转为MP4视频,实现更广泛的播放和分享!
在享受精彩视频内容的同时,有时我们可能会面临一个问题:某些视频格式可能不太适合我们的播放设备或分享平台。特别是TS格式的视频,在一些情况下可能无法直接播放或上传。但是不用担心,因为我们为您提供了一款强大的视频剪辑工具&a…...

【Redis】使用Java客户端操作Redis
目录 引入jedis依赖连接Redis命令get/setexists/delkeysexpire/ttltype 引入jedis依赖 连接Redis 命令 get/set exists/del keys expire/ttl type...

BSPHP 未授权访问 信息泄露
漏洞描述 BSPHP 存在未授权访问 泄露用户 IP 和 账户名信息 漏洞复现 访问url: 构造payload访问: /admin/index.php?madmin&clog&atable_json&jsonget&soso_ok1&tuser_login_log&page1&limit10&bsphptime16004073…...

Learning Sample Relationship for Exposure Correction 论文阅读笔记
这是中科大发表在CVPR2023的一篇论文,提出了一个module和一个损失项,能够提高现有exposure correction网络的性能。这已经是最近第三次看到这种论文了,前两篇分别是CVPR2022的ENC(和这篇文章是同一个一作作者)和CVPR20…...

Vue项目 -- 解决Eslint导致的console报错问题
在利用vue-cli3构建的项目中引入eslint进行语法检查时,使用console.log(‘xxx’)时,控制台抛出了Unexpected console statement (no-console) 异常, 例:一使用console就提示报错 解决办法是: 在 .eslintrc.js 文件中…...
uni-app 在已有的数据对象中动态添加更多的数据对象
原数据对象 flowData: {list: [], // 数据值column: 2, // 瀑布列数columnSpace: 2 // 瀑布列宽间距 } 动态添加后的数据对象 flowData: {list: [], // 数据值column: 2, // 瀑布列数columnSpace: 2, // 瀑布列宽间距column_1: [],column_2: [] } 动态添加更多的数据对象的…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...

CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?
在现代前端开发中,Utility-First (功能优先) CSS 框架已经成为主流。其中,Tailwind CSS 无疑是市场的领导者和标杆。然而,一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...
HTML中各种标签的作用
一、HTML文件主要标签结构及说明 1. <!DOCTYPE html> 作用:声明文档类型,告知浏览器这是 HTML5 文档。 必须:是。 2. <html lang“zh”>. </html> 作用:包裹整个网页内容,lang"z…...