Metric3D:Towards Zero-shot Metric 3D Prediction from A Single Image

参考代码:Metric3D

介绍

在如MiDas、LeReS这些文章中对于来源不同的深度数据集使用归一化深度作为学习目标,则在网络学习的过程中就天然失去了对真实深度和物体尺寸的度量能力。而这篇文章比较明确地指出了影响深度估计尺度变化大的因素就是焦距 f f f,则对输入的图像或是GT做对应补偿之后就可以学习到具备scale表达能力的深度预测,这个跟车端视觉感知的泛化是一个道理。需要注意的是这里使用到的训练数据集需要预先知道相机的参数信息,且这里使用的相机模型为针孔模型。

在下图中首先比较了两种不同拍摄设备得到的图片在文章算法下测量物体的效果,可以说相差不大。
在这里插入图片描述

有了较为准确的深度估计结果之后,对应的单目slam、里程记这些都不是问题了。在配上大量的深度估计训练数据,那么泛化能力将会得到巨大提升,届时之前许多病态的问题都将得到解决。

方法设计

明确影响深度scale学习关键因子为焦距 f f f

对于针孔相机其内参主要参数为: f x δ x , f y δ y , u 0 , v 0 \frac{f_x}{\delta_x},\frac{f_y}{\delta_y},u_0,v_0 δxfx,δyfy,u0,v0,其中 f x , f y , δ x , δ y f_x,f_y,\delta_x,\delta_y fx,fy,δx,δy分别代表两个方向的焦距(一般情况下取两者相等)和像素大小,物理单位为微米。在相机中还有一个参数是成像传感器的尺寸,但是这个只影响成像的大小,就好比残画幅单反和全画幅单反的区别。

对于另外一个因素 δ \delta δ代表的是一个像素大小,在单孔成像原理中焦距、深度和成像大小的关系为(使用下图A图做相似三角形计算得到):
d a = S ^ [ f S ^ ′ ] = S ^ ⋅ α , α = [ f S ^ ′ ] d_a=\hat{S}[\frac{f}{\hat{S}^{'}}]=\hat{S}\cdot\alpha,\alpha=[\frac{f}{\hat{S}^{'}}] da=S^[S^f]=S^α,α=[S^f]
其中, S ^ , S ^ ′ \hat{S},\hat{S}^{'} S^,S^分别代表物体真实与成像大小,因而物体的深度大小只与焦距和物体像素下大小组成的比例因子有关系。
在这里插入图片描述

那么其中因素 δ \delta δ代表的是像素大小,在相同焦距情况下不同的因素 δ \delta δ会导致生成等比例的像素表达下的焦距 f ′ f^{'} f,但是由于不同因素 δ \delta δ它们在图像上呈现出来的分辨率也是不一样的,好比上图中的B图。则经过等比例抵消之后因素 δ \delta δ的影响被消除,剩下产生影响的只有焦距这个变量了。下面对比了不同焦距、不同距离下的成像差异:
在这里插入图片描述

训练数据对齐

为了使得网络能够有效利用多种来源数据,这里需要首先假设一个虚拟相机参数,其中的关键参数为 f x c , f y c f_x^c,f_y^c fxc,fyc,一般情况下取两者相等,记为 f c f^c fc。则按照下图所示的两种变换关系便可使得网络在统一的尺度上完成训练。
在这里插入图片描述
对于对齐的策略可以从两个维度出发:

  • 1)深度对齐(CSTM_label):确定当前图片拍摄相机与期望相机的焦距比例 w d = f c f w_d=\frac{f^c}{f} wd=ffc,则这里不需要变换图片只需要修改对应深度GT就可以, D c ∗ = w d ⋅ D ∗ D_c^*=w_d\cdot D^* Dc=wdD,在预测得到结果之后深度再做一个逆变换就可恢复到真实图像表示的深度下。
  • 2)图像对齐(CSTM_image):确定当前图片拍摄相机与期望相机的焦距比例 w r = f c f w_r=\frac{f^c}{f} wr=ffc,用这个比例来确定图像的缩放比例,但是这里需要保持图像原本的图像尺寸不变,将缩放之后的图像会贴在光心所在的位置上,GT也是对应的操作。相当于是人为做了scale对齐。

然后对比俩个对齐方式对性能的影响:
在这里插入图片描述

只能说在不同数据集下表现各异,差异也大不到哪里去。反倒是期望焦距的选择对最后性能还有一些影响:
在这里插入图片描述

深度监督与约束

