MoGe---最新单目3D几何估计方法

news2025/4/4 2:32:27

目录

一、概述

二、相关工作 

1、单目深度估计

2、单目几何估计

3、相机内参估计

4、单目几何的大规模数据训练

三、前置知识

1、仿射不变和尺度不变指标

2、FOV和shift

3、ROE对齐求解器

四、MoGe

1、为什么设计仿射不变?

2、恢复相机焦距和移位 

3、MoGe框架

五、实验

1、点映射比较

2、单目深度估计比较 

3、FOV比较

4、消融实验

5、可视化


一、概述

        该论文提出了一个从单张单目图像中直接预测场景三维点云表示的模型MoGe。利用仿射不变性,不受真实尺度和位移的影响,从而消除了相机焦距产生的歧义。另外提出一种新颖的全局和局部几何监督技术,使模型学习到高质量的几何信息。该模型在包括3D点图,深度图,FoV(相机视场)单目估计中都显著优于最先进的方法。

MGE:Monocular geometry estimation

MDE:Monocular depth estimation

(1)提出了一种新的仿射不变点映射的开放域图像的直接MGE方法。

(2)建立了新的有效的全局和局部监督的鲁棒和精确的几何恢复。

(3)不同数据集下,MGE,MDE,FOV估计均达到SOTA,(可以替代DUSt3R来提供3D prior)

Head fig.

二、相关工作 

1、单目深度估计

        早期的单目估计严重依赖特定传感器的数据,比如RGBD相机,LiDAR,校准立体相机,但是存在特定领域的适用性。

        另外在单目估计近期仿射不变预测或者直接回归或生成模型的方式,但恢复三维几何需要相机内参。

2、单目几何估计

        单目点图估计恢复的是每个像素的自由三维点。

        LeReS引入仿射不变预测的两阶段pipeline,然后通过点云模块恢复位移和相机焦距。

        UniDepth通过自我提示的相机模块,预测摄像机表示来调整后续深度估计。

        DUSt3R通过端到端双视图映射点图,但依据尺度不变性,会导致受到焦距模糊影响。

3、相机内参估计

        早期工作依据已知三维形状或vanishing points。最近依赖基于学习的方式,但效果并不满意。

4、单目几何的大规模数据训练

        MiDaS混合不同领域数据集训练。

        Depth Anything使用有标记的和未标记的数据来提高泛化,v2工作进一步强调高质量合成数据也可以提供更多丰富的几何形状信息。

三、前置知识

1、仿射不变和尺度不变指标

        首先定义\hat{p}_i,p_i分别为预测点和GT点,\hat{z}_i,z_i分别表示预测深度和GT深度,对应着点的z坐标,M表示GT的mask,a,b分别表示将预测和GT对齐的尺度和位移,d_i,\hat{d}_i表示预测视差和GT视差,定义为d_i=1/z_i

尺度不变点映射

        a^*=\arg \min_{a}\sum_{i \in M} \frac{1}{z_i}||a\hat{p}_i-p_i||_1

仿射不变点映射

        (a^*,b^*)=\arg \min_{a,b}\sum_{i \in M} \frac{1}{z_i}||a\hat{p}_i+b-p_i||_1

尺度不变深度映射

        a^*=\arg \min_s \sum_{i \in M}\frac{1}{z_i}|a\hat{z}_i-z_i|

仿射不变深度映射

        (a^*,b^*)=\arg \min_s \sum_{i \in M}\frac{1}{z_i}|a\hat{z}_i+b-z_i|

仿射不变视差映射

        (a^*,b^*)=\arg \min_s \sum_{i \in M}(a\hat{d}_i+b-d_i)^2

其中为防止对齐视差过小或负值,则利用1/z_{max}进行反向截断,对齐深度\hat{z}_i^*表示为:

        \hat{z}_i^*=\frac{1}{max(a^*\hat{d}_i+b^*,1/z_{max})}

