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

一、论文简述

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.mfbz.cn/a/20122.html

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

相关文章

RTSP/RTP on TCP 协议抓包记录

仅做记录,无他。 RTSP OPTIONS 客户端发送: 服务端响应 RTSP DESCRIBE 客户端发送 服务端响应 RTSP SETTUP 客户端发送请求 服务端响应 RTSP PLAY 客户端发送请求 服务端响应 RTP包 这个比较复杂,得好好解析&#xff0…

消息队列中间件 - RabbitMQ消息的持久化、确认机制、死信队列

持久化和应答机制Ack 消息队列中间件系列的最后一篇了,RabbitMQ消息的持久化、确认机制、死信队列、负载均衡等一系列进行说明。 消息持久化 当RabbitMq重启以后,未消费的消息,可以在服务重启后继续消费,不会丢失。 应答机制A…

DS215KLDCG1AZZ03A如何编写温度比例的代码?

DS215KLDCG1AZZ03A如何编写温度比例的代码&#xff1f; 可编程逻辑控制&#xff0c;简称PLC&#xff0c;由美国机械工程师迪克莫利于1年1968月<>日首次设计。PLC最初是为了减少汽车行业员工的工作量而开发的&#xff0c;从那时起&#xff0c;它们已被用于所有其他恶劣环境…

MySQL --- 多表查询

多表查询、事物、以及提升查询效率最有手段的索引 一. 多表查询 1.1 多表查询 --- 概述 1.1.1 数据准备 将资料中准备好的多表查询数据准备的SQL脚本导入数据库中。 部门表&#xff1a; 员工表&#xff1a; 1.1.2 介绍 多表查询&#xff1a;指从多张表中查询数据&#…

尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】

视频地址&#xff1a;尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01【Spark(概述、快速上手、运行环境、运行架构)】尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程、案例实操)】尚硅谷大数据技术Spark教程-笔记03【SparkSQL…

云原生背景下如何配置 JVM 内存

image.png 背景 前段时间业务研发反馈说是他的应用内存使用率很高&#xff0c;导致频繁的重启&#xff0c;让我排查下是怎么回事&#xff1b; 在这之前我也没怎么在意过这个问题&#xff0c;正好这次排查分析的过程做一个记录。 首先我查看了监控面板里的 Pod 监控&#xff1a;…

奶爸式Swagger教学

目录 一、导入依赖 二、SwaggerConfig基础编程 三、Swagger 常用说明注解 1.API 2.ApiOperation 3.ApiModel 4.ApiModelProperty 5.ApiParam 6.ApilmplicitParam 一、导入依赖 <!--开启Swagger --><!-- https://mvnrepository.com/artifact/io.springf…

Vector - 常用CAN工具 - CANoe软件安装常见问题

目录 一、确认电脑系统盘是否满足要求&#xff0c;CANoe软件对PC要求如下&#xff1a; 二、确认软件安装包完整 三、确认软件与电脑系统之间的兼容性 四、关闭后台程序 五、安装软件 六、清空临时文件夹 七、尝试在其他电脑上安装 一、确认电脑系统盘是否满足要求&#…

STM32 调试TM7711驱动原理图驱动代码

本文使用工程代码如下 (1条消息) STM32调试TM7711驱动原理图驱动源代码&#xff0c;参考如下博客&#xff0c;有原理图设计资源-CSDN文库 背景 项目选用TM7711&#xff0c;还是很令人吃惊的&#xff0c;主要是有如下几个理由 第一就是便宜 第二精度高 STM32的ADC精度不够…

微生物常见统计检验方法比较及选择

谷禾健康 微生物组经由二代测序分析得到庞大数据结果&#xff0c;其中包括OTU/ASV表&#xff0c;物种丰度表&#xff0c;alpha多样性、beta多样性指数&#xff0c;代谢功能预测丰度表等&#xff0c;这些数据构成了微生物组的变量&#xff0c;大量数据构成了高纬度数据信息。 针…

我的『1024』创作纪念日

目录 ◐机缘 ◑收获 ◐日常 ◑成就 ◐憧憬 记得&#xff0c;2020年07月22日我撰写了第1篇技术博客&#xff1a;《遗传算法实例解析》在这平凡的一天&#xff0c;我赋予了它不平凡的意义也许是立志成为一名专业T作者、也许是记录一段刚实践的经验但在那一刻&#xff0c;我已…

傅里叶分析的历史背景

目录 1. Fourier级数(三角级数)的历史背景 2. 圆和复平面 3. Fourier的大胆猜想 1. Fourier级数(三角级数)的历史背景 自古以来&#xff0c;圆形一直是(现在仍然是&#xff09;最简单的抽象理解形状。您只需要一个中心点和一个半径就可以了。圆上的所有点与圆心的距离都是固定…

Java Web开发:Spring Boot和Spring Cloud的应用和实践

一、介绍 Java Web开发是当今互联网时代中的一项重要技术&#xff0c;随着互联网的发展和应用场景的不断扩大&#xff0c;Java Web开发技术也得到了广泛的应用。而Spring Boot和Spring Cloud作为Java Web开发中最常用的技术之一&#xff0c;已经成为了很多开发者必备的技能。本…

Python常用的开发工具合集

​ Python是一种功能强大且易于学习的编程语言&#xff0c;被广泛应用于数据科学、机器学习、Web开发等领域。随着Python在各个领域的应用越来越广泛&#xff0c;越来越多的Python开发工具也涌现出来。但是&#xff0c;对于新手来说&#xff0c;选择一款合适的Python开发工具可…

Git的安装与版本控制

这里写目录标题 原理安装基本使用gitee-IDEA协同开发成员邀请开发组成员指定仓库权限给当前仓库设定分支提交代码时必须向自己的分支提交合并分支 - 无冲突 原理 Git本地有四个工作区域&#xff1a; 工作目录&#xff08;Working Directory&#xff09;、暂存区(Stage/Index)、…

【LeetCode】209.长度最小的子数组

209. 长度最小的子数组 思路一&#xff1a;暴力解法 通过两个for循环&#xff0c;从头开始找符合条件的子序列。暴力解法无法通过本题&#xff0c;超出时间限制&#xff0c;所以仅供参考。 代码如下&#xff1a; 暴力解法1&#xff1a;下面的代码是通过申请一个新的数组&#x…

error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

Qt系列文章目录 文章目录 Qt系列文章目录前言一、QtCreator中qmake命令是什么&#xff1f;2.解决 前言 我在代码中加入了对应的信号和槽&#xff0c;但编译仍然报错&#xff1a; #ifndef PROJECTWIN_H #define PROJECTWIN_Hnamespace Ui { class ProjectWin; }ProjectWin类声…

杂记——24.HTML中空格的写法

前几天写项目时&#xff0c;突然对HTML中空格的写法感兴趣&#xff0c;于是搜了一下&#xff0c;现在对其进行总结 HTML不是一种编程语言&#xff0c;而是一种超文本标记语言 (markup language)&#xff0c;是网页制作所必备的。超文本”就是指页面内可以包含图片、链接&#…

创建基于oracle jdk8的自定义docker镜像

创建基于oracle jdk8的自定义docker镜像 1:查看服务器java版本&#xff1a; 如果服务器的版本是open-jdk&#xff0c;则进行如下操作 拷贝相关jdk压缩包&#xff08;.tar.gz后缀&#xff09;到服务器目录&#xff08;例&#xff1a;/usr/local&#xff09; 解压&#xff1a;…

【18】SCI易中期刊推荐——计算机科学(中科院2区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…