UniDepth 学习笔记
摘要
准确的单目度量深度估计(MMDE)是解决三维感知和建模中下游任务的关键。然而,最近的MMDE方法的显著准确性仅限于其训练领域。这些方法存在适度的域间隙,也不能推广到看不见的域,这阻碍了它们的实际适用性。本文提出一个新的模型,UniDepth,能够从跨域的单个图像中重建度量3D场景。与现有的MMDE方法不同,UniDepth在推理时直接预测输入图像的度量三维点,无需任何附加信息,争取一个通用而灵活的MMDE解决方案。特别是,UniDepth实现了一个自提示的相机模块(self-promptable camera module),预测密集的相机表示来训练深度特征。该模型利用了伪球形输出表示( pseudo-spherical output representation),分离了相机和深度表示。此外,本文提出了一个几何不变性损失(geometic invariance loss),以促进相机提示的深度特征的不变性。在零样本状态下,对10个数据集的彻底评估一致地证明了单深度的优越性能,即使与直接在测试领域上训练的方法相比。
介绍
精确的像素级深度估计对于理解几何场景结构至关重要,它在三维建模[10]、机器人[11,63]和自动驾驶汽车[38,51]中的应用。然而,提供可靠的度量尺度深度输出对于有效地执行三维重建是必要的,从而激发了单眼度量深度估计(MMDE)的具有挑战性和固有的倾斜任务。
虽然现有的MMDE方法[3,14,16,40,41,43,61]在不同的基准测试中显示出了显著的准确性,但它们需要在具有相似的相机内参和场景尺度的数据集上进行训练和测试。此外,训练数据集的大小通常有限,场景和摄像机的多样性也很少。这些导致模型很难泛化到真实世界场景。
只有少数方法[21,59]解决了可泛化MMDE的挑战性任务。然而,这些方法假设在测试时有受控的设置,包括相机内参。虽然这种假设简化了任务,但它有两个显著的缺点。首先,它具有局限的应用范围,如在野外的视频处理和大众图像分析。其次,将固有的摄像机参数噪声直接注入模型中,导致在高噪声情况下产生较大的误差。
在这项工作中,作者解决了更苛刻的通用MMDE任务,而不依赖任何额外的外部信息,如相机参数,从而定义了通用的MMDE任务。我们的方法,名为UniDepth,是第一个尝试解决这个不受场景组成和设置限制的具有挑战性的任务的方法,并通过其通用性和适应性来区分自己。与现有的方法不同,UniDepth仅从单个图像为任何场景提供度量的3D预测,而无需提供关于场景或相机的额外信息。此外,Unidepth灵活地允许在测试时合并额外的相机信息。
我们的设计引入了一个相机模块,它输出一个非参数的,即密集的相机表示(dense camera representation),作为对深度模块的提示。然而,仅仅依赖于这个单一的额外模块显然会导致与训练稳定性和规模模糊性(scale ambiguity)相关的挑战。作者提出了一种有效的输出空间的伪球面表示(pseudo-spherical representation)来解开该空间相机和的深度维度。这种表示对相机使用了方位角和仰角组件,深度使用了径向组件,在相机平面和深度轴之间形成一个完美的正交空间。此外,摄像机组件嵌入通过拉普拉斯球谐波编码。图1描述了我们的相机自提示机制和输出空间。此外,我们引入了一个几何不变性损失来增强深度估计的鲁棒性。其潜在的想法是,来自同一图像的两个视图的相机条件下的深度特征应该表现出相互的一致性。特别地,我们采样了两个几何增强,为每个训练图像创建一对不同的视图,从而模拟原始场景的不同的外观摄像机。
我们的总体贡献是第一个通用的MMDE方法,UniDepth,它预测了每个像素的度量三维空间中的一个点,除了一个图像之外没有任何输入。特别地,首先,我们设计了一个可提示的相机模块,这是一个架构组件,它可以学习密集的相机表示,并允许非参数的相机条件反射。其次,我们提出了一个输出空间的伪球面表示,从而解决了相机和深度预测的交织本质。.此外,我们引入了一个几何不变性损失来分离相机信息从场景的底层三维几何。此外,我们在一个公平和可比较的零镜头设置的10个不同的数据集上广泛地测试和重新评估了7种MMDE最先进状态(SotA)方法,为广义MMDE任务奠定了基础。由于其设计,与非零射击方法相比,统一深度始终创造了新的技术状态,在竞争激烈的官方KITTI深度预测基准中排名第一。
相关工作
度量和尺度无关的深度估计。区分单目度量深度估计(MMDE)与尺度不可知的,即大尺度的单目深度估计是至关重要的。MMDE SotA方法通常将训练和测试限制在同一领域。然而,出现了挑战,比如对训练场景的过拟合导致在存在微小的领域差距时性能显著下降,这在NYUDepthv2 [35](NYU)和KITTI [18]等基准测试中经常被忽视。另一方面,与尺度无关的深度方法,包括MiDaS [42],通过在广泛的数据集上进行训练,显示出鲁棒的泛化。它们的局限性在于缺乏度量输出,阻碍了在下游应用程序中的实际使用。
单目度量深度估计。由[14]率先在MMDE中引入了端到端可训练神经网络,标志着一个重要的里程碑,也通过尺度不变log损失(SIlog)引入了优化过程。随后的发展见证了先进网络的出现,从基于卷积的体系结构[16,27,31,40]到基于变压器的方法[3,41,57,61]。尽管在已建立的基准测试上取得了令人印象深刻的成就,但MMDE模型在零射击场景中面临着挑战,这揭示了对外观和几何形状上的领域变化进行鲁棒泛化的需要。
一般的单目度量深度估计。最近的工作集中在开发MMDE模型[4,21,59],用于跨不同领域的一般深度预测。这些模型通常利用相机感知,要么通过直接将外部相机参数合并到计算[15,21]中,要么通过基于内在属性规范化形状或输出深度,如[1,28,59]所示。
然而,这些可泛化的MMDE方法通常采用特定的策略来提高性能,例如几何预训练[4]或特定于数据集的先验,如重塑[59]。此外,这些方法假设在训练和测试时间都可以获得无噪声摄像机的内部信息,这也限制了它们对针孔摄像机模型的适用性。此外,SotA方法依赖于一个预定义的反向投影操作,模糊了学习深度和三维场景之间的区别。相比之下,我们的方法旨在克服这些限制,提出一个更苛刻的视角,例如通用MMDE。通用MMDE涉及从输入图像直接预测3D场景,没有除了后者之外的任何附加信息。值得注意的是,我们在测试时不需要任何额外的先验信息,比如访问相机信息。
UniDepth
MMDE SotA方法通常假设可以访问相机的内部信息,从而模糊了纯深度估计和实际三维估计之间的界限。相比之下,UniDepth的目标是创建一个可在不同场景中部署的通用MMDE模型,而不依赖于任何其他外部信息,如相机固有的信息,从而通过设计进行三维空间估计。然而,试图在没有适当内部表示的情况下直接从单个图像预测三维点忽略了几何先验知识,即透视几何,重新学习数据透视投影定律加重了学习过程的负担。
3.1引入了输出空间的伪球面表示,以内在的地将相机光线的角度与深度分离。另外,本文的初步研究表明,该深度预测显然受益于采集传感器的先验信息,因此,在2.3中引入了自提示相机操作。在内部深度特征水平上的进一步解纠缠是通过几何不变性损失来实现的,在3.3中概述。这种损失确保了深度特征在引导相机预测条件下保持不变,促进了稳健的相机感知深度预测。总体架构和由设计选择的组合引起的结果优化在3.4.中详细介绍。
3D表示
本文的MMDE模型的目的是推断深度和相机内参,以仅基于图像进行三维预测。作者设计了一个三维输出空间将两个子任务自然地分离开,即深度估计和相机校准(calibration)。特别地,作者利用伪球形表示,其中基由方位角、航向角和log深度表示,即(θ,fai,zlog),而不是笛卡尔表示(x,y,z)。所提出的伪球表示的优势在于相机(θ,ϕ)和深度(zlog)分量的解耦,通过设计确保了它们的正交性,而不是笛卡尔表示中的纠缠。
自提示相机模块
摄像机模块在最终的三维预测中起着至关重要的作用,因为它的角度密集输出占了输出空间的两个维度,即方位角和仰角。最重要的是,这些嵌入会提示深度模块,以确保对输入场景的全局深度尺度的引导先验知识。提示是避免场景尺度中的模式崩溃的基础,并减轻了深度模块从头开始预测深度的负担,因为尺度已经被摄像机输出建模。
几何一致性损失
当深度模块以特定摄像机为条件时,不同摄像机捕捉到的同一场景的空间位置应该相对应。为此,我们提出了一个几何不变性损失来加强来自不同采集传感器的同一场景的摄像机提示深度特征的一致性。特别是,从相同的3D位置提取的特征必须具有一致性。
结构设计
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43985824/article/details/139518351
相关文章:

