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

news2024/11/20 10:21:37

一、论文简述

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. 与先进技术的比较

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

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

相关文章

刷题笔记4 | 24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head [1,2,3,4] 输出&#xff1a…

JDBC概述二(JDBC编程+案例展示)

一(JDBC的编程步骤) 1.加载数据库驱动 加载数据库驱动通常使用class类的静态方法forName()来实现,具体实现方式如下: Class.forName(“DriverName”),DriverName就是数…

RuoYi-Flowable-Plus(代码生成)

RuoYi-Flowable-Plus搭建 若依所有扩展项目的代码生成功能都是一样的&#xff0c;RuoYi-Flowable-Plus为例来演示。 模块创建 1.创建新模块ruoyi-student2.编辑RuoYi-Flowable-Plus\pom.xml <dependency><groupId>com.ruoyi</groupId><artifactId>ruoy…

搭建Java环境

使用Java语言开发首先必须搭建好开发环境。 以windows 10为例&#xff0c;进行Java环境搭建分为以下几个步骤 1、下载并安装JDK 2、配置环境变量 1、下载并安装JDK 可以访问网站http://www.oracle.com/index.html进行SDK的下载&#xff08;因网站经常改版&#xff0c;这里就…

python 操作word库docx 增强接口

前言用python 的docx 库操作word完成一些自动化的文档生成工作&#xff0c;但有时候会遇到docx库提供的操作无法直接满足业务上的需求&#xff0c;需要对其进行一些扩展。接口完善实现在指定的文字后面插入指定的文字任务&#xff1a;以下示例需要在文档中的所有 "人生苦短…

Swing进度条演示(传输真实文件)

目录 GIF演示 代码 此示例涵盖的知识点&#xff1a;线程、IO流、File、Swing、Listener、JFrame、JFileDialog、JOptionPane、JProgressBar、Timer GIF演示 代码 package psn.exer.progress;import javax.swing.*; import java.awt.*; import java.io.*; import java.util.U…

【PyTorch】P1 简介

PyTorch 基础PyTorch 简介机器学习框架PyTorch 与 TensorFlow 的核心之争PyTorch生态PyTorch能做什么开发环境选择Pytorch Cuda 安装与疑难解答PyTorch 简介 2002年提出 torch 框架&#xff0c;是通用的机器学习计算框架&#xff0c;支持GPU加速运算&#xff1b; 2011年推出 to…

k-Tree(DP)

k-Tree1、问题2、思路&#xff08;DP&#xff09;3、代码1、问题 2、思路&#xff08;DP&#xff09; 这道题翻译过来就是说&#xff0c;给我们一个k叉树&#xff0c;然后每个点到子节点的边的边权从左到右依次为1到k。然后我们从根节点出发&#xff0c;向下走&#xff0c;我们…

@RequestParam和@PathVariable的用法与区别

PathVariable PathVariable 映射 URL 绑定的占位符带占位符的 URL 是 Spring3.0 新增的功能&#xff0c;该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义通过 PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中&#xff1a;URL 中的 {xxx} 占…

[vue] Vite的使用

[vue] Vite的使用环境package.json文件变更变更脚手架修改脚本命令index.html 文件htmlWebpackPlugin 替换为 vite-plugin-htmlWere sorry but vue3.x-vite-ts doesnt work properly without JavaScript enabled. Please enable it to continue.vite.config.ts 文件变更vite-pl…

设计模式之行为型模式

四、行为型模式 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式&#xff0c;前者采用继承机制来在…

[acwing周赛复盘] 第 93 场周赛20230304

[acwing周赛复盘] 第 93 场周赛20230304 一、本周周赛总结二、 4867. 整除数1. 题目描述2. 思路分析3. 代码实现三、 4868. 数字替换1. 题目描述2. 思路分析3. 代码实现四、4869. 异或值1. 题目描述2. 思路分析3. 代码实现六、参考链接一、本周周赛总结 彩笔了&#xff0c;只A…

十大经典排序算法【快速了解】

文章目录一、算法分类二、经典排序算法总览三、算法复杂度四、代码实现一、算法分类 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a; 通过比较来决定元素间的相对次序由于其时间复杂度不能突破O(nlogn)&#xff0c;因此也称为非线性时间比较类排序。 非…

电视剧《狂飙》太过诡异,主演各个悄无声息,龙套演员却身价倍增

说起电视剧《狂飙》&#xff0c;相信很多人都有过观看&#xff0c;这部以反腐为题材的大剧&#xff0c;尺度之大近年来绝无仅有。不过观众在被剧情震撼的同时&#xff0c;也发现了一些诡异的事情&#xff0c;比如说主角和配角的反差&#xff0c;让人感觉很不适应。 在电视剧《狂…

51单片机入门————数码管显示

我们在马路上看到的红绿灯&#xff0c;就是由数码管来实现的&#xff0c;就是其中可能加入了一些延时和转换数码管是通过控制138译码器与74HC245来控制数码管的亮灭与数字的显示电路原理图我们先讨论一个数码管数码管有共阳极和共阴极&#xff0c;我们现在使用的STC89C52是共阴…

DataX入门

目录 1. DataX介绍 2. DataX支持的常用数据源类型 3. 设计理念 4. DataX框架设计 4.1. Reader 4.2. Writer 4.3. Framework 5. DataX的运行流程 6. DataX与Sqoop对比 7. 部署 8. 配置详解 9. 案例 同步MySql到HDFS 9.1. 整体结构 9.2. mySqlReader 9.2.1. …

C语言函数:字符串函数及模拟实现strncpy()、strncat()、strncmp()

C语言函数&#xff1a;字符串函数及模拟实现strncpy()、strncat()、strncmp() 在了解strncpy、strncat()、前&#xff0c;需要先了解strcpy()、strncat()&#xff1a; C语言函数&#xff1a;字符串函数及模拟实现strlen() 、strcpy()、 strcat()_srhqwe的博客-CSDN博客 strncp…

包装类详解(装箱,拆箱)

Object 引用可以指向任意类型的对象&#xff0c;但有例外出现了&#xff0c;8 种基本数据类型不是对象&#xff0c;那岂不是刚才的泛型机制要失效了&#xff1f;&#xff08;泛型详解._阿瞒有我良计15的博客-CSDN博客&#xff09; 实际上也确实如此&#xff0c;为了解决这个问题…

数据结构与算法-二叉树-序列化与反序列化

可能性探究:我们可以想到的是只有一棵树按照某个序是唯一确定要给结构的情况才可能被序列化和反序列化&#xff0c;比如我们对于以下的二叉树可以找到它的先序、中序、后序如下&#xff1a; 根据它的先序和后序我们找不到任何其他可能的树&#xff0c;所以可以根据先序和后序去…

NLP预训练模型

Models Corpus RoBERTa: A Robustly Optimized BERT Pretraining Approach 与BERT主要区别在于&#xff1a; large mini-batches 保持总训练tokens数一致&#xff0c;使用更大的学习率、更大的batch size&#xff0c;adam β20.98\beta_20.98β2​0.98&#xff1b;dynamic ma…