【论文精读】Guided-MVS

news2024/11/18 15:38:13

今天读的是一篇发表在IROS2022上的MVS文章:Multi-View Guided Multi-View Stereo,作者是来自于意大利University of Bologna的Matteo Poggi。
论文链接:arxiv
代码链接:https://github.com/andreaconti/multi-view-guided-multi-view-stereo

目录

  • Abstract
  • 1. Introduction
  • 2. Related work
  • 3. Proposed framework
    • A. Deep Multi-View Stereo background
    • B. Guided Multi-View Stereo
    • C. Multi-View Guided Multi-View Stereo
      • Depth hints aggregation
      • Depth hints filtering
    • D. Coarse-to-Fine Guidance
  • 4. Experimental results
    • 4.1 Datasets
    • 4.2 Implementation details
    • 4.3 Training and testing protocol
    • 4.4 Ablation study
    • 4.5 Multi-View Guided MVS networks
  • 5. Conclusion

Abstract

本文介绍了一种新颖的深度框架,用于从多个图像帧进行密集三维重建,利用与图像采集联合收集的一组稀疏深度测量值。 给定一个深度多视图立体网络,该框架使用稀疏深度提示通过调制在前向步骤中构建的平面扫描成本量来指导神经网络,使我们能够不断推断出更准确的深度图。 此外,由于多个视点可以提供额外的深度测量,提出了一种多视图引导策略,增加了用于引导网络的稀疏点的密度,从而导致更准确的结果。 我们在各种最先进的深度多视图立体网络中评估了我们的多视图引导框架,证明了它在改进每个框架在 BlendedMVG 和 DTU 数据集上取得的结果方面的有效性。

1. Introduction

介绍了一些MVS的背景,在最后说明工作的贡献:

  1. 提出了 Guided Multi-View Stereo 框架 (gMVS)。 最重要的是,我们提出了mvgMVS来利用从多视图重建任务的不同视点获取多组深度提示。
  2. 通过在前向传递期间多次应用cost volume modulation来引入从粗到精的指导,这符合最近的 MVS 网络遵循的从粗到精的策略。
  3. 我们在5个最先进的深度架构中实施了所提出的mvgMVS框架,每个架构都具有不同的正则化和优化策略。

2. Related work

介绍了Stereo Matching、Multi-View Stereo和Depth Completion and Guided Frameworks的相关工作。

3. Proposed framework

A. Deep Multi-View Stereo background

大多数learning-based MVS pipeline都遵循相同的模式。 给定一组 N N N幅图像,其中 1 1 1幅假定为参考图像(reference image),另 N − 1 N -1 N1 幅作为源图像(source image),深度 MVS 网络处理它们以预测与参考图像对齐的全局密集深度图。 为此目的而设计的大多数深度网络的共同点是对cost volume的定义,编码参考图像中像素与源图像中潜在匹配候选像素之间的特征相似性。 给定每个图像的内在和外在参数 K,E,后者沿着源图像中的对极线检索。具体来说,对于一个特定的深度假设 z z z 属于 [ z m i n , z m a x ] [z_{min},z_{max}] [zmin,zmax],从给定的源视图 i i i中提取的特征 F i F_{i} Fi通过基于单应性的变形操作进行投影。然后,为了对参考特征 0 _{0} 0 F i z F^{z}_{i} Fiz之间的相似性进行编码,基于方差的体积定义如下:
在这里插入图片描述
因此,对于给定的像素,方差得分越低,从源视图中检索到的特征越相似,因此,假设 z z z越可能是它的正确深度。

但是,实施此解决方案需要大量内存,并且计算复杂。 因此,几个最先进的网络实现了从粗到精的解决方案。 具体来说,一组基于方差的成本量被构建为:
在这里插入图片描述
s s s是计算成本体积的特定分辨率或比例,对应地,来自图像 i i i的特征在分辨率 s s s被采样为:
在这里插入图片描述

B. Guided Multi-View Stereo

