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…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...