【论文精读】DMVSNet

news2024/11/17 1:56:33

今天读的是一篇发表在ICCV 2023上的文章,作者来自华中科技大学。
文章地址:点击前往
项目地址:Github

文章目录

  • Abstract
  • 1 Introduction
  • 2 Relative Work
  • 3 Motivation
    • 3.1 Estimated bias and interpolated bias
    • 3.2 One-sided V.S. Saddle-shaped
  • 4 Dual-Depth Prediction
    • 4.1 Review of learning-based MVS
    • 4.2 Dual-Depth
    • 4.3 Cascade Dual-Depths
    • 4.4 DMVSNet
  • 5 Experiments
  • 6 Ablation Study
  • 7 Conclusion

Abstract

现有方法忽略了一个事实,即合适的深度几何形状在 MVS 中也至关重要。 在本文中,我们证明了即使使用相同的深度预测误差,不同的深度几何形状也具有显着的性能差距。 因此,我们引入了由鞍形细胞组成的理想深度几何形状,其预测深度图围绕真实表面向上和向下振荡,而不是保持连续且平滑的深度平面。 为了实现这一目标,我们开发了一个名为 Dual-MVSNet (DMVSNet) 的从粗到细的框架,它可以产生一个振荡的深度平面。 从技术上讲,我们预测每个像素的两个深度值(双深度),并提出一种新颖的损失函数和棋盘形选择策略来约束预测的深度几何形状。 与现有方法相比,DMVSNet在DTU基准测试中取得了较高的排名,并在Tanks and Temples等具有挑战性的场景中获得了顶尖的性能,展示了其强大的性能和泛化能力。 我们的方法还指出了在MVS中考虑深度几何的新研究方向。

1 Introduction

在这项工作中,我们引入了在 MVS 中考虑深度几何的新视角。 我们首次提出了鞍形单元的深度几何结构,并证明了其对于 MVS 重建任务的重要性。 技术上,我们提出了双深度方法来实现鞍形单元,并设计了相应的网络框架DMVSNet。 借助双深度方法,DMVSNet 在 DTU 数据集上实现了顶级性能,在 Tanks 和 Temple 数据集上实现了 SOTA 性能。

2 Relative Work

介绍了传统和基于学习的MVS。

3 Motivation

3.1 Estimated bias and interpolated bias

在这里插入图片描述
在图2所示的fusion过程中,参考视图中的像素使用估计的深度图投影到空间中的 3D 点上。 然后使用各自的相机参数将该 3D 点重新投影到其他视图中的子像素上,并使用相应的深度图来获取新的 3D 点。 最终的 3D 重建结果由参考视图中像素的深度差和其他视图中子像素的估计深度(例如,通过平均)确定。 因此,3D重建结果的准确性不仅受到估计深度图的准确性的影响,而且还受到子像素插值深度的准确性的影响。 子像素深度是通过线性插值相邻像素的深度来估计的,其准确性受到估计偏差和深度单元†的影响。 图4显示,在相同的估计偏差和插值位置下,由于不同的深度单元,插值深度的精度会有所不同。 因此,考虑不同单元的深度几何形状对 MVS 的影响非常重要。
在这里插入图片描述

3.2 One-sided V.S. Saddle-shaped

在这里插入图片描述
为了简要说明深度单元的差异,我们在图3中提出了两个假设的深度单元: a)One-sided; b) Saddle-shaped。 我们假设具有相同绝对估计偏差“1”的插值位置是均匀分布的。 深度平面(黄色)和GT平面(蓝色)之间的spatial volume可以被视为预期的absolute interpolation error。 从数学上讲,““one-sided cell”的预期绝对插值误差是“saddle-shaped cell”的4倍。