通过假设由标准相机和低分辨率深度传感器(例如 LiDAR)组成的设置,我们利用后者的输出来塑造深度网络从一组彩色图像估计深度的行为。 当这个集合仅限于单帧时,通常会训练一个神经网络来完成由彩色图像引导的稀疏深度点。 当有多个图像可用时,该机制通常会反转,深度测量被用作提示来指导基于图像的估计过程。 例如,通过应用于双目立体的 Guided Stereo 框架,通过对特征体积应用高斯调制以使其与深度提示 z 对应达到峰值来实现该策略。
类似地,这种机制也可以应用于MVS,实现引导的多视图立体pipeline(gMVS)。 事实上,在 III-A 引入的方差量也可以方便地调制。 在这种情况下,由于低方差编码了相应深度假设 z z z正确的高可能性,我们翻转高斯曲线以强制基于方差的成本体积具有最小近深度提示 z ∗ z^{*} z
在这里插入图片描述
对于具有有效提示的像素, v v v 是等于 1 的二进制掩码(否则为 0),并且 k k k c c c 是高斯本身的幅度和宽度。 到目前为止概述的 gMVS 公式将 Guided Stereo 框架扩展到 MVS。 在其余部分,我们将介绍为 MVS 设置和为其设计的模型明确构思的两个重要的额外贡献。

C. Multi-View Guided Multi-View Stereo

MVS 依赖于从不同视点获取的多幅图像的可用性。 此外,我们假设在我们的设置中注册了彩色图像的稀疏深度测量的可用性。 因此,一组不同的提示可用于每个源图像。 在这种情况下,我们认为从每个视点聚合多组深度提示可以为网络提供更强的指导并进一步改进基线 gMVS 框架的结果。 为此,我们执行两个主要步骤。

Depth hints aggregation

给定具有来自任何源图像 i i i 属于 [ 1 , N ] [1,N] [1,N] 的单应 2D 坐标 q i q_{i} qi 的像素,其深度值 d q i ∗ d^{*}_{q_{i}} dqi 可用,参考图像视点中的 3D 坐标 p 0 p_{0} p0 为:
在这里插入图片描述
p 0 p_{0} p0可以得到参考图像视点表示的新的深度提示 d q 0 ∗ d^{*}_{q_{0}} dq0 ,并根据坐标 q 0 q_{0} q0处的 K 0 K_{0} K0投影到图像平面上。

这允许在参考图像上聚合深度提示,如图 2 所示,从而获得更密集的深度提示图,以更强的指导来调制网络中的volume。 我们将 gMVS 框架的这种扩展称为多视图引导多视图立体 (mvgMVS)。
在这里插入图片描述
在这里插入图片描述

Depth hints filtering

由于视点不同,在其中一个源视图中获取的一些深度测量值可能属于参考视图中的遮挡区域。 然而,考虑到提示的稀疏性,如果我们限制在不考虑它们的可见性的情况下天真地将它们投影到视图中,这将导致几个错误值的聚合,如图 3 (b) 所示。 如果这样的话,我们会用错误的深度提示来引导深度网络,从而降低其准确性。 为了检测和删除这些异常值,我们部署了过滤策略,将任何像素 q 0 q_{0} q0 定义为离群值,其邻域 S ( q 0 ) S(q_{0}) S(q0) 中至少存在一个像素 s s s,使得:
在这里插入图片描述
简而言之,就是(1)二者的像素坐标的差值和角度(在球坐标系中)的差值不同符号,(2) q 0 q_{0} q0距离相机的值大于 s s s距离相机的值。虽然简单,但这种策略允许以较小的计算成本去除大部分异常值,如图 3 © 所示。 我们将在消融实验中展示这个步骤对于实现最佳引导是必要的。 我们将此最终实现称为过滤 mvgMVS (fmvgMVS)。

D. Coarse-to-Fine Guidance