UniDepth 学习笔记
摘要 准确的单目度量深度估计(MMDE)是解决三维感知和建模中下游任务的关键。然而,最近的MMDE方法的显著准确性仅限于其训练领域。这些方法存在适度的域间隙,也不能推广到看不见的域,这阻碍了它们的实际适用性。本文提出…...

PVE——OpenWRT 硬盘 size单位的调整
问题:初始状态为120MB 还需要进行计算,如果通过图形界面添加磁盘会出现单位不变的情况。 进入命令行前记得给你的虚拟机拍照,防止误操作 通过ssh 进入PVE命令行 按需添加容量即可 不到1G 会显示M 超过1G 不是G整数均为M单位。 …...

Android-ImagesPickers 拍照崩溃优化
Android-ImagesPickers 作为老牌图片选择器,帮助了很多牛马宝宝,刚好最近用到了多相册选择以及拍照,可能是高版本机型问题,导致拍照后就闪退 原作者文章以及git Android实用视图动画及工具系列之九:漂亮的图片选择器…...

Linux dd 命令详解:工作原理与实用指南(C/C++代码实现)
这段代码是一个模仿 Linux dd 命令的工具,它用于在不同文件之间复制数据。dd 是一个非常强大的命令行工具,可以用于数据备份、转换和复制。下面我将详细解释这段代码的原理、实现方式以及如何运行和测试。 Linux dd 命令的工作原理 dd 命令是 Unix 和 …...