2、FOV和shift

        FOV:视场角 (标准镜头45度,近景镜头:40度,广角镜头:60度)(FOV越大,看的范围越宽)

        EFL: 焦距(焦距越大,看的越远)

        FOV与EFL关系:FOV=2\times tan^{-1}(\frac{W}{2f}),其中W为传感器宽度,由垂直fov和水平fov限制。

FOV和W的图示

        单目几何估计输出场景三维模型,一般利用SfM,以往的MGE都是估计一个depth map,并且以未知的scale来结合相机内参,通过非投影方式恢复三维形状。

        相较于DUSt3R,使用多视图深度估计,使用尺度不变点映射,MoGe可以单目估计,而且使用仿射不变点映射。

        z轴方向的shift:就是相机在z轴方向的前后偏移。

3、ROE对齐求解器

        ROE 对齐求解器是一种高效的并行搜索算法,用于求解全局损失中的最优对齐参数 s∗ 和 t∗。它将原优化问题分解成一系列并行的一维子问题,将时间复杂度从O(N^3)降低到 O(N^2logN),大大提高了训练效率。同时,它还引入了截断绝对残差的策略,进一步提高了鲁棒性。

        MoGe中的全局损失和局部损失中的(s_j^*,t_j^*)都来自于ROE算法。

ROE alignment algorithm

四、MoGe

1、为什么设计仿射不变?

        根据下图,相似的一前一后两张单目图像,受到相机焦距和与物体的距离影响,导致在尺度不变性下存在不一致的观察效果,而仿射不变性下一致。这是不是也揭示了一些基于DUSt3R进行3D prior的生成模型,在不同视角下,与GT视角只保持了尺度一致,并不能保持仿射一致,不同视角下就会想着相机方向扭曲。

仿射不变和尺度不变产生不一致性