与通常构建通过堆叠 3D 卷积处理的单个体积的深度立体网络不同,MVS 网络通常被设计为体现从粗到精的估计以减少计算负担。 我们认为,网络构建的多个cost volume中的任何一个都代表了引导网络的可能切入点。 因此,我们在正向传播期间改装任何 V s V_{s} Vs
在这里插入图片描述
v s v_{s} vs z s ∗ z^{*}_{s} zs 分别是二进制掩码 v v v 和深度提示映射 z z z 下采样到分辨率 s s s,使用最近邻插值。我们的实验将展示这些多重调制产生的更强指导如何提高整体网络精度。

4. Experimental results

4.1 Datasets

我们首先介绍我们实验中涉及的数据集。 由于现有的 MVS 数据集合均未提供稀疏深度点,因此我们通过从 groundtruth 深度图中随机采样来模拟稀疏提示的可用性。 因此,对于我们的实验,我们只能选择提供此类信息的数据集,即我们无法对 Tank & Temples 进行评估。

BlendedMVG。 该数据集收集了从大约 500 个场景中采样的大约 11 万张图像。 它是通过应用 3D 重建管道从精选场景的图像中恢复高质量纹理网格而创建的。 然后,将网格渲染为彩色图像和深度图。 我们保留 8 个用于验证的序列和 7 个用于测试的序列,其余的用于训练我们实验中涉及的每个网络。

DTU。 这个室内数据集包含 124 个不同的场景,所有场景都共享相同的相机轨迹。 图像是通过安装在机器人手臂上的结构光扫描仪获取的,使用扫描仪本身的一个摄像头。 我们选择训练、验证和测试拆分。 特别是,我们对测试拆分进行了评估,这两个网络单独在 BlendedMVG 上训练,或者在 DTU 训练集上进行微调后进行评估。

4.2 Implementation details

我们的框架是在 PyTorch 中实现的,从现有的解决方案开始。 关于 gMVS,我们通过从地面真实深度图中随机抽取3%的像素来模拟稀疏深度提示的可用性。 我们设置 k = 10 和 c = 0.01。 关于过滤,我们设置为 3。我们使用5个最先进的网络进行了实现 gMVS 和变体的实验(MVSNet、D2HC-RMVSNet、CAS-MVSNet、UCSNet、PatchMatchNet)。

4.3 Training and testing protocol

在训练和测试期间,我们将网络处理的图像数量设置为 5。 因此,我们为 mvgMVS 积累了来自 5 个视图的深度提示。
先是在BlendedMVG上训练,然后在DTU上finetune,测试则是在BlendedMVG和DTU的测试集上评估。

4.4 Ablation study

我们首先研究框架中不同组件的影响,主要是 mvgMVS 扩展和从粗到精的调制。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.5 Multi-View Guided MVS networks

我们现在评估 mvgMVS 框架对为我们的实验选择的5个最先进网络的影响。 具体来说,我们训练原始网络和它们对应的使用filtered mvgMVS引导的网络 。详情见表VI和表V。

作者还在最后提出了一些当前方法下的限制:
尽管我们的实验突出了多视图引导多视图立体框架的潜力,它对合成数据集和真实数据集均有效,但我们的提议存在一个在某些环境中可能很重要的限制:使用特定提示密度训练的网络无法概括到不太密集的提示输入。 具体来说,一旦用固定密度的输入深度点训练了一个引导网络,如果在测试时不能保证这样的密度,性能就会下降。 表 VI 通过使用 MVSNet 进行的进一步实验研究了这种行为,该实验在训练期间在视图上聚合了 3% 的提示,并以不同的密度进行了测试。 我们可以注意到,通过减少提示的数量,网络性能也会降低,但仍然比没有指导训练的原始 MVSNet 更好(第一行)。 但是,通过完全忽略提示(最后一行),性能会大大低于原始 MVSNet。 这种行为突出表明,网络本身在与它们一起训练时几乎盲目地利用提示,当提示在部署期间不可用时会失去很多准确性。 未来的研究将探索更好的训练协议,以在这种情况下使准确性出现最轻微的下降。 此外,当前的评估是通过模拟来自传感器的深度提示的可用性来进行的。 对真实传感设备的进一步实验将允许评估框架对深度稀疏点噪声的鲁棒性。

