MVSNet论文笔记

news2025/3/12 13:34:10

MVSNet论文笔记

    • 摘要
    • 1 引言
    • 2 相关基础
      • 2.1 多视图立体视觉重建(MVS Reconstruction)
      • 2.2 基于学习的立体视觉(Learned Stereo)
      • 2.3 基于学习的多视图的立体视觉(Learned MVS)

Yao, Y., Luo, Z., Li, S., Fang, T., Quan, L. (2018). MVSNet: Depth Inference for Unstructured Multi-view Stereo. In: Ferrari, V., Hebert, M., Sminchisescu, C., Weiss, Y. (eds) Computer Vision – ECCV 2018. ECCV 2018. Lecture Notes in Computer Science(), vol 11212. Springer, Cham. https://doi.org/10.1007/978-3-030-01237-3_47

摘要

作者提出了一种端到端深度学习架构,用于从多视图图像进行深度图推断。在网络中,作者首先提取深度视觉图像特征,然后通过可微分单应性变换在参考相机坐标系上构建三维代价体。接下来,应用三维卷积对初始深度图进行正则化和回归,然后用参考图像进行细化,最终输出推断的深度图。该框架使用基于方差的代价度量灵活地适应任意的n视图输入,该度量将多个特征映射到一个代价特征中。在大规模室内DTU数据集上对MVSNet进行了演示。通过简单的后处理,该方法不仅显著优于以前的最新技术,而且在运行速度也快了好几倍。还在复杂的室外坦克和寺庙数据集上评估了MVSNet,在2018年4月18日之前,该方法在没有进行任何微调的情况下排名第一,显示出MVSNet具有很强的泛化能力。

1 引言

多视图立体视觉(MVS, Multi-view stereo)估计重叠图像的密集表示是计算机视觉领域研究了数十年的核心问题。传统的方法使用手工的相似度度量和工程正则化(例如,归一化互相关和半全局匹配)来计算对应的密集和恢复三维点。虽然这些方法在理想的传感器下显示了良好的结果,但它们存在一些共同的局限性。例如,场景的低纹理、镜面和反射区域使密集匹配难以处理,从而导致不完整的重建。在最近的MVS基准测试中报道,尽管目前最先进的算法在精度上表现得很好,但重建的完整性仍然有很大的改进空间。

最近卷积神经网络(CNNs)研究的成功也引发了人们对改进立体重建的兴趣。从概念上讲,基于学习的方法可以引入全局语义信息,如镜面和反射先验,以实现更鲁棒的匹配。有一些尝试在双视图立体匹配上,用基于学习的方式取代手工的相似度量或工程正则化。这些工作已经显示出了良好的结果,并在立体基准测试集中逐渐超过了传统的方法。事实上,立体匹配任务非常适合使用基于CNN的方法,因为图像对被预先纠正,因此问题成为不影响摄像机参数的水平像素级视差估计

然而,直接将学习到的双视图立体视觉扩展到多视图场景并不简单。虽然可以简单地对所有选择的图像对进行立体匹配,然后将所有成对的重建合并到一个全局点云,但这种方法不能充分利用多视图信息,导致不准确的结果。与立体匹配不同,输入到MVS的图像可能是任意的相机几何形状,这给基于学习方法带来了一个棘手的问题

只有少数工作认识到这个问题,并尝试将CNN应用于MVS重建:SurfaceNet预先构造了彩色体素立方体(CVC, Colored Voxel Cubes),它将所有图像像素的颜色和摄像机信息结合到单个体积作为网络的输入。相比之下,基于学习的立体视觉机制(LSM, Learned Stereo Machine)直接利用可微分投影/非投影来实现端到端训练/推理。

然而,这两种方法都利用了规则网格的体积表示。由于3D体积巨大内存消耗的限制,他们的网络很难扩展: LSM只处理低体积分辨率的合成对象,SurfaceNet采用启发式分治策略,需要很长时间进行大规模重建。在2018年4月18日之前,现代MVS基准测试的主流仍被传统的方法所占据。

为此,作者提出了一种用于深度图推理的端到端深度学习架构,它每次计算一个深度图,而不是一次计算整个3D场景。与其它基于深度图的MVS方法类似,MVSNet以一个参考图像和几个源图像作为输入,并推断出参考图像的深度图。这里的关键是可微分单应性变换操作,它隐式地编码网络中的摄像机几何结构,从二维图像特征构建三维代价体,并实现端到端训练。

为了适应输入中任意数量的源图像,我们提出了一个基于方差的度量方法,它将多个特征映射到一个代价体特征中。这个代价体经过多尺度的三维卷积和回归出一个初始深度图。最后,利用参考图像对深度图进行细化,以提高边界区域的精度

MVSNet和以前基于学习的方法之间有两个主要的区别。首先,为了进行深度图推断,MVSNet的3D代价体是建立在相机的坐标系之上,而不是常规的欧几里得空间。其次,MVSNet将MVS重建解耦到较小的每一个视图深度图估计问题上,这使得大规模重建成为可能。

2 相关基础

2.1 多视图立体视觉重建(MVS Reconstruction)