Golang学习历程【第一篇 入门】
Golang学习历程【第一篇 入门Hello World】 1. 学习文档2. Window 本地安装Go2.1 安装2.2 验证 3. 开发环境——VsCode3.1 VsCode 安装3.2 安装插件3.2.1 language 语言汉化插件安装3.2.2 Go插件安装 4. Hello World 入门4.1 建工程4.2 创建项目文件4.3 编写Hello World程序4.4…...

青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序
青少年编程与数学 02-004 Go语言Web编程 01课题、Web应用程序 课题摘要:一、Web应用程序二、Web服务器(一)什么是Web服务器(二)Web服务器配置1. 选择服务器软件2. 安装服务器软件3. 配置服务器4. 安全设置5. 部署网站内容6. 测试服…...

【mysql】如何解决主从架构从库延迟问题
目录 1. 说明2.优化主库的写入性能3. 优化网络性能4. 增强从库的硬件性能5. 调整从库的配置6. 主从架构优化7. 监控和调优8.使用 GTID 和 Group Replication 1. 说明 1.在 MySQL 数据库中,从库延迟(replication lag)是指主库和从库之间的数据…...

前端学习-获取DOM对象(二十一)
目录 前言 目标 提问 学习路径 根据CSS选择器来获取DOM元素 其他获取DOM元素的方法 根据CSS选择器来获取DOM元素 选择匹配的第一个元素 语法 示例 参数 返回值 选择匹配的多个元素语法 参数 字符串返回值 示例 补充 其它获取DOM元素方法 根据id获取一个元素 …...