5. Conclusion

在本文中,我们提出了一种用于准确估计MVS深度的新颖框架。 从双目立体的成功开始,我们通过聚合从不同视点获取的多个深度提示,扩展了引导立体以充分利用多视图设置的潜力。 我们对5个最先进的MVS网络进行的实验表明了我们框架的有效性,它能不断生成更准确的深度图,从而能够重建更高质量的点云。 无论是从合成数据推广到真实数据,还是在对真实图像进行微调之后,这种行为都是一致的。

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

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

相关文章

SpringCloud Netflix复习之OpenFeign

文章目录写作背景Feign核心组件介绍Encoder和DecoderLoggerContractFeign.Builder上手实战开启FeignClient调用请求日志给FeignClient注入自定义拦截器Feign支持文件上传配置Feign开启Gzip压缩Feign配置超时时间Feign整合Ribbon支持负载均衡核心源码部分FeignClient注入到Sprin…

【Qt】通过创建ui界面类成员变量的方式显示窗体

【Qt】通过创建ui界面类成员变量的方式显示窗体1、背景2、实例3、验证1、背景 将.ui 文件转化为.h 头文件参考: 【Qt】将QtDesigner生成的.ui文件转化为.h头文件 https://jn10010537.blog.csdn.net/article/details/128589666其生成的.h头文件的显示,如…

HQChart实战教程56-限制指标周期

HQChart实战教程56-限制指标周期 指标周期范围效果图增加周期限制步骤1. 创建系统指标Condition.PeriodCONDITION_PERIOD 枚举说明提示信息提示信息配色实例源码指标周期范围 有些指标我们需要限制它的周期, 如指标A它只能对日线周期有效, 分时周期时无效的, 所有在切换到分…

Apache Hive 使用

Apache Hive 使用使用beeline 连接Apache Hive查看数据库使用或进入数据库创建表查看数据表上传数据数据操纵语言(DML)查询语句函数数学函数条件函数) 使用beeline 连接Apache Hive /export/server/apache-hive-3.1.2-bin/bin/beelinebeeline> ! co…

C51单片机基础之4G模块

一、4G模块初识EC03-DNC是亿佰特公司推出的 LTE CAT1 数传模块产品, 该产品软件功能完善, 覆盖绝大多数常规应用场景, EC03-DNC 是为实现串口设备与网络服务,通过网络相互传输数据而开发的产品 , 该产品是一款带分集接…

Linux 计算机网络 从 ping 来初窥计算机网络

Linux 计算机网络 从 ping 来初窥计算机网络 在上一章节《计算机网络从零到一》我们重点讲解了整个网络的形成,以及物理层、数据链路层、网络层这三层的形成以及他们所解决的问题,而本章节主要讲解 ping 命令在 Linux 中到底发生了一些什么。 ping 简介…

学习open62541 --- [73] 数据源造成无法监测变量的问题解决

本人最近遇到一个问题:给一个变量添加数据源后,使用监测项去监测变量变化,如果采样时间为0,会发现无法监测到变量的变化。 本文讲述这种情况的发生原因以及解决办法。 一 Server例子 首先准备server例子,如下&#x…

WSL 下载服务器加速

网络下载加速,这里使用修改 hosts 文件 ,地址映射 方法,所有网址适用,这里以 WSL 下载服务器为例子 命令 wsl -l -o 访问的地址: https://raw.githubusercontent.com/microsoft/WSL/master/distributions/Distributi…

Java设计模式中组合模式是什么/树形结构怎么组合或显示存储,编程怎么实现树形结构

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 5.7 组合模式 5.7.1 概述 又名整体模式,是用于把一组相似的对象当作一个单一的对象依据树形结构来组合对象,用来表示部分以及整体层次属于…

基于asp.net+vbscript+wsc编写网站