根据输出表示法,MVS方法可分为1)直接点云重建、2)体素重建、3)深度图重建基于点云的方法直接基于三维点,通常依靠传播策略逐步强化重建。由于点云的传播是按顺序进行的,这些方法很难被完全并行化,而且通常需要很长的处理时间基于体素的方法将三维空间划分为规则的网格,然后估计每个体素是否附着在表面上。这种表示方法的缺点是空间离散化误差和高内存消耗。相比之下,深度图是所有表示方式中最灵活的。它将复杂的MVS问题解耦为相对较小的每一幅视图的深度图估计问题,该问题一次只关注一个参考图像和几个源图像。此外,深度图可以很容易地融合到点云或体素重建上。根据最近的MVS基准测试,在2018年4月18日之前最好的MVS算法都是基于深度图的方法。

2.2 基于学习的立体视觉(Learned Stereo)

与使用传统的手工图像特征和匹配度量不同,最近的立体视觉研究使用深度学习技术进行成对的补丁匹配。Han等人首先提出了一个深度网络来匹配两个图像补丁。Zbontar等人和Luo等人使用学习到的特征进行立体匹配和半全局匹配(SGM)进行后处理。除了成对匹配代价外,基于学习的方法也应用于代价正则化。SGMNet学习调整SGM中使用的参数,而CNN-CRF 在网络中整合了条件随机场优化,用于端到端立体视觉学习。在2018年4月18日之前,最先进的方法是GCNet ,它应用3D CNN来规范代价体,并通过soft argmin操作回归视差。在KITTI数据集中有报道,基于学习的立体视觉方法,特别是端到端的学习算法,明显优于传统的立体视觉方法。

2.3 基于学习的多视图的立体视觉(Learned MVS)

在2018年4月18日之前,对基于学习的MVS方法的尝试较少。哈特曼等人提出了学习到的多补丁相似度来替代传统的MVS重建的代价度量。第一个基于学习的处理MVS问题的算法是SurfaceNet ,它通过复杂的体素级视图选择预先计算代价体,并使用三维CNN进行正则化和推断表面体素。与MVSNet最相关的方法是LSM,其中摄像机参数在网络中被编码为投影操作,以形成代价体,并使用3D CNN对一个体素是否属于某一表面进行分类。然而,由于体素表示的普遍缺点,SurfaceNet和LSM的网络被限制在小规模的重建。它们要么应用分治策略,要么只适用于具有低分辨率输入的合成数据。相比之下,MVSNet专注于每次为一个参考图像生成深度图,这使得MVSNet可以直接自适应地重建一个大型场景。

在这里插入图片描述

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

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

相关文章

阿坤老师的独特瓷器(Java详解)

一、题目描述 示例: 输入: 5 3 4 5 6 2 5 3 7 6 5 输出: 3 二、题解 思路分析: 题目要求我们计算出“独特瓷器”的个数,而“独特瓷器”是指对于瓷器A,没有另一个瓷器B,直径和高度都大于A。则…

系列三、双亲委派 沙箱安全 机制

一、概述 当一个类收到了类加载的请求,它首先不会尝试自己去加载这个类,而是把这个请求委派给父类去完成,每一层的类加载器都是如此,因此所有的请求最终都应该传送到启动类加载器中,只有当父类加载器反馈自己无法完成…

算法通关村——数字中的统计、溢出、进制转换处理模板

数字与数学基础问题 1、数字统计 1.1、符号统计 LeetCode1822. 给定一个数组,求所有元素的乘积的符号,如果最终答案是负的返回-1,如果最终答案是正的返回1,如果答案是0返回0. 这题其实只用看数组中0和负数的个数就好了&#x…

基于卡尔曼滤波实现行人目标跟踪

目录 1. 作者介绍2. 目标跟踪算法介绍2.1 目标跟踪背景2.2 目标跟踪任务分类2.3 目标跟踪遇到的问题2.4 目标跟踪方法 3. 卡尔曼滤波的目标跟踪算法介绍3.1 所用数据视频说明3.2 卡尔曼滤波3.3 单目标跟踪算法3.3.1 IOU匹配算法3.3.2 卡尔曼滤波的使用方法 3.4 多目标跟踪算法 …

【顺序表的实现】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1. 数据结构相关概念 1、什么是数据结构 2、为什么需要数据结构? 2、顺序表 1、顺序表的概念及结构 1.1 线性表 2、顺序表分类 3、动态顺序表的实现 总…

高效管理文件:如何通过文件数量归类提高工作效率

在日常生活和工作中,需要处理大量的文件和资料。然而,如果这些文件没有得到妥善的管理,就会使得我们花费大量的时间和精力去寻找和整理它们。对于大量文件,按照数量归类可以使得文件管理更加有序和规范。根据文件的数量建立相应的…

中国电影票房排行数据爬取及分析可视化

大家好,我是带我去滑雪! 对中国电影票房排行数据的爬取和分析可视化具有多方面的用处:例如了解电影市场的历史趋势,包括不同类型电影的受欢迎程度、票房的季节性波动。识别观众对于不同类型电影的偏好,为电影制片方提供…