为了定量证明不同单元的深度几何形状对 3D 点重建性能的影响,我们进行了验证实验。 在每个像素的绝对估计偏差相同的假设下,我们使用真实深度翻转估计的深度值,使它们按照图3所示的两个单元分布。表1中的实验结果表明,depth geometries with different cells对 3D 点重建的质量有显着影响,包括准确性和完整性,即使准确性差异超过 60%(表 1 中的第二行和第三行)。 这表明鞍形单元的深度几何结构是提高 MVS 性能的可行方法。
在这里插入图片描述
在这里插入图片描述
现有的大多数MVS方法都没有对深度单元施加约束,因此它们的深度图分布在由单边单元和鞍形单元组成的几何图形之间,这决定了3D点重建的精度介于由两种理想几何图形组成的性能之间 奇异细胞(如表1第一行所示)。 此外,在没有深度单元限制的情况下,尽管深度预测性能更好,但可能会获得较差的 3D 度量(表 2)。 我们如何约束网络生成具有更多鞍形单元的深度图? 在上面的实验中,使用groundtruth翻转估计深度的方法是一个先有鸡还是先有蛋的问题,在实际推理中是不可行的。 在下一节中,我们将引入双深度预测来解决这个困境。

4 Dual-Depth Prediction

4.1 Review of learning-based MVS

4.2 Dual-Depth

针对具有更多鞍形单元的振荡深度几何形状,我们选择预测每个像素的两个深度值。 如果双深度分布在真实深度的任一侧,启发式选择策略可以实现目标几何形状。

具体来说,我们为每个像素生成两个概率分布,并使用它们生成两个相应的深度D(参见等式(3))。 为了确保独立预测的双深度的准确性,我们采用 L1 损失来监督它们的预测值,如之前的工作一样。 直观上,如果不增加对偶深度联合分布的约束,得到的预测分布是无序的。 因此,我们提出了另一种新颖的损失来限制两个深度在地面实况周围对称分布:
在这里插入图片描述
其中 ∣ ⋅ ∣ |·| 表示绝对距离, m a x ( ⋅ ) max(·) max() m i n ( ⋅ ) min(·) min()取沿第一维的最大值和最小值,例如 m a x ( D ) = m a x ( D [ 1 , : , : ] , D [ 2 , : , : ] ) max (D) = max (D[1, :, :], D[2, :, :]) max(D)=max(D[1,:,:],D[2,:,:]) L i n t L_{int} Lint 鼓励估计偏差不大于 ∣ m a x ( D ) − m i n ( D ) ∣ |max(D) − min(D)| max(D)min(D),使得间隔随着估计偏差的增加而增加,这保证了双深度分布在真实深度的两侧。 如果 m a x ( D ) = m i n ( D ) = D g max(D) = min(D) = D_{g} max(D)=min(D)=Dg L i n t L_{int} Lint 达到最小值,表明深度估计是无偏的,与 L e s t L_{est} Lest 的目标一致。

当真实深度值位于预测的双深度之间时,我们提出一种棋盘选择策略来为每个像素选择合适的深度预测值。 具体来说,我们交替选择最大和最小预测深度值,创建类似于棋盘的分布。 如图5(a)所示,像素(x,y)的深度由下式确定:
在这里插入图片描述
它生成振荡深度图 D c D_{c} Dc 。 如图6所示,通过双深度方法获得的深度图实现了由鞍形单元组成的几何形状。 框内的深度图是平滑的,表明预测值接近真实值。 同时,其对应的深度几何形状呈现出马鞍形的形态,这与我们的预期是一致的。
在这里插入图片描述
在这里插入图片描述
然而,当 ( x , y ) (x,y) (xy)处的真实深度值不在 m i n ( D ) ( x , y ) min(D)(x,y) min(D)(xy) m a x ( D ) ( x , y ) max(D)(x,y) max(D)(xy)范围内时,上述方法可能会带来增加深度预测误差的潜在风险 。 为了解决这个问题,我们建议使用Cascade Dual-Depths。

4.3 Cascade Dual-Depths

这里主要讲了怎么改进confidence map来适配dual depth。
在这里插入图片描述
在这里插入图片描述

