【论文简述】Multi-View Stereo Representation Revisit: Region-Aware MVSNet(CVPR 2023)

news2024/11/29 1:51:25

一、论文简述

1. 第一作者:Yisu Zhang

2. 发表年份:2023

3. 发表期刊:CVPR

4. 关键词:MVS、3D重建、符号距离场

5. 探索动机:像素深度估计仍存在两个棘手的缺陷。一是无纹理区域的估计置信度较低。二是物体边界附近的许多异常值。这主要是因为表面通常被视为一组不相关的采样点,而不具有拓扑结构。由于每条射线只与一个表面采样点相关联,因此不可能注意到表面的相邻区域。如下图所示,每个深度值的估计仅受一个表面采样点的约束,无法利用周围表面进行推断。然而,在没有纹理的区域和物体边界中,如果没有更广泛的表面信息,很难进行推断。因此,太小的感知范围限制了现有的基于学习的MVS方法。

6. 工作目标:通过利用表面信息解决上述问题。

7. 核心思想:提出了一种新的RA-MVSNet框架,该框架能够通过点对面距离使每个假设平面与更宽的表面相关联。因此,该方法能够在无纹理区域和物体边界推断周围表面信息。

  1. We introduce point-to-surface distance supervision of sampled points to expand the perception range predicted by the model, which achieves complete estimation in textureless areas and reduce outliers in object boundary regions.
  2. To tackle the challenge of lacking the ground-truth mesh, we compute the signed distance between point sets based on the triangulated mesh, which trades off between accuracy and speed.

8. 实验结果:

Experimental results on the challenging MVS datasets show that our proposed approach performs the best both on indoor dataset DTU and large-scale outdoor dataset Tanks and Temples.

9.论文下载:

https://arxiv.org/pdf/2304.13614.pdf

二、实现过程

1. RA-MVSNet概述

总体框架主要包括代价体构建、多尺度深度图和符号距离预测、真值处理三个部分,由两个分支组成。第一个分支预测概率体,第二个分支估计符号距离体。RA-MVSNet融合两个分支可以得到过滤后的深度图,而SDF分支可以生成隐式表示。由于点到面距离监督采用了一个额外的分支,通过代价体来计算采样点在表面周围的符号距离,因此很容易添加到现有的基于学习的MVSNet方案中,只需稍加修改。采用了级联MVSNet为基准,并使用两个分支Cas-MVSNet,分别预测深度和符号距离。

2. 代价体构建

依据MVSnet,通过单应性变化构建。采用递归特征金字塔(RFP)作为图像编码器共享权值提取三个尺度的特征。 为了处理任意数量的源图像,采用自适应策略聚合了所有的特征Vi到单个代价体C∈D×C'×H'×W',用几个3D CNN层来预测逐像素加权矩阵Wi。最终的代价体可以计算如下:

其中C为参考视图的代价体。⊙表示逐元素的乘法。Vi和V0是使用图像编码器从源图像和参考视图中提取的特征。

3. 符号距离监督

点到面的距离通常表示为SDF(signed distance field 符号距离场)。这种隐式表示的核心是计算表面附近采样点到物体的距离。因此遵循SDF的思想,构建一个距离体来预测点到面的距离,从而利用隐式表示的优势。

对于聚合了参考视图和源视图特征的三维代价体,通常采用正则化网络来获得概率体P, P被视为不同深度假设平面的权值:

 其中Fsoftmax是基于softmax的3D CNN正则化网络。距离体S表示这些假设平面的带符号距离:

式中Ftanh为基于tanh的3D CNN正则化网络。由于离表面较远的点通常不利于重建,采用tanh作为距离体的激活层。因此可以关注附近的采样点。

由于引入了距离的预测,需要将深度图的真值扩展到符号距离场。因此,深度图只包含距离为0的采样点,缺乏表面周围点的地面真实性。

对于代价体C的每个假设平面上的精确查询点pi,我们计算从pi到表面采样点p'的最短距离作为符号距离的真值。如图所示,将每个假设的平面看作是表面周围的一个采样点,并找到其对应的最近邻表面采样点,采用Kaolin计算的两点距离d(pi, pj')作为真实符号距离。

为了加快这一过程,从所有表面采样点中寻找最近邻替换为基于块的局部搜索,如图所示。最近邻通常位于查询点附近,这样可以去除大量无用的表面采样点,而只保留位于交点的局部块内的采样点。

这种基于块的局部搜索方法使需要在合理的范围内尽可能少地计算点,从而降低了搜索的时间复杂度。假设深度图的分辨率为H×W,查询点个数为n,则朴素计算的时间复杂度为O(n×H×W),与深度图的分辨率成正比。而基于块的局部搜索的时间复杂度则简化为O(n×k×k),其中k为块大小,通常设为5。因此,基于patch的局部搜索的时间复杂度可以简化为O(n)。也就是说,它只与查询点的个数n成正比,并且每个查询点的搜索时间是常数。

