Unsupervised MVS论文笔记

news2025/1/16 3:49:00

Unsupervised MVS论文笔记

    • 摘要
    • 1 引言
    • 2 相关工作
    • 3 实现方法

Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and Martial Hebert. Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and Martial Hebert. arXiv: 1905.02706, 2019.
https://doi.org/10.48550/arXiv.1905.02706

摘要

在2019年6月6日,作者提出了一种基于学习的多视图立体视觉(MVS)的方法。虽然目前的深度MVS方法取得了令人印象深刻的结果,但它们关键地依赖于真实的3D训练数据,而获取这种精确的3D几何图形用于监督是一个主要障碍。相反,作者的框架利用多个视图之间的光度一致性作为监督信号,在一个较宽的基线MVS设置中学习深度预测。然而,仅用光度一致性约束是不可取的。为了克服这一问题,作者提出了一个有效的损失公式: a)强制一阶一致性,b)对每个点,有选择性地强制与一些视图进行一致性,从而隐式地处理遮挡。在不使用真实数据集进行3D监督的情况下,此方法是有效的,并表明提出的有效损失每个组成部分都对重建结果具有显著的改进。作者定性地观察到,作者的重建往往比获得的事实数据更完整,进一步显示了这种方法的优点。
在这里插入图片描述

1 引言

从图像中恢复场景密集的三维结构一直是计算机视觉的一个长期目标。多年来,有几种方法通过利用潜在的几何和光度约束来解决这个多视图立体视觉(MVS)任务——一个图像中的一个点沿着极线投射到另一个图像上,并且正确的匹配在光学上是一致的。虽然实施这一见解导致了显著的成功,但这些纯粹的基于几何的方法对每个场景独立,并无法对世界隐式地捕获和利用通用先验,例如表面往往是平的,因此当信号稀疏时有时表现不佳,如无纹理表面。

为了克服这些限制,一项新兴的工作集中于基于学习的MVS任务解决方案,通常训练CNN来提取和合并跨视图的信息。虽然这些方法产生了令人印象深刻的性能,但它们在学习阶段依赖于真实的3D数据。作者认为,这种形式的监督过于繁琐,不是自然可行的,因此,寻求不依赖这种3D监督的解决方案具有实用和科学意义

作者建立在最近的这些基于学习的MVS方法的基础上,这些方法呈现了具有几何归纳偏差的CNN架构,但在用于训练这些CNN的监督形式上存在显著差异。作者不依赖于真实的三维监督,而是提出了一个以无监督的方式学习多视图立体视觉的框架,仅依赖于多视图图像的训练数据集。能够使用这种形式的监督的见解类似于经典方法中使用的见解——正确的几何形状将产生光学上一致的重投影,因此可以通过最小化重投影误差来训练CNN

虽然类似的重投影损失已经被最近的方法成功地用于其他任务,如单眼深度估计,但作者注意到,天真地将它们应用于学习MVS是不够的。这是因为不同的可用图像可能捕获到不同的可见场景。因此,一个特定的点(像素)不需要在光度学上与所有其他视图一致,而是只需要那些它没有被遮挡的视图。然而,明确地推理遮挡来恢复几何,提出了一个鸡和蛋的问题,因为遮挡的估计依赖于几何,反之亦然。

为了避免这一点,作者注意到,虽然正确的几何估计不需要与所有视图的光度一致性,但它应该至少与某些视图一致性。此外,在MVS设置中,跨视图的照明变化也很重要,因此只在像素空间中强制执行一致性是不可取的,而作者认为强制执行额外的基于梯度的一致性

作者提出了一个有效的重投影损失,使我们能够捕获上述要求的照片,并允许使用所需的监督形式学习MVS。该方法的公式允许处理遮挡,但没有明确地为图像建模。该方法的设置和示例输出如上图1所示。该模型在没有三维监督的情况下进行训练,以一组图像作为输入,预测每幅图像的深度图,然后将其结合起来,得到一个密集的三维模型

总之,该论文的主要贡献是:
1)提出一个以无监督的方式学习多视图立体视觉的框架,只使用来自新视图的图像作为监督信号。
2)一种用于学习无监督深度预测的有效多视图光度一致性损失,允许隐式地克服跨训练视图之间的照明变化和遮挡。

2 相关工作