Linux下快速确定目标服务器支持哪些协议和密码套件

实现原理是利用TLS协议的特点和握手过程来进行测试和解析响应来确定目标服务器支持哪些TLS协议和密码套件。 在TLS握手过程中,客户端和服务器会协商并使用相同的TLS协议版本和密码套件来进行通信。通过发送特定的握手请求并分析响应,可以确定目标服务器…

Linux 零拷贝splice函数

Linux splice 函数简介 splice 是 Linux 系统中用于在两个文件描述符之间移动数据的系统调用。它的主要作用是在两个文件描述符之间传输数据&#xff0c;而无需在用户空间进行数据拷贝。也是零拷贝操作. 函数原型 #include <fcntl.h> ssize_t splice(int fd_in, loff_…

git常用命令和参数有哪些?【git看这一篇就够了】

文章目录 前言常用命令有哪些git速查表奉上常用参数后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;git操作相关 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出…

数电实验-----实现74LS139芯片扩展为3-8译码器以及应用(Quartus II )

目录 一、74LS139芯片介绍 芯片管脚 芯片功能表 二、2-4译码器扩展为3-8译码器 1.扩展原理 2.电路图连接 3.仿真结果 三、3-8译码器的应用&#xff08;基于74ls139芯片&#xff09; 1.三变量表决器 2.奇偶校验电路 一、74LS139芯片介绍 74LS139芯片是属于2-4译码器…

设计模式-组合模式-笔记

“数据结构”模式 常常有一些组件在内部具有特定的数据结构&#xff0c;如果让客户程序依赖这些特定数据结构&#xff0c;将极大地破坏组件的复用。这时候&#xff0c;将这些特定数据结构封装在内部&#xff0c;在外部提供统一的接口&#xff0c;来实现与特定数据结构无关的访…

【libGDX】使用ShapeRenderer绘制几何图形

1 ShapeRenderer 简介 ShapeRenderer 是 libGDX 中用于绘制基本形状的工具之一。它可以绘制点、线、矩形、多边形、圆形、椭圆形、扇形、立方体、圆锥体等几何图形。这对于在游戏或图形应用程序中绘制简单的形状是很有用的。 ShapeRenderer 的主要方法如下&#xff1a; 1&…

10_6 input输入子系统,流程解析

简单分层 应用层 内核层 --------------------------- input handler 数据处理层 driver/input/evdev.c1.和用户空间交互,实现fops2.不知道数据怎么得到的,但是可以把数据上传给用户--------------------------- input core层1.维护上面和下面的两个链表2.为上下两层提供接口--…

深度学习:欠拟合与过拟合

1 定义 1.1 模型欠拟合 AI模型的欠拟合&#xff08;Underfitting&#xff09;发生在模型未能充分学习训练数据中的模式和结构时&#xff0c;导致它在训练集和验证集上都表现不佳。欠拟合通常是由于模型太过简单&#xff0c;没有足够的能力捕捉到数据的复杂性和细节。 1.2 模型…

Python 自动化(十七)ORM操作

ORM-查询操作 查询简介 数据库的查询需要使用管理器对象 objects 进行 通过 自定义模型类.objects 管理器调用查询方法 查询方法 all()方法 概念与理解 用法&#xff1a;自定义模型类.objects.all()作用&#xff1a;查询自定义模型实体中所有的数据等同于 select * fr…

第八部分:JSP

目录 JSP概述 8.1&#xff1a;什么是JSP&#xff0c;它有什么作用&#xff1f; 8.2&#xff1a;JSP的本质是什么&#xff1f; 8.3&#xff1a;JSP的三种语法 8.3.1&#xff1a;jsp头部的page指令 8.3.2&#xff1a;jsp中的常用脚本 ①声明脚本&#xff08;极少使用&#xf…

【Python仿真】基于EKF的传感器融合定位

基于EKF的传感器融合定位&#xff08;Python仿真&#xff09; 简述1. 背景介绍1.1. EKF扩展卡尔曼滤波1.1.1.概念1.1.2. 扩展卡尔曼滤波的主要步骤如下&#xff1a;1.1.3. 优、缺点 1.2. 航位推算1.3. 目前航位算法的使用通常与卡尔曼滤波相结合使用2. 分段代码 2.1. 导入需要的…

【Go入门】 Go如何使得Web工作

【Go入门】 Go如何使得Web工作 前面小节介绍了如何通过Go搭建一个Web服务&#xff0c;我们可以看到简单应用一个net/http包就方便的搭建起来了。那么Go在底层到底是怎么做的呢&#xff1f;万变不离其宗&#xff0c;Go的Web服务工作也离不开我们第一小节介绍的Web工作方式。 w…

Java --- JVM之垃圾回收相关算法

目录 一、垃圾标记算法 1.1、垃圾标记阶段&#xff1a;对象存活判断 1.2、引用计数算法 1.3、可达性分析算法 1.4、GC Roots 二、对象的finalization机制 2.1、生存还是死亡&#xff1f; 三、查看GC Roots 3.1、使用MAT查看 四、使用JProfiler分析OOM 五、清除阶段算…