参考scale-invariable深度估计中的损失函数设计,这里设计了一个与之类似的损失函数,y也就是在图像上去截取对应区域进行计算,定义为:
L R P N L = 1 M N ∑ p i M ∑ j N ∣ d p i , j ∗ − μ ( d p i , j ∗ ) 1 N ∑ j N ∣ d p i , j ∗ − μ ( d p i , j ∗ ) ∣ − d p i , j − μ ( d p i , j ) 1 N ∑ j N ∣ d p i , j − μ ( d p i , j ) ∣ ∣ L_{RPNL}=\frac{1}{MN}\sum_{p_i}^M\sum_j^N|\frac{d_{p_i,j}^*-\mu(d_{p_i,j}^*)}{\frac{1}{N}\sum_j^N|d_{p_i,j}^*-\mu(d_{p_i,j}^*)|}-\frac{d_{p_i,j}-\mu(d_{p_i,j})}{\frac{1}{N}\sum_j^N|d_{p_i,j}-\mu(d_{p_i,j})|}| LRPNL=MN1piMjNN1jNdpi,jμ(dpi,j)dpi,jμ(dpi,j)N1jNdpi,jμ(dpi,j)dpi,jμ(dpi,j)
其中, μ ( ) , M = 32 \mu(),M=32 μ()M=32分别代表截取区域内的深度取中值操作和取的总块数量,对于块的大小设置为图像尺寸比例倍率,取值区间为 [ 0.125 , 0.5 ] [0.125,0.5] [0.125,0.5]

总的损失函数描述为(structure ranking + virtual norm + silog):
L = L P W N + L V N L + L s i l o g + L R P N L L=L_{PWN}+L_{VNL}+L_{silog}+L_{RPNL} L=LPWN+LVNL+Lsilog+LRPNL
这些损失函数对于性能的影响:
在这里插入图片描述

实验结果

KITTI和NYU数据集下的性能比较:
在这里插入图片描述

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

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

相关文章

TypeC拓展设计方案|TypeC转HDMI设计方案|CS5261/CS5265芯片设计参数对比

集睿智远CS5261/CS5265都可以用于设计TypeC转HDMI方案,低成本TypeC扩展坞设计方案,而两者也有些差异:1.CS5261支持DP1.4输入,一个HDMI1.4输出,即HDMI输出为4K30HZ ;CS5265DP1.4到HDMI2.0转换芯片,即HDMI输出…

ansible安装lnmp(集中式)

文章目录 一、安装nginx二、安装mysql三、安装php测试: 一、安装nginx - name: the nginx playhosts: webserversremote_user: roottasks:- name: stop firewalld #关闭防火墙service: namefirewalld statestopped enabledno- name: selinux stopc…

Python元编程-装饰器介绍、使用

目录 一、Python元编程装饰器介绍 二、装饰器使用 1. 实现认证和授权功能 2.实现缓存功能 3.实现日志输出功能 三、附录 1. logging.basicConfig介绍 2. 精确到毫秒,打印时间 方法一:使用datetime 方法二:使用time 一、Python元编程…

C# 根据图片的EXIF自动调整图片方向

PropertyItems 代码 /// <summary>/// 根据图片exif调整方向/// </summary>/// <param name"img"></param>public void RotateImage(Bitmap img){var exif img.PropertyItems;byte orien 0;var item exif.Where(m > m.Id 274).ToArra…

关于综合能源智慧管理系统的架构及模式规划的研究

安科瑞 华楠 摘 要&#xff1a;探讨了国内外能源互联网的研究发展&#xff0c;分析了有关综合智慧能源管理系统的定位&#xff0c;以及系统的主要特点&#xff0c;研究了综合智慧能源管理系统的构架以及模式规划。 关键词&#xff1a;综合能源&#xff1b;智慧管理系统&#…

前端开发:基于cypress的自动化实践

如何在vue中使用cypress如何运行cypress如何编写测试用例如何解决测试数据的问题遇到的元素定位的问题如何看待cypresscypress是否为最佳工具测试怎么办&#xff1f; 如何在vue中使用cypress vue提供了vue-cli 可以快速的创建vue项目。 vue create hello-world在选择安装项里…

【李宏毅机器学习·学习笔记】Deep Learning General Guidance

本节课可视为机器学习系列课程的一个前期攻略&#xff0c;这节课主要对Machine Learning 的框架进行了简单的介绍&#xff1b;并以training data上的loss大小为切入点&#xff0c;介绍了几种常见的在模型训练的过程中容易出现的情况。 课程视频&#xff1a; Youtube&#xff1…

Java并发系列之二:悲观锁机制

什么是锁 在并发环境下&#xff0c;会出现多个线程对同一个资源进行争抢的情况&#xff0c;假设A线程对资源正在进行修改&#xff0c;此时B线程此时又对资源进行了修改&#xff0c;这就可能会导致数据不一致的问题。为了解决这个问题&#xff0c;很多编程语言引入了锁机制&…

前端学习--vue2--插槽

写在前面&#xff1a; 这个用法是在使用组件和创建组件中 文章目录 介绍简单使用多个插槽省写默认/后备内容作用域插槽常用实例Element-ui的el-table 废弃用法slot attributeslot-scope attribute 介绍 我们在定义一些组件的时候&#xff0c;由于组件内文字想要自定义&#…