多视图立体视觉重建
关于MVS的工作有着悠久而丰富的历史。在这里只讨论有代表性的作品,感兴趣的读者可以进行相关调查。MVS的实现有四个主要步骤:视图选择、传播方案、补丁匹配和深度图融合。已经有研究为每个像素聚合多个视图的方案,作者的构思可以看作是在训练过程中通过损失函数整合了其中的一些想法。基于补丁匹配的立体匹配的方法取代了经典的种子和扩展传播方案。补丁匹配已被用于多视图立体视觉结合迭代实现传播方案,深度估计和法线。深度图融合将单个深度图合并到一个单一点云中,同时确保结果点在多个视图之间保持一致,并删除不正确的估计。深度表示继续主导MVS基准测试和寻找深度图像作为输出的方法,从而将MVS问题解耦成更易于处理的部分。

基于学习的MVS
利用CNN学习到的特征能够很自然地适合于MVS的第三步:匹配图像补丁。CNN特征已被用于立体匹配,同时使用度量学习来定义相似度的概念。这些方法需要一系列的后处理步骤来最终生成成对的视差图。专注于学习MVS所有步骤的工作相对较少。体素表示自然地从不同的视图编码表面可见性,这已经在一些工作中得到证实。选择这种表示的常见缺点是不清楚如何将它们缩放到更多样化和大规模的场景。有些工作使用CNN特征创建代价体,视差值通过可微soft argmin操作回归获得。结合上述方法的优点,并借鉴经典方法的见解,最近的工作为多个视图生成深度图像,并将它们融合以获得三维重建。至关重要的是,上述所有方法都依赖于3D监督,本篇工作放宽了这一要求。

无监督深度估计
由于减少监督需求的类似动机,最近的一些单目]或双目立体深度预测方法利用了光度一致性损失。作为监督信号,这些图像依赖于训练过程中来自双目图像对或单目视频的图像。作为可见性推理的手段,网络用于预测可解释性、失效掩模或通过加入观察置信度的概率模型。这些方法在一个狭窄的基线设置上运行,在训练过程中使用的帧之间的视觉变化有限,因此不会由于遮挡和照明变化而遭受显著的影响。当前的目标是在MVS设置中利用光度损失进行学习,因此Unsupervised MVS提出一个有效的构思来处理这些挑战。

3 实现方法

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

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

相关文章

二十二、数组(4)