PCL点云库入门——PCL库中Eigen数学工具库的基本使用(持续更新)
0、前言 PCL点云库中的算法都基于Eigen数学工具库来实现的,因此,掌握Eigen库对于深入理解和应用PCL点云库至关重要。Eigen库不仅提供了高效的矩阵和向量运算,还支持复杂的线性代数、几何变换等操作,为PCL点云处理提供了强大的数学…...

CLion Inlay Hints - 取消 CLion 灰色的参数和类型提示
CLion Inlay Hints - 取消 CLion 灰色的参数和类型提示 1. Parameter hints for C/C1.1. Toggle parameter hints globally 2. Type hints for C/C2.1. Toggle type hints globally 3. Toggle inlay hints globallyReferences https://www.jetbrains.com/help/clio…...

2025山东科技大学考研专业课复习资料一览
[冲刺]2025年山东科技大学020200应用经济学《814经济学之西方经济学[宏观部分]》考研学霸狂刷870题[简答论述计算题]1小时前[强化]2025年山东科技大学085600材料与化工《817物理化学》考研强化检测5套卷22小时前[冲刺]2025年山东科技大学030100法学《704综合一[法理学、国际法学…...

vue3 v-model实例之二,tab标签页的实现
<template><div><Tab v-model"activeTab" :list"tabs" /><div><p>当前激活的 Tab 索引: {{ activeTab }}</p></div></div> </template><script setup> import { ref } from vue; import Tab …...

东方通TongWeb7.0.4.9M4部署SuperMap iServer 11.2.1
一、软件版本 操作系统: CentOS Linux release 7.5.1804 (Core)JDK:11.0.18东方通:TongWeb7.0.4.9M4SuperMap iServer:11.2.1 JDK和TongWeb软件分享: 链接: https://pan.baidu.com/s/1HGDTPnPID0PEOMbg3FjTVQ?pwdbh8v 提取码: bh8v 东方通软…...

QT绘制同心扇形
void ChartForm::paintEvent(QPaintEvent *) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);// 设置抗锯齿painter.save();// 设置无边框(不需要设置QPen,因为默认是不绘制边框的)QPen pen(Qt::NoPen);// QPen pen…...

2012年西部数学奥林匹克试题(几何)
2012/G1 △ A B C \triangle ABC △ABC 内有一点 P P P, P P P 在 A B AB AB, A C AC AC 上的投影分别为 E E E, F F F, 射线 B P BP BP, C P CP CP 分别交 △ A B C \triangle ABC △ABC 的外接圆于点 M M M, N N N. r r r 为 △ A B C \triangle ABC △ABC 的内…...

8位移位寄存器的verilog语言
module shift_register (output reg [7:0] Q, // 8位移位寄存器输出input D, // 输入数据input rst, // 复位信号input clk // 时钟信号 );always (posedge clk) beginif (!rst)Q < 8b00000000; // 复位时将Q清零elseQ < {Q[6:0], D}; // 否则…...

【苍穹外卖】学习心得体会-随笔
前言 写了很久,终于可以完整运行项目了,记录下这几天的心得体会回顾一下知识点 第一天、Git 分布式版本控制工具 一、Git概述 定义:是分布式版本控制工具,用于管理软件开发中的源代码文件,像Java类、xml文件、html…...

MySQL学习之表的增删改
MySQL学习之表的增删改 语法总结: INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); //指定字段添加数据 INSERT INTO 表名 VALUES (值1, 值2, ...); //给全部字段添加数据 INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, …...