4.4 DMVSNet

在这里插入图片描述

5 Experiments

实验结果还不错,但并不是文章所说的SOTA,发表的时候无论是同样中了ICCV 2023的ET-MVSNet(甚至作者同样也来自华科)还是之前CVPR 2023的GeoMVSNet都表现更好。
在这里插入图片描述
在这里插入图片描述

6 Ablation Study

7 Conclusion

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

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

相关文章

Leetcode154. Find Minimum in Rotated Sorted Array II

旋转数组找最小,这次值可以重复 不妨假设你已经做了上一题,题解 上一题的方法1肯定是用不了了,因为不再能完全分成2个不同的部分 所以我们沿着方法2走 如果 > n u m s [ r ] >nums[r] >nums[r],我们依然可以找右半边 …

SpringBoot 自动配置原理

SpringBoot 自动配置原理 注: 本文使用的springboot版本为 2.7.11 1、SpringBootApplication 字面分析,这个注解是标注一个Spring Boot应用。 Target({ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Documented Inherited SpringBootConfiguration En…

电路设计之36V 自动断电和防浪涌电路

1. 电路图纸 2. 解释防浪涌功能怎么实现的 1. 首先当电源上电的一瞬间是 电容C1 是相当于短路的。 (电容的充电状态。电容充电相当于短路状态) 2. 当上电的一瞬间是有 浪涌的。 3.当上电的瞬间有浪涌的,此时电容C1 相当于短路,所…

第一百七十一回 SearchBar组件

文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"Material3中的IconButton"相关的内容,本章回中将 介绍SearchBar组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

自定义类型:联合和枚举

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1. 联合体 1.1 联合体类型的声明 1.2 联合体的特点 1.3 相同成员的结构体和联合体对比 1.4 联合体大小的计算 1.5 联合的一个练习 2. 枚举类型 2.1 枚举类型的声明…

MSF图形化工具Viper快速安装

简介 Viper(炫彩蛇)是一款图形化内网渗透工具,将内网渗透过程中常用的战术及技术进行模块化及武器化. Viper(炫彩蛇)集成杀软绕过,内网隧道,文件管理,命令行等基础功能. Viper(炫彩蛇)当前已集成70个模块,覆盖初始访问/持久化/权限提升/防御绕过/凭证访问/信息收集/横向移动等…

链表OJ题(4)

目录 10.链表的回文结构 11.随机链表的复制 🙂找中间节点一定要考虑偶数个和奇数个的问题。 🙂指针指向的前中后。 🙂链表节点的位置个数/链表的节点中的数字。🆗🆗 今天最后两道链表OJ题目。 10.链表的回文结构…

事件循环Eventloop

事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有…

AIGC专栏8——EasyPhoto 视频领域拓展-让AIGC肖像动起来

AIGC专栏8——EasyPhoto 视频领域初拓展-让AIGC肖像动起来 学习前言源码下载地址技术原理储备Video Inference 功能说明 & 效果展示1、Text2Video功能说明a、实现原理简介b、文到视频UI介绍c、结果展示 2、Image2Video功能说明a、实现原理简介i、单图模式ii、首尾图模式 b、…

KDE Plasma 6 将不支持较旧的桌面小部件

KDE Plasma 6 进行了一些修改,需要小部件作者进行调整。开发人员,移植时间到了! KDE Plasma 6 是备受期待的桌面环境版本升级版本。 最近,其发布时间表公布,第一个 Alpha 版本将于 2023 年 11 月 8 日上线&#xff0…

Vue3+NodeJS 接入文心一言, 发布一个 VSCode 大模型问答插件

目录 一&#xff1a;首先明确插件开发方式 二&#xff1a;新建一个Vscode 插件项目 1. 官网教程地址 2. 一步一步来创建 3. 分析目录结构以及运行插件 三&#xff1a;新建一个Vue3 项目&#xff0c;在侧边栏中展示&#xff0c;实现vscode插件 <> vue项目 双向消息传…

Nuxt.js——基于 Vue 的服务端渲染应用框架

文章目录 前言一、知识普及什么是服务端渲染什么是客户端渲染&#xff1f;服务端渲染与客户端渲染那个更优秀&#xff1f; 二、Nuxt.js的特点Nuxt.js的适用情况&#xff1f; 三、Vue是如何实现服务端渲染的&#xff1f;安装依赖使用vue安装 Nuxt使用npm install安装依赖包使用n…

配置云服务器

一、概念 现如今越来越多的企业或者个人开发者都会选择去购买一台云服务器&#xff0c;云服务器相比较与传统的物理服务器他的价格优势&#xff0c;以及一系列可客制化的服务也方便大家去选择&#xff0c;大大节约了空间&#xff0c;运维&#xff0c;开发等等一系列成本。现如…

Python---字符串 lstrip()--删除字符串两边的空白字符、rstrip()--删除字符串左边的空白字符、strip()--删除字符串右边的空白字符

strip() 方法主要作用&#xff1a;删除字符串两边的空白字符&#xff08;如空格&#xff09; lstrip() 方法 left strip&#xff0c;作用&#xff1a;只删除字符串左边的空白字符 left 英 /left/ 左 rstrip() 方法 right strip&#xff0c;作用&#xff1a;只删除字符…

ELK之Logstash解析时间相差8h的问题

一、问题描述 服务器当前时间为&#xff1a;2022年 06月 28日 星期二 11:24:22 CST 而logstash解析的时间为2022-06-28T03:15:25.545Z与实际时间相差8h 一、解决办法&#xff1a; 需改logstash的配置文件&#xff1a; 原理就是&#xff1a;定义一个中间变量timestamp&…

【Java 进阶篇】Java与JQuery:探秘事件绑定、入口函数与样式控制

在现代的Web开发中&#xff0c;Java和JQuery是两个不可或缺的角色。Java为我们提供了强大的后端支持&#xff0c;而JQuery则是前端开发的得力助手。本篇博客将围绕Java和JQuery&#xff0c;深入探讨事件绑定、入口函数和样式控制&#xff0c;带你进入前端开发的奇妙世界。 Jav…

小程序中如何设置门店信息

小程序是商家转型升级的利器&#xff0c;小程序中门店信息的准确性和完整性对于用户的体验和信任度都有很大的影响。下面具体介绍门店信息怎么在小程序中进行设置。 在小程序管理员后台->门店设置处&#xff0c;可以门店设置相关。主要分为2个模块&#xff0c;一个是门店级…

基于springboot实现驾校管理系统项目【项目源码】计算机毕业设计

基于springboot实现驾校管理系统演示 JAVA简介 JavaScript是一种网络脚本语言&#xff0c;广泛运用于web应用开发&#xff0c;可以用来添加网页的格式动态效果&#xff0c;该语言不用进行预编译就直接运行&#xff0c;可以直接嵌入HTML语言中&#xff0c;写成js语言&#xff0…

数据结构与算法—归并排序计数排序

目录 一、归并排序 1、主函数 2、递归实现 3、优化递归 4、非递归实现 5、特性总结&#xff1a; 二、计数排序 1、代码&#xff1a; 2、特性总结&#xff1a; 三、各种排序稳定性总结 一、归并排序 基本思想&#xff1a; 归并排序是建立在归并操作上的一种有效的排序…

模型部署:量化中的Post-Training-Quantization(PTQ)和Quantization-Aware-Training(QAT)

模型部署&#xff1a;量化中的Post-Training-Quantization&#xff08;PTQ&#xff09;和Quantization-Aware-Training&#xff08;QAT&#xff09; 前言量化Post-Training-Quantization&#xff08;PTQ&#xff09;Quantization-Aware-Training&#xff08;QAT&#xff09; 参…