本章概要 随机生成泛型和基本数组 随机生成 我们可以按照 Count.java 的结构创建一个生成随机值的工具: Rand.java import java.util.*; import java.util.function.*;import static com.example.test.ConvertTo.primitive;public interface Rand {int MOD 10_0…

详解自动化之单元测试工具Junit

目录 1.注解 1.1 Test 1.2 BeforeEach 1.3 BeforeAll 1.4 AfterEach 1.5 AfterAll 2. 用例的执行顺序 通过 order() 注解来排序 3. 参数化 3.1 单参数 3.2 多参数 3.3 多参数(从第三方csv文件读取数据源) 3.4 动态参数ParameterizedTest MethodSource() 4. 测试…

数字IC后端设计利器 - 《Innovus的基本使用流程和命令》

Innovus作为数字后端工具的后起之秀,在先进工艺下已经取得了令人瞩目的成就。其在Run time上的优势令人刮目,在timing、DRC、IR-drop上的结果更是让人竖起大拇指。 数字IC后端工程师学习Cadence公司的Innovus工具非常重要,因为Innovus是一款…

YOLOv8改进实战 | 更换主干网络Backbone(六)之轻量化模型VanillaNet进阶篇

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

封面从这里取好啦

文章目录 前端NPMViteNode.js 后端JavaMavenPython 数据库算法 前端 NPM Vite Node.js 后端 Java Maven Python 数据库 算法

常见面试题-Redis持久化策略

谈谈Redis 的持久化策略? 参考文章: Redis 持久化机制演进与百度智能云的实践 Redis的确是将数据存储在内存的,但是也会有相关的持久化机制将内存持久化备份到磁盘,以便于重启时数据能够重新恢复到内存中,避免数据丢…

反编译-ApkTool

ApkTool下载地址: Apktool | ApktoolA tool for reverse engineering Android apk fileshttps://apktool.org/ 1、使用 apktool 解包 执行 java -jar apktool_2.4.1.jar d demo.apk -o demo 命令 java -jar apktool_2.4.1.jar d demo.apk -o demo 其中 d 后面是…

嵌入式基础知识学习:Flash、EEPROM、RAM、ROM

https://blog.csdn.net/y673533511/article/details/87913989 FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦出可编程(EEPROM) 的性能,还不会断电丢失数据同时可以快速读取数据 (NVRAM 的优势),U 盘和MP3 里用的…

JSP:Javabean

起初,JavaBean的目的是为了将可以重复使用的代码进行打包,在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean称之可视化的JavaBean。 随着技术的不断发展与项目的需求&am…

MySQL 事务的底层原理和 MVCC(一)

在事务的实现机制上,MySQL 采用的是 WAL(Write-ahead logging,预写式日志)机制来实现的。 在使用 WAL 的系统中,所有的修改都先被写入到日志中,然后再被应用到系统中。通常包含 redo 和 undo 两部分信息。 …

react大文件上传

目录 大文件上传优点: 大文件上传缺点: 大文件上传原理: 为什么要用md5 实现流程: 部分代码1: 部分代码2:​ 大文件上传优点: 文件太大分片上传能加快上传速度,提高用户体验能断点续传 如果上次上传失败…

纳米软件电源芯片测试案例分享:测试方案、仪器选型、解决测试难点

一、背景介绍 成都某半导体芯片公司是一家专注于开发设计半导体电源芯片的高新技术企业,目前企业对于电源管理芯片研发阶段的测试,绝大部分采用人工手动测试,效率低,耗时长,数据管理储存难度大,无法快速地完…

依托数据、平台、知识增强等优势 夸克大模型大幅降低问答幻觉率

“大模型时代,夸克有巨大机会创造出革新性搜索产品。”11月22日,夸克大模型公布了其面向搜索、生产力工具和资产管理助手的大模型技术布局。数据显示,夸克千亿级参数大模型登顶C-Eval和CMMLU两大权威榜单,夸克百亿级参数大模型同样…

SpringMVC问题

文章目录 SpringMVC运行流程MVC的概念与请求在MVC中的执行路径,ResponsBody注解的用途SpringMVC启动流程 SpringMVC运行流程 • 客户端(浏览器)发送请求,直接请求到 DispatcherServlet 。 • DispatcherServlet 根据请求信息调用 …

minio安装使用-linux

下载地址:MinIO | Code and downloads to create high performance object storage 选择 minio server 可以直接下载二进制文件。 将下载的文件传输到服务器的指定文件夹下,如 /opt/minio。 然后在,命令行启动minio: /opt/mini…

【Python】重磅!这本30w人都在看的Python数据分析畅销书更新了!

Python 语言极具吸引力。自从 1991 年诞生以来,Python 如今已经成为最受欢迎的解释型编程语言。 【文末送书】今天推荐一本Python领域优质数据分析书籍,这本30w人都在看的书,值得入手。 目录 作译者简介主要变动导读视频购书链接文末送书 pan…

常见面试题-Redis 主从复制原理以及痛点

Redis 主从复制如何同步数据呢? 参考文章:https://blog.csdn.net/Seky_fei/article/details/106877329 https://zhuanlan.zhihu.com/p/55532249 https://cloud.tencent.com/developer/article/2063597 https://xie.infoq.cn/article/4cffee02a2a12c2…

【Linux】-进程间通信-共享内存(SystemV),详解接口函数以及原理(使用管道处理同步互斥机制)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

Nuxt3使用

1.官网下载 npx nuxilatest init nuxt(有墙)&#xff0c;也可以到这个地方下载&#xff1a;git clone https://gitee.com/pmx600/nuxt3.git。 2.找到app.vue文件 将里面的代码修改为&#xff1a;<template><NuxtPage /></template>&#xff0c;NuxtPage 的…

【JavaScript】2.3 数据处理和函数式编程

文章目录 数组操作mapfilterreduce 函数式编程纯函数高阶函数闭包 总结 JavaScript提供了丰富的数据处理方法&#xff0c;特别是在数组操作和函数式编程方面。在这一章节中&#xff0c;我们将学习一些JavaScript中的数据处理技巧和函数式编程的基本概念。 数组操作 JavaScript…