2、恢复相机焦距和移位 

        仿射不变点映射可以恢复相机位移和焦距,给定预测点(x_i,y_i,z_i)以及二维像素(u_i,v_i),可以求解相机焦距预测f和z轴偏移t_z'。全局尺度s,t_z'=t_z/s

        \min_{f,t_z'} \sum_{i=1}^N(\frac{fx_i}{z_i+t_z'}-u_i)^2+(\frac{fy_i}{z_i+t_z'}-v_i)^2

        看到附录里还有一部分直接简化掉焦距的计算,只最小化t_z'

3、MoGe框架

MoGe Framework

流程: 

        输入一张单目图像,经过DINOV2 预训练的ViT+轻量级的基于CNN的上采样器预测一个仿射不变点图\hat{P}和一个掩码\hat{M}用于排除无法定义几何的区域(如天空),直接给定为无穷远。

        之后从\hat{M}\hat{P}中通过ROE确定全局尺度因子s和平移t,并通过损失来优化参数,在推理过程直接就通过ROE求解得到最优的s和t。

        最后有了s和t,通过仿射不变点图\hat{P}恢复出相机空间下的点云P=s\hat{P}+t,进一步通过点云P提取出深度图,就是提取所有点的z坐标。

        而这个模型最优的点在于开创了一系列创新的全局和局部几何监督损失函数

(1)全局损失L_G:相较于以往的只考虑尺度不变,引入了偏移t。

        ​​​​​​​        ​​​​​​​        L_G=\sum_{i\in M}\frac{1}{z_i}||s \hat{p_i}+t-p_i||_1

        训练时应用全局损失来优化s和t,但是首先应该确定s和t,论文中提出了一种并行搜索方法ROE将问题分解为一系列平行一维子问题,降低复杂度到O(N^2logN)

(2)局部损失L_{S1},L_{S2},L_{S3}:保证在不同尺度下,独立预测和GT点云进行仿射对齐,计算局部几何差异。

        计算过程如下,首先给定一个GT 3D点p_j作为锚点,选择以p_j为中心,半径为r_j的球形区域内的点集S_j

        S_j= \left \{ i||p_i-p_j|| \leqslant r_j,i \in M \right \},其中r_j=\alpha \cdot z_j \cdot \sqrt{\frac{W^2+H^2}{2 \cdot f}}z_jp_j深度(z坐标),f为焦距,W,H为图像宽和高,\alpha \in (0,1),代表近似表示投影球体直径占图像对角线的比例,

        然后对这个局部点集S_j应用ROE对齐求解器,得到对齐参数(s_j^*,t_j^*)

        局部损失计算:论文给定\alpha=1/4,1/16,1/64,就是求一个局部球内的深度损失。

        下图表达单目几何估计下不同物体之间的相对距离可能模糊,所以考虑对于不同尺度进行分别估计。

(3)法线损失:计算预测法线和GT法线的向量角度差,保证预测点云法线和真实法线一致,预测点云法线通过与图像网格相邻边叉积得到。

(4)掩码损失:对于合成数据集,可以提前知道天空的mask,对于真实数据集使用SegFormer获得天空的mask,并且二值化,目的是监督模型预测正确的无效区域掩码,相当于直接给天空无穷远的z轴值。

五、实验

1、点映射比较

2、单目深度估计比较 

3、FOV比较

4、消融实验

        truncation是视差做截断的部分,L_S是局部损失。

5、可视化

 

论文参考:https://arxiv.org/abs/2410.19115 

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

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

相关文章

Jenkins安全部署规范及安全基线

Jenkins安全部署规范及安全基线 进入安全设置界面启用安全Disable remember me访问控制——安全域(Security Realm)servlet容器代理(Delegate to servlet container)Jenkins专有用户数据库(Jenkins’ own user databas…

写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践

自OceanBase 4.3.3版本推出以来,向量检索的能力受到了很多客户的关注,也纷纷表达希望OB能拓展更多 多模数据库大模型 的AI应用实践。 在上篇文章 👉 OceanBase LLM,免费构建你的专属 AI 助手 ,我们介绍了如何去搭建一…

5.npm包

文章目录 [TOC](文章目录) 3.npm与包3.1.包3.2.npm体验在项目中安装包的命令包管理配置文件一次性安装开发项目时安装的包如何从项目中卸载包devDependencies节点的作用解决下载包速度比较慢的问题nrm工具,利用其提供的终端命令,可以快速查看和切换下包的…

Dots 常用操作

游戏中有多个蚂蚁群落,每个蚂蚁属于一个群落,如何设计数据结构? 方法1:为蚂蚁组件添加一个属性 ID,会造成逻辑中大量分支语句,如果分支语句逻辑不平衡可能带来 Job 调度问题,每个蚂蚁会有一份蚂…

HTML与数据抓取:GET与POST方法详解

讲GET和POST就不能只讲GET和POST 你要讲HTTP请求的基本概念: HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,主要用于Web浏览器与Web服务器之间的数据通信。HTTP是一个基于…

Android 之 Activity 的启动模式(launchMode)

一、Activity 启动模式 在实际项目中&#xff0c;应该根据项目的实际需要来为每个 Activity 指定恰当的启动模式 launchMode。启动模式一共有四种&#xff0c;分别是 standard、singleTop、singleTask 和 singleInstance。可以在 AndroidManifest.xml 中通过给 <activity&g…

软考:系统架构设计师教材笔记(持续更新中)

教材中的知识点都会在。其实就是将教材中的废话删除&#xff0c;语言精练一下&#xff0c;内容比较多&#xff0c;没有标注重点 系统架构概述 定义 系统是指完成某一特定功能或一组功能所需要的组件集&#xff0c;而系统架构则是对所有组件的高层次结构表示&#xff0c;包括各…

大模型应用—IOPaint 图片去水印

IOPaint 是由 SOTA AI 模型提供支持的免费开源修复和修复工具,可以轻松实现图片去水印,去除图片不需要的部分,是目前效果最好的一个项目!完全免费开源 IOPaint 已经托管到 hugging face上,打开就可以直接免费使用,需要外网环境! 在线免费使用:【链接直达】 如果你需要…

Go C编程 第6课 无人机 --- 计算旋转角

旋转的秘密---认识角度 rt、lt命令学习 goc电子课程 一、编程步骤 第一步 第二步 第三步 第四步 二、画“四轴无人机” &#xff08;一&#xff09;、画第一根机轴 &#xff08;二&#xff09;、画第二根机轴 &#xff08;三&#xff09;、画完整的无人机 三、画“多轴无人…

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。 一般来说&#xff0c;通过uboot将屏幕参数传给kernel&#xff0c;是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里&#xff0c;我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…

【编译原理】编译原理知识点汇总·语法分析器(消除左递归、消除二义性、自顶向下语法分析、自下向上语法分析)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;编译原理_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

golang 并发--goroutine(四)

golang 语言最大的特点之一就是语法上支持并发&#xff0c;通过简单的语法很容易就能创建一个 go 程&#xff0c;这就使得 golang 天生适合写高并发的程序。这一章节我们就主要介绍 go 程&#xff0c;但是要想完全理解 go 程我们需要深入研究 GPM 模型&#xff0c;关于 GPM 模型…

Wireshark协议相关功能:过滤、启用/禁用、导出和统计查看

简述 Wireshark 是一个非常强大的网络分析工具&#xff0c;广泛用于网络故障排查、安全分析、协议分析等任务。在使用 Wireshark 进行网络抓包和协议分析时&#xff0c;掌握一些基本的操作技巧对于提高效率和准确性至关重要。本文将介绍 Wireshark 中如何进行协议相关的操作&a…

渗透Vulnhub-DC-9靶机

本篇文章旨在为网络安全渗透测试行业靶机教学。通过阅读本文&#xff0c;读者将能够对渗透Vulnhub系列DC-6靶机有定的了解 一、信息收集阶段 DC-9靶场信息: DC-9靶场介绍&#xff1a; https://www.vulnhub.com/entry/dc-9,412/ DC-9靶场下载&#xff1a; https://download.vu…

【Linux系列】Shell 命令:`echo ““ > img.sh`及其应用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

云图库平台(三)——后端用户模块开发

需求分析&#xff1a;对于用户模块而言&#xff0c;通常要实现下列功能&#xff1a; 用户注册&#xff1a;用户输入账号、密码、确认密码进行注册账号用户登录&#xff1a;用户通过输入账号、密码登录注册账号获取当前登录用户信息&#xff1a;即得到当前已登录用户的信息用户…

怎么设置电脑密码?Windows和Mac设置密码的方法

为电脑设置密码是保护个人信息安全的重要措施。无论是Windows系统还是MacOS系统&#xff0c;设置密码的步骤都相对简单&#xff0c;但需要根据不同的操作系统选择不同的方法。 一、Windows系统电脑密码设置 方法一&#xff1a;通过控制面板设置账户密码 点击桌面左下角的“开…

思考: 与人交际

前晚可能是因为我和某个曾经的同学&#xff08;我认为是朋友&#xff0c;但是它真的很讨厌&#xff0c;现在觉得它在PUA很多人&#xff09;发生了一件事情&#xff0c;现在没关系了&#xff0c;算是到此结束了&#xff0c;再也不见。 让我看清楚了人和人的交际需要什么&#xf…

突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除

GitLab停止为中国大陆、香港和澳门地区提供服务&#xff0c;要求用户在60天内迁移账号&#xff0c;否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息&#xff1a; 1. 背景介绍&#xff1a;GitLab是一家全球知名的软件开发平台&#xff0c;提供代码托…

vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)

扫描出ip为192.168.121.161 访问该ip&#xff0c;发现只是一个静态页面什么也没有 使用dir dirsearch 御剑都只能扫描到/robots.txt /server-status 两个页面&#xff0c;前者提示我们什么也没有&#xff0c;后面两个没有权限访问 扫描端口&#xff0c;存在81端口 访问&#x…