[Mono Depth/3DOD]单目3D检测基础

news/2025/2/11 19:27:47/

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:图像中车轮与地面接触点的纵坐标
    • 直观上理解,离我们越近的物体它的纵坐标应该越靠近图像下方,越远的物体越靠图像上方

http://www.ppmy.cn/news/1155952.html

相关文章

MySQL 的下载与安装

MySQL 的下载 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar 将下载的数据包拉到虚拟机的linux系统的主文件夹下,创建一个MySQL文件存放 安装MySQL 1、解压数据包 tar -xvf mysql-5.7.30-1.el7.x86_64.rpm-bundle.tar -x: 表示解压…

Python算法练习 10.15

leetcode 2130 链表的最大孪生和 在一个大小为 n 且 n 为 偶数 的链表中&#xff0c;对于 0 < i < (n / 2) - 1 的 i &#xff0c;第 i 个节点&#xff08;下标从 0 开始&#xff09;的孪生节点为第 (n-1-i) 个节点 。 比方说&#xff0c;n 4 那么节点 0 是节点 3 的孪…

【算法训练-排序算法 三】【排序应用】合并区间

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【合并区间】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

Jetpack:007-各种各样的Button

文章目录 1. 概念介绍2. 使用方法2.1 Button2.2 IconButton2.3 ElevatedButton2.4 OutlinedButton2.5 TextButton2.6 FloatingActionButton 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中输入框相关的内容&#xff0c;本章回中将要介绍 Button。闲话休提&#xff0…

Puppeteer结合测试工具jest使用(四)

Puppeteer结合测试工具jest使用&#xff08;四&#xff09; Puppeteer结合测试工具jest使用&#xff08;四&#xff09;一、简介二、与jest结合使用&#xff0c;集成到常规测试三、支持其他的几种四、总结 一、简介 Puppeteer是一个提供自动化控制Chrome或Chromium浏览器的Node…

Redis概述和与SpringBoot的整合

Redis是一种高性能的键值对存储数据库&#xff0c;它支持多种数据结构&#xff0c;包括字符串、哈希、列表、集合和有序集合等。Redis具有快速、可靠、灵活和可扩展等特点&#xff0c;也被广泛应用于缓存、队列和排行榜等场景。 SpringBoot是一种基于Spring框架的快速开发脚手…

P3177 [HAOI2015] 树上染色

P3177 [HAOI2015] 树上染色 [P3177 HAOI2015] 树上染色 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 文章目录 P3177 [HAOI2015] 树上染色题目大意思路code 题目大意 有一棵 n n n 个点的树&#xff0c;你可以在上面把 k k k 个点染成黑色&#xff0c;收益为黑点两两之间…

网络安全(黑客)—0基础学习手册

目录梗概 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来…