【论文简述】PVSNet: Pixelwise Visibility-Aware Multi-ViewStereo Network(arxiv 2020)
一、论文简述
1. 第一作者:Qingshan Xu
2. 发表年份:2020
3. 发表期刊:arxiv
4. 关键词:MVS、3D重建、可见性、代价体、训练策略
5. 探索动机:ETH3D基准测试提供的图像包含强烈的视图变化,这就要求MVS方法考虑不同相邻图像的像素可见性信息。现有的基于学习的方法是针对连续视图变化的视频序列定制的。由于他们假设存在与参考图像具有较强可见性关联的相邻图像,通常从全局视图选择的角度选择这些图像作为输入,并对这些图像一视同仁,构建不加区分的多视图聚合代价体。因此,可见性估计在这些网络中被完全忽略。但是,同等对待每个相邻图像会使代价体容易受到不相关的相邻图像噪声的影响。
- Unlike the Tanks and Temples dataset, the images provided by ETH3D high-res benchmark contain strong variations in viewpoint, resulting in complicated visibility association. This requires MVS methods to consider the pixelwise visibility information of different neighboring images.
- The existing learning-based methods are tailored for video sequences with continuous viewpoint changes. Since they assume that there exist neighboring images that have strong visibility association with the reference image, they usually select these images as input from the perspective of global view selection and treat these images equally to construct an indiscriminate multi-view aggregated cost volume. Therefore, visibility estimation is totally ignored in these networks. However, treating each neighboring image equally will make the cost volume susceptible to the noise from unrelated neighboring images. This greatly limits the performance of learning-based methods on datasets like ETH3D high-res benchmark with strong variations in viewpoint.
6. 工作目标:学习深度网络中相邻图像的像素可见性信息是一个迫切需要解决的问题。
In real-world scenarios, especially in large-scale 3D reconstruction, the viewpoint of input images usually changes greatly. Therefore, to make learning-based methods truly feasible in practice, it is an urgent problem to learn the pixelwise visibility information of neighboring images in deep networks.
7. 核心思想:
- We propose Pixelwise Visibility-aware multiview Stereo Network (PVSNet) for robust multi view depth estimation. To the best of our knowledge, PVSNet is the first deep learning framework that is able to capture the visibility information of neighboring images and can be truly applied to datasets with strong viewpoint changes.
- We propose a way to regress 2D visibility maps from two-view cost volumes. The visibility maps can reflect the influence of occlusion, illumination, and unstructured viewing geometry. This allows good views to occupy more weights in the final cost volume representation.
- We present a new training strategy that introduces disturbing views to improve the robustness of our pixelwise visibility network.
8. 实验结果:
- the visibility estimation, which is validated in our subsequent experiments, is not only necessary for the datasets with strong viewpoint changes like the ETH3D high-res benchmark, but also crucial for the datasets with video sequences as input like the Tanks and Temples dataset.
- Extensive experiments have been conducted to elaborate on the superiority of our proposed pixelwise visibility-aware multi-view similarity measure. We demonstrate our novel PVSNet achieves state-of-the-art performance on various datasets.
9.论文下载:
https://arxiv.org/pdf/2007.07714.pdf
二、实现过程
1. PVSNet概述
PVSNet的总体结构如下图所示。给定参考图像Iref,源图像Isrc,首先对所有输入图像使用共享的特征提取模块提取多尺度图像特征。然后通过单应性变化经构造每个源图像与参考图像之间的两视图代价体。与大多数现有方法直接对多个双视图代价体进行均值运算或方差计算相比,该方法的关键新颖之处在于在计算聚合的代价体之前估计不同源图像的像素可见性信息(图中红框)。基于可见性信息,将两个视图的代价体聚合为一个加权的代价体。最后,通过代价体滤波和深度推理来预测参考图像的深度图。

2. 多尺度特征提取
使用一个八层二D CNN将原始图像大小(3×H×W)降采样到F×H/4×W/4,F=32为特征通道数。
3. 像素可见性代价体构建
首先在每个源图像和参考图像之间构造两视图代价体。根据每个代价体回归每个源图像的可见性图。通过这些可见性图,多个双视图代价体被进一步聚合为统一的代价体。
两视图代价体构建。基于多个采样深度假设,将每个源图像提取的深度特征变化为参考图像的相机坐标,通过组相关[27]计算出变化后的源图像特征与参考图像特征之间的多通道相似性图。构建两视图代价体。然后根据D个采样深度假设,计算D个相似图。将这些相似图进行打包,构造大小为G×H/4×W/4×D的两视图代价体,其中G=8为通道数。
像素可见性代价体聚合。在获得两视图代价体后,利用它来回归源图像的可见性图,因为两视图代价体编码了不同采样深度的置信度。由于两视图代价体的分布通常不具有区别性,因此首先应用3D U-Net来调制,其中U-Net使用三尺度编码器-解码器结构来增加感受野。除了最后一个卷积层产生一个通道特征,然后是sigmoid激活函数,其他卷积层后面是BN层和一ReLU。源图像的可见性图Vi定义为:

