【论文精读】DMVSNet

今天读的是一篇发表在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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么做到高性能网络IO?

为什么要做高性能网络IO。主要是解决c10,c10M问题 最开始的时候我们走的内核协议栈,走内核协议栈其实性能比较低,因为我们之前介绍的时候需要拷贝两次 但是我们采用用户态协议栈可以少拷贝一次,可以大大提高效率, 步骤…

基于粒子群算法优化概率神经网络PNN的分类预测 - 附代码

基于粒子群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于粒子群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于粒子群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

职业迷茫,我该如何做好职业规划

案例25岁男,入职2月,感觉自己在混日子,怕能力没有提升,怕以后薪资也提不起来。完全不知道应该往哪个方向进修,感觉也没有自己特别喜欢的。感觉自己特别容易多想,想多年的以后一事无成的样子。 我觉得这个案…

Tektronix(泰克)示波器TBS1102B测试电压

对于 Tektronix TBS1102B 示波器来说,测试电压的步骤基本如下: 连接测量点: 将被测电路的测量点连接到示波器的输入通道。使用正确的探头并确保连接的极性正确。 选择通道: 选择示波器上的通道,你想要测量的电压可能连…

20231112_DNS详解

DNS是实现域名与IP地址的映射。 1.映射图2.DNS查找顺序图3.DNS分类和地址4.如何清除缓存 1.映射图 图片来源于http://egonlin.com/。林海峰老师课件 2.DNS查找顺序图 3.DNS分类和地址 4.如何清除缓存

单链表按位序与指定结点 删除

按位序删除(带头结点) #define NULL 0 #include<stdlib.h>typedef struct LNode {int data;struct LNode* next; }LNode, * LinkList;//按位序删除&#xff08;带头结点&#xff09; bool ListInsert(LinkList& L, int i, int& e) {if (i < 1)return false;L…

【Spring Cloud】声明性REST客户端:Feign

Spring Cloud Feign ——fallback 服务降级 1. Feign 简介2. Feign 的基础使用2.1 普通 HTTP 请求2.2 Feign 远程调用上传文件接口 1. Feign 简介 Feign 是一个声明式的 HTTP 客户端&#xff0c;它简化了编写基于 REST 的服务间通信代码的过程。在 Spring Cloud 中&#xff0c…

如何从零开始手写一个消息中间件(从宏观角度理解消息中间件的技术原理)

如何从零开始手写一个消息中间件&#xff08;从宏观角度理解消息中间件的技术原理&#xff09; 什么是消息中间件消息中间件的作用逐一拆解消息中间件的核心技术消息中间件核心技术总览IOBIONIOIO多路复用AIOIO多路复用详细分析selectpollepoll Java中的IO多路复用 协议序列化消…

【算法每日一练]-快速幂,倍增,滑动窗口(保姆级教程 篇1) #麦森数 #青蛙跳

之前是考试准备&#xff0c;所以有几天没更新&#xff0c;今天开始继续更新 目录 快速幂模板 题目&#xff1a;麦森数 思路&#xff1a; 题目&#xff1a;青蛙跳 思路&#xff1a; 快速幂模板 #include <bits/stdc.h> #define ll long long using namespa…

.net在使用存储过程中IN参数的拼接方案,使用Join()方法

有时候拼接SQL语句时&#xff0c;可能会需要将list中的元素都加上单引号&#xff0c;并以逗号分开&#xff0c;但是Join只能简单的分开&#xff0c;没有有单引号&#xff01; 1.第一种拼接方案 List<string> arrIds new List<string>(); arrIds.Add("aa&qu…

JavaScript_动态表格_删除功能

1、动态表格_删除功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>动态表格_添加和删除功能</title><style>table{border: 1px solid;margin: auto;width: 100%;}td,th{text-align: …

杂记 | 使用FRP搭建内网穿透服务(新版toml配置文件,搭配反向代理食用)

文章目录 01 需求与回顾02 下载程序包03 编辑.toml文件3.1 编辑frps.toml3.2 编辑frpc.toml 04 启动服务4.1 启动服务端4.2 启动客户端 05 配置反向代理&#xff08;可选&#xff09;06 windows设置为默认启动&#xff08;可选&#xff09;6.1 创建启动脚本6.2 设置为开机自启 …

【Java 进阶篇】Java与JQuery选择器:解锁前端开发的魔法大门

在前端开发的世界中&#xff0c;选择器是我们与HTML文档进行互动的钥匙&#xff0c;而Java和JQuery则为我们提供了强大的工具&#xff0c;使得前端开发不再是一个艰深的谜题。本篇博客将围绕Java与JQuery选择器展开&#xff0c;深入解析选择器的奥秘&#xff0c;为你打开前端开…

你一定要学会的Java语法 -- 【继承】

书接上回&#xff0c;我们已经学完了类和对象&#xff0c;今天内容可能有一点难&#xff0c;相信自己能跨过这道坎。 目录 一. 继承 1.什么是继承 2. 继承的概念 3. 继承的语法 4.父类成员访问 子类和父类成员变量同名 子类和父类成员方法同名 5.super关键字 6.子类构…

003、Nvidia Jetson Nano Developer KIT(b01)-深度学习环境配置

之——深度学习环境 杂谈 网上到处淘金&#xff0c;pytorch、opencv、torchvision。 正文 1.各种依赖库 1.1 pytorch的底层依赖库 sudo apt install build-essential make cmake cmake-curses-gui -ysudo apt install git g pkg-config curl -ysudo apt install libatlas-ba…

Java图像编程之:Graphics

一、概念介绍 1、Java图像编程的核心类 Java图像编程的核心类包括&#xff1a; BufferedImage&#xff1a;用于表示图像的类&#xff0c;可以进行像素级的操作。Image&#xff1a;表示图像的抽象类&#xff0c;是所有图像类的基类。ImageIcon&#xff1a;用于显示图像的类&a…

计算机中丢失msvcr120.dll文件怎么修复?找不到msvcr120.dll五种完美修复方案

今天我想和大家分享的是关于“msvcr120.dll丢失的问题的5个解决方法”。在我们日常的工作生活中&#xff0c;或许大家都曾遇到过这样的问题&#xff0c;那么&#xff0c;了解它的解决方法是非常必要的。 首先&#xff0c;让我们来了解一下msvcr120.dll是什么文件。简单来说&am…

“艾迪-东软杯”第六届武汉理工大学新生程序设计竞赛

A.Capoos Acronym Zero 题目描述 yz 和他的朋友 ea 和 zech 一起养了一群 Capoo。 这些 Capoo 非常聪明&#xff0c;但不知道为什么&#xff0c;它们并没有从三人那里学到怎么写算法题&#xff0c;而是出于某种原因开始研究语言学&#xff0c;并发明了一套自己的暗语。这门暗语…

二分图判定和二分图最大匹配

1.二分图的定义 二分图是一种特殊的无向图&#xff0c;它的节点可以被划分为两个互不相交的集合&#xff0c;使得同一集合中的任意两个节点之间没有边相连&#xff0c;而不同集合中的节点之间都有边相连。 换句话说&#xff0c;如果一个无向图可以被划分为两个集合&#xff0…

Keil文本对齐

摘要&#xff1a;通常我们写代码的时候&#xff0c;尤其是缩进和{}的使用&#xff0c;很多都需要自己手动去调整&#xff0c;如果有一个自动格式化代码的工具&#xff0c;每次编辑完代码&#xff0c;然后一键给将代码格式化&#xff0c;即省时又美观。为了解决这个问题&#xf…