4. 体融合

一旦得到概率体{P∈D×H'×W'}和距离体{S∈R×H'×W'},将这两个体融合得到最终的深度图D∈H' ×W'。通常,基于softmax的正则化网络通常用于从P预测深度图,P被视为不同深度的假设平面的权重。因此,深度图的计算方法如下:

其中,dmin和dmax分别为最近和最远假设平面的距离。但该方法在计算中包含多个无效平面,存在精度问题。一个像素(U,V)的深度值只与该像素对应的几个假设平面相关,不能与表面上的其他采样点关联。 所以如图所示,融合概率体P和引入的距离体S来计算深度图,使得每个像素点都与周围的表面块相关。

具体来说,S可以看作是一个概率值的阈值过滤器。这两体的融合过程在算法中说明。

最后,使用深度图真值和生成的符号距离真值来监督两个体P和S,使用L1损失如下:

其中D*i和Si*分别为第i阶段的真实深度图和点到面的距离。Di和Si为两个分支的预测值。因此,总损失是两个分支的加权和:

λ是平衡两项的权重,在所有实验中都设置为0.1。 

5. SDF分支监督

由于是从相应的深度图中生成点到面的距离真值,因此必须进行误差边界分析。一个合理的假设是使用三角网格来表示表面。有三种不同的情况,如图所示。

在(a)中,以查询点p为中心的最大球面与点o处物体表面相切,则p处符号距离的真值为d(p,o)。从查询点p到采样点集{p'}的边距是d(p, p'j)。由于p'j与切点o重合,因此(a)的误差为e2a,如下所示

其中d(p,o)和(dp,p′j)分别表示符号距离的真值和近似值。

在(b)和(c)中,使用类似的分析方法。 假定O和O′′是中心在P的表面和球面的切点。 在(b)中,符号距离的真值是D(p,o),在(C)中,真值是D(p,o′′)。因此,情形(b)和(c)的误差范围可以用下式表示:

其中e2 b和e2 c分别是(b)、(c)的误差平方。将这三种情况结合起来,涵盖所有可能的情况,得到查询点p的最终误差边界如下所示:

其中e为查询点p的一般误差,p'j和p'j+1为相邻的两个表面点。这个不等式表明,误差e2的平方不超过从两个相邻像素重投影的两点之间距离的平方。 

6. 实验

6.1. 实现细节

通过PyTorch实现,批大小为2,DTU数据集用两个NVIDIA RTX 2080Ti,BlendedMVS数据集用在单个NVIDIA Tesla P40。使用更精细的DTU真值如AA-RMVSnet。对DTU数据集和Tanks and Temples数据集进行评估,使用了NVIDIA Tesla P40 GPU, 24G RAM。

6.2. 与先进技术的比较

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

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

相关文章

一文读懂DNS解析原理和流程(中科三方)

什么是DNS域名解析 我们首先要了解域名和IP地址的区别。IP地址是互联网上计算机唯一的逻辑地址,通过IP地址实现不同计算机之间的相互通信,每台联网计算机都需要通过IP地址来互相联系和分别。 但由于IP地址是由一串容易混淆的数字串构成,人们很…

awk指令的详细指南

目录 工作原理 命令格式 awk常见的内建变量(可直接用)如下所示 按行输出文本 按字段输出文本 通过管道、双引号调用 Shell 命令 示例 CPU使用率 数组 ​编辑统计文件的内容出现的次数 使用awk 统计secure 访问日志中每个客户端IP的出现次数? …

云上的二维设计原来是这样的!

今天与大家探索云上的二维设计,3DEXPERIENCE DraftSight基于云平台实现与云端进行连接,实现一定的云上协作,提升绘图工作效率,我们从以下三方面来进行说明: 01:DraftSight设计 02:Revision变更…

ECharts 快速入门

文章目录 1.1 ECharts介绍1.2 vue使用ECharts1)vscode打开测试工程2) 工程安装echarts依赖3) 配置echarts4) vue组件使用echarts5) 页面效果: 1.3 项目中 ECharts 的使用1) 配置和使用流程说明2) 前端显示效果 1.1 ECharts介绍 ECharts是百度开发的一个…

JavaScript 循环方法

JavaScript 循环方法 不涉及到具体绑定到 prototype 上的循环方式,即 XXXXX.prototype 中包含的循环方式(如 forEach, map)。 for for 总共有三种循环方式,一个是传统的 for 循环体,一个是 for in,还有一…