P(j,p)为像素P在第j个采样深度值处的概率估计。为了进一步消除不相关源图像的影响,去除可见概率低于一定阈值的图像。然后,将每个源图像的可见性图修改为:

其中τ=0.05是控制源图像激活的阈值。上面的方程类似于ReLU,整个网络可以通过反向传播进行端到端训练。最终聚合的代价体由:

4. 代价体滤波和深度推理
为了进一步聚合空间域和深度域的上下文,应用具有堆叠正则化模块的3D CNN,用于过滤聚合代价体。过滤模块由一个3D ResNet和两个3D U-Net组成。为了适应大规模场景重建,实现亚像素深度估计,采用逆深度回归得到深度预测:

P(j,p)为沿深度方向经softmax操作归一化后的概率体。对于三个正则化模块,网络产生三个深度预测,Dpred0, Dpred1和Dpred2。采用L1损失函数来训练我们的网络。低分辨率预测的损失函数定义为:

5. 高分辨率估计的延伸
利用低分辨率可见性估计来帮助薄代价体的构建。具体而言,在获得某一阶段的预测序数和概率体后,采用中基于方差的不确定性估计来计算下一阶段的深度采样范围。前一阶段的可见性图直接上采样到当前阶段,以计算可见性敏感的薄代价体。然后利用简单的3D U-Net得到概率体,利用逆深度回归来推断深度图。重复同样的过程,直到深度图达到原始图像分辨率。高分辨率预测的训练损失定义为:

Dpred3和Dpred4是第二阶段和第三阶段的预测深度图。
6. 抗噪声训练策略
之前所有基于学习的方法[遵循MVSNet,通过全局视图来选择最好的两个相邻视图进行模型训练。然而,这两个选择的视图有如此强的可见性关联,只有少量可见性信息负样本参与模型训练的参考图像。正负之间的极端不平衡阻止了该方法充分利用像素可见性网络的潜力。为了缓解这一问题,提出引入干扰视图的抗噪声训练策略(AN)。具体来说,采用MVSNet中的方法来计算全局视图选择得分。然后,选择最好的两个视图和最差的两个视图来训练我们的模型。这种训练策略引入了更多的负样本,使我们的网络对不相关的视图更加鲁棒。
7. 实验
7.1. 数据集和评估指标
DTU dataset, Tanks and Temples dataset,ETH3D high-res benchmark is a dataset with strong viewpoint variations.
7.2. 实现细节
全局视图选择包括20个相邻视图。网络是使用PyTorch实现的。使用RMSprop优化器在两个NVIDIA GTX 1080Ti GPU上训练网络。初始学习率设置为0:001。
7.3. 与先进技术的比较


相关文章:
【论文简述】PVSNet: Pixelwise Visibility-Aware Multi-ViewStereo Network(arxiv 2020)
一、论文简述 1. 第一作者:Qingshan Xu 2. 发表年份:2020 3. 发表期刊:arxiv 4. 关键词:MVS、3D重建、可见性、代价体、训练策略 5. 探索动机:ETH3D基准测试提供的图像包含强烈的视图变化,这就要求MVS…...
CSS隐藏元素的几种方式以及display、visibility、opacity的区别
CSS隐藏元素的方式首先最通用且最易想到的方法肯定是display、visibility和opacity这三种了display:none设置元素不可见并且连盒模型也不生成,一般用于不占空间的隐藏元素。display属性规定元素应该生成的框的类型,当其值为“none”时可以规定元素不生成…...
【Java|golang】1487. 保证文件名唯一---golang中string方法的坑
给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹:在第 i 分钟,新建名为 names[i] 的文件夹。 由于两个文件 不能 共享相同的文件名,因此如果新建文件夹使用的文件名已经被占用,系统会以 (k) 的形式为新…...
flstudio21水果language选项中文设置方法教程
编曲是通过DAW(数字音频工作站软件)完成的,也就是我们常说的宿主软件。现在有很多优秀的宿主软件,例如Cubase、Studio One、FL Studio等。 FL Studio是一款功能强大的音乐制作软件,也被称为FruityLoops。目前已经推出…...
Ubuntu中安装StaMPS
Ubuntu中安装StaMPS0 StaMPS简介1 首先安装好MATLAB,安装一些依赖工具包2 安装StaMPS2.1 下载StaMPS安装包2.2 安装2.3 配置环境2.4 matlab中的路径设置0 StaMPS简介 官网:https://homepages.see.leeds.ac.uk/~earahoo/stamps/ A software package to e…...
Spring Security 实现自定义登录和认证(1)
1 SpringSecurity 1.1 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>1.2 编写配置类 在spring最新版中禁用了WebSecurityConfigurerAdapter…...
Linux 进程:辨析wait与waitpid
目录一、wait二、waitpid(1)参数:pid(2)参数:status(3)参数:options(4)返回值wait 与 waitpid 这两个函数的作用是:等待子进程退出,在子进程退出后释放子进程资源,防止子进程变成僵尸进程。但准确的说&…...
移除元素(每日一题)
目录 一、题目描述 二、题目分析 2.1 方法一 2.1.1 思路 2.1.2 代码 2.2 方法二 2.2.1 思路 2.2.2 代码 一、题目描述 题目链接:27. 移除元素 - 力扣(LeetCode) 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数…...
打印名片-课后程序(Python程序开发案例教程-黑马程序员编著-第一章-课后作业)
实例2:打印名片 名片是标示姓名及其所属组织、公司单位和联系方法的纸片,也是新朋友互相认识、自我介绍的快速有效的方法。本实例要求编写程序,模拟输出效果如图1所示的名片。 图1 名片样式 实例目标 掌握print()函数的用法 实例分析 名片…...
为啥预编译SQL能够防止SQL注入
前言之前我一个搞网络安全的朋友问了我一个的问题,为啥用 PreparedStatement 预编译的 SQL 就不会有被 SQL 注入的风险?第一时间我联想到的是八股文中关于 Mybatis 的脚本 ${} 和 #{} 的问题,不过再想想,为啥 ${} 会有 SQL 注入的…...
IGKBoard(imx6ull)-SPI接口编程-回环测试
文章目录1- 使能imx6ull开发板SPI驱动2- 回环测试imx6ull开发板物理连接3- 编程SPI回环测试4- 代码重难点分析(1)spi_device结构体(2)spi_ioc_transfer结构体(3)ioctl函数对于SIP不了解的可以参考这篇文章&…...
Python基础学习10——类
基本概念 面向对象编程是最有效的软件编写方法之一。理解面向对象编程可以让你像程序员那样从一个更加宏观的角度去理解代码,并大大提高程序员之间的合作效率。面向对象编程的两个核心概念是对象和类 **对象:**对象是能帮助我们解决问题的具体东西。比如…...
项目实战典型案例14——代码结构混乱 逻辑边界不清晰 页面美观设计不足
代码结构混乱 逻辑边界不清晰 页面美观设计不足一:背景介绍问题1 代码可读性差,代码结构混乱问题2 逻辑边界不清晰,封装意识缺乏示例3.展示效果上的美观设计二:思路&方案问题一,代码可读性差,代码结构混…...
SpringBoot 读取自定义Properties参数
目录 1. 概述 2. 实现方式 2.1 Value方式 2.2 PropertySource与ConfigurationProperties相结合 3. 结束 1. 概述 最近想尝试写一个定时任务管理,相关参数不想在Spring的配置文件Application.yml或者Application.properties获取。想自己新建一个properties文件。顺…...
机器学习100天(三十七):037 朴素贝叶斯-挑个好西瓜!
《机器学习100天》完整目录:目录 机器学习100天,今天讲的是:朴素贝叶斯-挑个好西瓜! 红色石头已经了解了贝叶斯定理和朴素贝叶斯法,接下来已经可以很自信地去买瓜了。买瓜之前,还有一件事情要做,就是搜集样本数据。红色石头通过网上资料和查阅,获得了一组包含 10 组样…...
c#遍历窗口,根据标题获取handle并显示窗口
using System.Runtime.InteropServices;using System.Text;//1,定义//[DllImport("User32.dll", EntryPoint "FindWindow")]//public extern static IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport("user32.dll…...
MyBatis高频面试专题
一、介绍下MyBatis中的工作原理 1。介绍MyBatis的基本情况:ORM 2。原理: MyBatis框架的初始化操作处理SQL请求的流程 1.系统启动的时候会加载解析全局配置文件和对应映射文件。加载解析的相关信息存储在 Configuration 对象 Testpublic void test1(…...
曹云金郭德纲关系迎曙光,新剧《猎黑行动》被德云社弟子齐点赞
话说天下大势,分久必合,合久必分。这句话经过了历史的证明,如今依然感觉非常实用。 就拿郭德纲和曹云金来说,曾经后者是前者的得门生,两个人不但情同父子,曹云金还是郭德纲默认接班人。然而随着时间的流逝&…...
如何在 OpenEuler 系统中安装 Docker
Docker 是一种流行的开源容器化平台,它能够将应用程序与其依赖项打包成可移植的容器,从而简化了应用程序的部署和管理。本文将介绍在 OpenEuler 系统中安装 Docker 并使用 Docker 容器控制 5G 模块的具体步骤。 安装 Docker 安装 Docker 的具体步骤如下…...
MySQL日志管理
日志管理在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这种时候,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了数据库中数据丢失或被破坏可能原因:误删除数据库数据库工作时&a…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