1、前言 asp大家应该都比较熟悉&#xff0c;就是一个动态服务器页面&#xff0c;有点类似于jsp。只是不同的是asp可以在IIS服务器上创建&#xff0c;并且如果配置了.net环境的话&#xff0c;那么就可以在asp里面<%%>写vbscript。vbscript是一种脚本语言&#xff0c;其实就…

因果推断5--DML(个人笔记)

目录 1论文介绍 1.1论文 1.2摘要 1.3DML思路 2价格需求曲线 2.1价格需求弹性 2.2价格需求弹性计算DML代码 2.3价格需求弹性例子--数据集 2.4建模过程 2.5回归结果 1论文介绍 1.1论文 V. Chernozhukov, D. Chetverikov, M. Demirer, E. Duflo, C. Hansen, and a. W.…

(强制)类型转换方法

目录 一、C语言中的类型转换 二、C中的强制类型转换 2.1 static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 dynamic_cast 2.5 总结 一、C语言中的类型转换 在C语言中&#xff0c;若赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或…

[PyTorch笔记]深度学习计算

[PyTorch笔记]深度学习计算1 层和块1.1自定义神经网络块1.2顺序块1.3在前向传播中执行代码2.参数管理2.1 访问参数、用于调试、诊断和可视化2.2 参数初始化2.2.1内置初始化&#xff1a;2.2.2 自定义初始化2.3 在不同模型组件间共享参数3.延后初始化4.自定义层4.1 不带参数的层4…

深入理解数据结构 —— 跳表

什么是跳表 只要是平衡搜索二叉树能实现的功能&#xff0c;跳表都能实现&#xff0c;且时间复杂度都相同 例如&#xff1a; 哈希表的功能&#xff1a;插入&#xff0c;查找&#xff0c;删除有序表的功能&#xff1a;查找大于某值最小的数&#xff0c;小于某值最大的数&#…

干货 | 数据跨境传输合规体系的构建思路

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分&#xff1a;研究背景随着经济活动数字化转型加快&#xff0c;“数据”对生产、流通、分配和消费活动产生重要影响&#xff0c;成为新的生产要素。地区之间数据流通愈发频繁&#xff0c;…

图像频域滤波(理想低通滤波)

图像变换是对图像信息进行变换&#xff0c;是能量保持但重新分配&#xff0c;利于加工处理。这里主要介绍傅里叶变换的图像频域滤波。 图像从空间域变换到频域后&#xff0c;其低频分量对应图像中灰度值变化较为缓慢的区域&#xff0c;高频分量表征图像中物体的边缘和随机噪声等…

基于yolov5的钢材表面缺陷识别(pycharm连接远程服务器,老版本yolov5运行遇到的问题)

时间&#xff1a;2023年1月 1 pycharm远程连接服务器 提示&#xff1a;需要下载pycharm专业版。 参考文献&#xff1a; [1] [2] [3] [4] 设置解释器的界面有一些不同&#xff0c;在此截图记录一下。 &#xff08;这是已经弄好了之后回头截图的&#xff0c;假设它不存在哈) …

【寒假每日一题】洛谷 P6206 [USACO06OCT] Another Cow Number Game G

题目链接&#xff1a;P6206 [USACO06OCT] Another Cow Number Game G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 奶牛们在玩一种数字游戏&#xff0c;Bessie 想让你帮她预测一下结果。游戏开始时&#xff0c;Bessie 将得到一个正整数 N。此时她的分数为 0。 奶…

C 程序设计教程(07)—— 数据类型转换

C 程序设计教程&#xff08;07&#xff09;—— 数据类型转换 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目录C 程序设计教程&#xff08;07&#xff…

mysql学习总结(一)

总结一下近期学习的mysql内容&#xff1a;这里主要总结一下mysql的底层数据结构索引的本质是什么&#xff1f;索引的本质就是排好序的一种数据结构&#xff0c;通过索引我们能干什么呢&#xff1f;&#xff0c;快速的去定位到我们想要查找的数据&#xff0c;就像是你看书&#…