微信最新版本解除【文件只读】

问题 某一天开始,微信自动升级到3.9版本,最大的改变就是接收到的文件是只读属性,网上目前有两个办法,1.降到3.8甚至更早版;2.将version.dll补丁文件复制到微信安装目录,但3.9.2版本就不能用了。 解决办法…

软件测试之测试用例的设计

1. 测试用例的概念 软件测试人员向被测试系统提供的一组数据的集合,包括 测试环境、测试步骤、测试数据、预期结果 2. 为什么在测试前要设计测试用例 测试用例是执行测试的依据 在回归测试的时候可以进行复用 是自动化测试编写测试脚本的依据 衡量需求的覆盖率…

完全了解FPC柔性电路板,生产到市场全讲解

1.什么是FPC 随着社会的不断进步,电子行业的不断更新换代,传统的PCB已经不能满足所有电子产品的需求,FPC的市场需求也越来越大,有很多朋友还不是很清楚FPC是什么,下面来简单的介绍一下: FPC全称:柔性印制电…

利用Springboot来驱动开发桌面程序

众所周知,SpringBoot是一款强大的Javaweb开发程序,这得益于其构造了一个Spring容器,然后通过依赖注入和控制反转,维护起一套Java对象和实例的管理机制,方便开发者去使用。在web应用开发的应用中,Springboot…

python 的垃圾回收机制

一、 引入 python解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给…

【Linux】IO多路转接-poll

文章目录 I/O多路转接-pollpoll初识poll函数poll的小测试-监控标准输入poll服务器poll_server.cc poll的优点poll的缺点 I/O多路转接-poll poll初识 poll也是系统提供的一个多路转接接口, poll系统调用也可以让我们的程序同时监视多个文件描述符上的事件是否就绪,和select的定…

DDos攻击概述

1.def: 通过大规模互联网流量淹没目标服务器或其周边基础设施,以破坏目标服务器、服务或网络正常流量的恶意行为 目标服务器类比作商店; 网络的正常流量类比作顾客; 此恶意行为便相当于让一堆小混混装成正常顾客涌入商店&…

软件自动化测试有什么优势?自动化测试框架有哪些?

一、 软件自动化测试的优势 在软件测试过程中,自动化测试不断被提高到更高的级别,以提高测试效率以及降低测试成本。 1.节省时间和成本 手动测试需要耗费大量的时间和精力,而自动化测试可以在较短时间内执行多次测试,并且可以在…

Alibaba Sentinel整合SpringBoot,为微服务保驾护航!

前言 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来…

08-05 应用层设计

伸缩性的架构设计——服务器集群的伸缩性 DNS负载均衡 DNS服务器将访问的域名转发到对应的网关,网关层做反向代理。 利用消息组件对业务场景进行解耦 适合用消息组件解耦的场景 长任务(时间长,逻辑复杂,可异步&#xff09…

React Antv G2Plot 「指标拆解图」 前端可视化实战 实现渲染、重置、筛选功能

背景 实现对指定数据的「指标拆解图」 渲染,并且可以根据筛选项进行变化。 任务分解 antv 的图表,以及请求后端的载荷对传入的数据结构有严格要求 一个工具函数将后端接口返回的数据格式化成 antv 图表要求的格式一个工具函数将前端提交的请求数据格…

Copilot入门

文章目录 简介安装初试快捷键取消订阅参考文献 简介 Copilot 是一款 GitHub 和 OpenAI 合作开发的 AI 结对编程工具,支持 Visual Studio、Neovim、VS Code、JetBrains IDEs,用于自动补全代码。 本文以 Python PyCharm 为例。 安装 GitHub Copilot&am…

【数据结构】栈及其实现

目录 🤠前言 什么是栈? 栈的定义及初始化 栈的定义 栈的初始化 栈的判空 栈顶压栈 栈顶出栈 栈的数据个数 栈的销毁 完整代码 总结 🤠前言 学了相当长一段时间的链表,总算是跨过了一个阶段。从今天开始我们将进入栈和…

什么是AIGC

AIGC是人工智能创意生成的缩写(Artificial Intelligence Generated Creativity),指的是利用人工智能技术实现的创意生成。通俗来说,就是让机器产生新颖、独特且有创造性的作品或方案,例如音乐、绘画、视频、文本等等。…

Sui基金会宣布面向APAC的Office Hours计划

诚挚邀请构建者与Sui基金会的Growth团队一起开启“Office Hours”计划,共同努力,迈向业务增长的下一步。 Sui基金会致力于推动Sui在全球范围内的普及。为此,我们通过积极支持开发人员的开发者资助计划、Builder House和大使计划在Sui上开始…