当前位置: 首页 > news >正文

【论文简述】PVSNet: Pixelwise Visibility-Aware Multi-ViewStereo Network(arxiv 2020)

一、论文简述

1. 第一作者:Qingshan Xu

2. 发表年份:2020

3. 发表期刊:arxiv

4. 关键词:MVS、3D重建、可见性、代价体、训练策略

5. 探索动机:ETH3D基准测试提供的图像包含强烈的视图变化,这就要求MVS方法考虑不同相邻图像的像素可见性信息。现有的基于学习的方法是针对连续视图变化的视频序列定制的。由于他们假设存在与参考图像具有较强可见性关联的相邻图像,通常从全局视图选择的角度选择这些图像作为输入,并对这些图像一视同仁,构建不加区分的多视图聚合代价体。因此,可见性估计在这些网络中被完全忽略。但是,同等对待每个相邻图像会使代价体容易受到不相关的相邻图像噪声的影响。

  1. 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.
  2. 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. 核心思想:

  1. 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.
  2. 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.
  3. We present a new training strategy that introduces disturbing views to improve the robustness of our pixelwise visibility network.

8. 实验结果:

  1. 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.
  2. 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, Dpred1Dpred2。采用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)参数&#xff1a;pid(2)参数&#xff1a;status(3)参数&#xff1a;options(4)返回值wait 与 waitpid 这两个函数的作用是&#xff1a;等待子进程退出&#xff0c;在子进程退出后释放子进程资源&#xff0c;防止子进程变成僵尸进程。但准确的说&…...

移除元素(每日一题)

目录 一、题目描述 二、题目分析 2.1 方法一 2.1.1 思路 2.1.2 代码 2.2 方法二 2.2.1 思路 2.2.2 代码 一、题目描述 题目链接&#xff1a;27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数…...

打印名片-课后程序(Python程序开发案例教程-黑马程序员编著-第一章-课后作业)

实例2&#xff1a;打印名片 名片是标示姓名及其所属组织、公司单位和联系方法的纸片&#xff0c;也是新朋友互相认识、自我介绍的快速有效的方法。本实例要求编写程序&#xff0c;模拟输出效果如图1所示的名片。 图1 名片样式 实例目标 掌握print()函数的用法 实例分析 名片…...

为啥预编译SQL能够防止SQL注入

前言之前我一个搞网络安全的朋友问了我一个的问题&#xff0c;为啥用 PreparedStatement 预编译的 SQL 就不会有被 SQL 注入的风险&#xff1f;第一时间我联想到的是八股文中关于 Mybatis 的脚本 ${} 和 #{} 的问题&#xff0c;不过再想想&#xff0c;为啥 ${} 会有 SQL 注入的…...

IGKBoard(imx6ull)-SPI接口编程-回环测试

文章目录1- 使能imx6ull开发板SPI驱动2- 回环测试imx6ull开发板物理连接3- 编程SPI回环测试4- 代码重难点分析&#xff08;1&#xff09;spi_device结构体&#xff08;2&#xff09;spi_ioc_transfer结构体&#xff08;3&#xff09;ioctl函数对于SIP不了解的可以参考这篇文章&…...

Python基础学习10——类

基本概念 面向对象编程是最有效的软件编写方法之一。理解面向对象编程可以让你像程序员那样从一个更加宏观的角度去理解代码&#xff0c;并大大提高程序员之间的合作效率。面向对象编程的两个核心概念是对象和类 **对象&#xff1a;**对象是能帮助我们解决问题的具体东西。比如…...

项目实战典型案例14——代码结构混乱 逻辑边界不清晰 页面美观设计不足

代码结构混乱 逻辑边界不清晰 页面美观设计不足一&#xff1a;背景介绍问题1 代码可读性差&#xff0c;代码结构混乱问题2 逻辑边界不清晰&#xff0c;封装意识缺乏示例3.展示效果上的美观设计二&#xff1a;思路&方案问题一&#xff0c;代码可读性差&#xff0c;代码结构混…...

SpringBoot 读取自定义Properties参数

目录 1. 概述 2. 实现方式 2.1 Value方式 2.2 PropertySource与ConfigurationProperties相结合 3. 结束 1. 概述 最近想尝试写一个定时任务管理&#xff0c;相关参数不想在Spring的配置文件Application.yml或者Application.properties获取。想自己新建一个properties文件。顺…...

机器学习100天(三十七):037 朴素贝叶斯-挑个好西瓜!

《机器学习100天》完整目录:目录 机器学习100天,今天讲的是:朴素贝叶斯-挑个好西瓜! 红色石头已经了解了贝叶斯定理和朴素贝叶斯法,接下来已经可以很自信地去买瓜了。买瓜之前,还有一件事情要做,就是搜集样本数据。红色石头通过网上资料和查阅,获得了一组包含 10 组样…...

c#遍历窗口,根据标题获取handle并显示窗口

using System.Runtime.InteropServices;using System.Text;//1&#xff0c;定义//[DllImport("User32.dll", EntryPoint "FindWindow")]//public extern static IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport("user32.dll…...

MyBatis高频面试专题

一、介绍下MyBatis中的工作原理 1。介绍MyBatis的基本情况&#xff1a;ORM 2。原理&#xff1a; MyBatis框架的初始化操作处理SQL请求的流程 1.系统启动的时候会加载解析全局配置文件和对应映射文件。加载解析的相关信息存储在 Configuration 对象 Testpublic void test1(…...

曹云金郭德纲关系迎曙光,新剧《猎黑行动》被德云社弟子齐点赞

话说天下大势&#xff0c;分久必合&#xff0c;合久必分。这句话经过了历史的证明&#xff0c;如今依然感觉非常实用。 就拿郭德纲和曹云金来说&#xff0c;曾经后者是前者的得门生&#xff0c;两个人不但情同父子&#xff0c;曹云金还是郭德纲默认接班人。然而随着时间的流逝&…...

如何在 OpenEuler 系统中安装 Docker

Docker 是一种流行的开源容器化平台&#xff0c;它能够将应用程序与其依赖项打包成可移植的容器&#xff0c;从而简化了应用程序的部署和管理。本文将介绍在 OpenEuler 系统中安装 Docker 并使用 Docker 容器控制 5G 模块的具体步骤。 安装 Docker 安装 Docker 的具体步骤如下…...

MySQL日志管理

日志管理在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这种时候&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了数据库中数据丢失或被破坏可能原因&#xff1a;误删除数据库数据库工作时&a…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...