ssh安全远程管理

目录 1、什么是ssh 2、ssh登陆 3、ssh文件传输 1、什么是ssh ssh是 Secure Shell 的缩写&#xff0c;是一个建立在应用层上的安全远程管理协议。ssh 是目前较为可靠的传输协议&#xff0c;专为远程登录会话和其他网络服务提供安全性。利用ssh 协议可以有效防止远程管理过程中…

机器学习笔记之优化算法(二)线搜索方法(方向角度)

机器学习笔记之优化算法——线搜索方法[方向角度] 引言回顾&#xff1a;线搜索方法从方向角度观察线搜索方法场景构建假设1&#xff1a;目标函数结果的单调性假设2&#xff1a;屏蔽步长 α k \alpha_k αk​对线搜索方法过程的影响假设3&#xff1a;限定向量 P k \mathcal P_k …

0基础学习VR全景平台篇 第76篇:全景相机-圆周率全景相机如何直播推流

圆周率科技&#xff0c;成立于2012年&#xff0c;是中国最早投身嵌入式全景算法研发的团队之一&#xff0c;亦是全球市场占有率最大的全景算法供应商。相继推出一体化智能屏、支持一键高清全景直播的智慧全景相机--Pilot Era和Pilot One&#xff0c;为用户带来实时畅享8K的高清…

PyTorch代码实战入门

人这辈子千万不要马虎两件事 一是找对爱人、二是选对事业 因为太阳升起时要投身事业 太阳落山时要与爱人相拥 一、准备数据集 蚂蚁蜜蜂数据集 蚂蚁蜜蜂的图片&#xff0c;文件名就是数据的label 二、使用Dataset加载数据 打开pycharm&#xff0c;选择Anaconda创建的pytorch环…

《工具箱-VNCServer》配置VNCServer,使用VNCViewer实现局域网内页面共享

VNCServer设置 通过VNCServer配置&#xff0c;与VNCviewer配套使用 1.下载并安装VNCServer 2.邮箱密码注册后用户登录 3.设置VNC密码 4.设置viewer不能控制本机 5.打开VNClicensewiz&#xff0c;选择“Enter a license key …” BQ24G-PDXE4-KKKRS-WBHZE-F5RCA BQ24G-PDXE4-…

Java中集合容器详解:简单使用与案例分析

目录 一、概览 1.1 Collection 1. Set 2. List 3. Queue 1.2 Map 二、容器中的设计模式 迭代器模式 适配器模式 三、源码分析 ArrayList 1. 概览 2. 扩容 3. 删除元素 4. 序列化 5. Fail-Fast Vector 1. 同步 2. 扩容 3. 与 ArrayList 的比较 4. 替代方案…

服务器介绍

本文章转载与b战up主谈三国圈&#xff0c;仅用于学习讨论&#xff0c;如有侵权&#xff0c;请联系博主 机架型服务器 堆出同时服务百万人次机组 刀型服务器 服务器炸了 比如用户访问量暴增 超过机组的峰值处理能力&#xff0c;进而导致卡顿或炸服&#xff0c; 适合企业的塔式…

同样是跨端框架,React会不会被VUE取代?

看到知乎上有比较多的类似问题&#xff0c;正好这两个框架在以往的一些项目中都有实践过&#xff0c;就借着本篇文章说说我个人的看法。 先摆个结论&#xff1a;不会&#xff0c;毕竟各有千秋&#xff0c;除非跨端框架有被更好的概念所替代&#xff0c;又或者App已经彻底过气了…

Pandas进阶修炼120题-第三期(金融数据处理,51-80题)

目录 往期内容&#xff1a;第一期&#xff1a;Pandas基础&#xff08;1-20题&#xff09;第二期&#xff1a;Pandas数据处理&#xff08;21-50题&#xff09; 第三期 金融数据处理51.使用绝对路径读取本地Excel数据方法一&#xff1a;双反斜杠绝对路径方法二&#xff1a;r 拓展…

【Docker】Docker安装Kibana服务_Docker+Elasticsearch+Kibana

文章目录 1. 什么是Kibana2. Docker安装Kibana2.1. 前提2.2. 安装Kibana 点击跳转&#xff1a;Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套&#xff08;质量有保证&#xff0c;内容详情&#xff09; 1. 什么是Kibana Kibana 是一款适用于Elasticse…

Java三大特征之继承【超详细】

文章目录 一、继承概念二、继承的语法三、父类成员访问3.1子类中访问父类的成员变量3.2子类和父类成员变量同名3.3子类中访问父类的成员方法 四、super关键字五、子类构造方法六、super和this七、再谈初始化八、protected 关键字九、继承方式十、final 关键字十一、继承与组合 …