电脑excel词典(xllex.dll)文件丢失是或损坏是什么原因?“xllex.dll文件缺失“要怎么解决?
Excel词典(xllex.dll)文件丢失或损坏?别担心,这里有解决之道! 在日常的电脑使用和办公软件操作中,我们偶尔会碰到一些让人头疼的问题,比如Excel突然提示“Excel词典(xllex.dll&…...

【CSS in Depth 2 精译_084】第 14 章:CSS 蒙版、形状与剪切概述 + 14.1:CSS 滤镜
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 14 章 蒙版、形状与剪切】 ✔️ 14.1 滤镜 ✔️ 14.1.1 滤镜的类型 ✔️14.1.2 背景滤镜 ✔️ 14.2 蒙版 文章目录 第 14 章 蒙版、形状与剪切 Masks, shapes, and…...

gorm源码解析(四):事务,预编译
文章目录 前言事务自己控制事务用 Transaction方法包装事务 预编译事务结合预编译总结 前言 前几篇文章介绍gorm的整体设计,增删改查的具体实现流程。本文将聚焦与事务和预编译部分 事务 自己控制事务 用gorm框架,可以自己控制事务的Begin࿰…...

前端优雅(装逼)写法(updating····)
1.>>右位移运算符取整数 它将一个数字的二进制位向右移动指定的位数,并在左侧填充符号位(即负数用1填充,正数用0填充)。 比如 2.99934 >> 0:取整结果是2,此处取整并非四舍五入 2.99934 会先…...

黑马Java面试教程_P7_常见集合_P4_HashMap
系列博客目录 文章目录 系列博客目录4. HashMap相关面试题4.4 面试题-HashMap的put方法的具体流程 频54.4.1 hashMap常见属性4.4.2 源码分析 HashMap的构造函数面试文稿: 4.5 讲一讲HashMap的扩容机制 难3频4面试文稿: 4.6 面试题-hashMap的寻址算法 难4…...

使用 CFD 加强水资源管理:全面概述
探索 CFD(计算流体动力学)在增强保护人类健康的土木和水利工程实践方面的重大贡献。 挑战 水资源管理是指规划、开发、分配和管理水资源最佳利用的做法。它包括广泛的活动,旨在确保水得到有效和可持续的利用,以满足各种需求&…...

XXE练习
pikachu-XXE靶场 1.POC:攻击测试 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY xxe "a">]> <foo>&xxe;</foo> 2.EXP:查看文件 <?xml version"1.0"?> <!DOCTYPE foo [ <!ENTITY xxe SY…...

R语言读取hallmarks的gmt文档的不同姿势整理
不同格式各有所用 1.读取数据框格式的 hallmarks <- clusterProfiler::read.gmt("~/genelist/h.all.v7.4.symbols.gmt") #返回的是表格 hallmarks$term<- gsub(HALLMARK_,"",hallmarks$term)适配Y叔的clusterProfiler的后续分析,比如整理后geneli…...

【Nginx-4】Nginx负载均衡策略详解
在现代Web应用中,随着用户访问量的增加,单台服务器往往难以承受巨大的流量压力。为了解决这一问题,负载均衡技术应运而生。Nginx作为一款高性能的Web服务器和反向代理服务器,提供了多种负载均衡策略,能够有效地将请求分…...

Python 的 Decimal的错误计算
摘要 阐述在使用 Python的 Decimal类时,可能产生的错误计算。 在 详述 BigDecimal 的错误计算 中,笔者较为详细地说明了 Java的 BigDecimal可能出错的原因。类似地,Python的 decimal模块中有个 Decimal类,也可用于高精度的十进制…...

【韩顺平 Java满汉楼项目 控制台版】MySQL+JDBC+druid
文章目录 功能界面用户登录界面显示餐桌状态预定显示所有菜品点餐查看账单结账退出满汉楼 程序框架图项目依赖项目结构方法调用图功能实现登录显示餐桌状态订座显示所有菜品点餐查看账单结账退出满汉楼 扩展思考多表查询如果将来字段越来越多怎么办? 员工信息字段可…...

【HAL库】STM32CubeMX开发----STM32F407----Time定时器中断实验
STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F407----目录 前言 本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。 实现定时器TIM3中断,每1s进一次中断。 定时器计算公式如下: arr 是自动装载值&#x…...