【论文精读】Vis-MVSNet: Visibility-aware Multi-view Stereo Network

news2024/11/25 11:23:24

今天属于是重读经典了,这是一篇发表在BMVC2020上的文章,试图解决MVS中可见性的问题。该文章最近在拓展之后被发表在了IJCV上。本文的解读是基于扩展之后的IJCV版本,期刊的版本内容更加详细一点。
文章链接:BMVC2020版本和IJCV版本
代码仓库:Github

目录

  • Abstract
  • 1 Intro
  • 2 Related Work
  • 3 Method
    • 3.1 Overview
    • 3.2 Feature Extraction
    • 3.3 Cost Volume and Regularization
    • 3.4 Pair-wise Joint Depth and Uncertainty Estimation
    • 3.5 Volume Fusion
    • 3.6 Coarse-to-Fine Architecture
    • 3.7 Training Loss
    • 3.8 Point Cloud Generation
  • 4 Experiment
    • 4.1 Implementation
    • 4.2 Benchmarking on Tanks and Temples Dataset
    • 4.3 Benchmarking on ETH3D Dataset
    • 4.4 Benchmarking on DTU Dataset
    • 4.5 Ablation Study
    • 4.6 Memory and Time Consumption
  • 5 Conclusion

Abstract

很少有现有网络明确考虑像素级可见性,从而导致被遮挡像素的错误成本聚合。 在本文中,我们通过匹配不确定性估计明确推断并整合 MVS 网络中的像素级遮挡信息。 成对不确定性图与成对深度图联合推断,进一步用作多视图成本体积融合期间的加权指导。 这样,在成本融合中抑制了被遮挡像素的不利影响。

1 Intro

介绍了MVS的基础内容。
提出了一个端到端网络的结构,考虑了像素可见性信息。深度图由多视图图像分两步估计。首先,匹配ref和src对,得到代表对匹配质量的latent volume,这个volume进一步回归得到深度图和不确定性图的中间估计,其中不确定性由概率体的depth-wise entropy转换而来。其次,利用对匹配的不确定性作为加权引导,将所有成对latent volume融合到一个多视图从上图volume中,以减弱不匹配像素。fused volume被正则化并回归到最终深度估计。同时,我们还集成了组相关和从粗到细的策略,以进一步提高整体重建质量。网络是端到端可训练的,不确定性部分以无监督的方式训练。因此,可以直接利用现有的具有真实深度图的MVS数据集来训练。

2 Related Work

介绍了相关工作,基于学习的MVS、可见性估计、不确定性估计。

3 Method

3.1 Overview

类似于CasMVSNet 。首先,将ref image I 0 I_{0} I0和一组相邻的src images { I i } i = 1 N {\{I_{i}\}}_{i=1}^{N} {Ii}i=1N输入2D UNet用于多尺度图像特征的提取,用于从低分辨率到高分辨率的三个阶段的深度估计和不确定性图。对于第 k k k阶段的重建,根据不确定性对latent volume进行融合,构造代价体,正则化并用于估计与输入特征图分辨率相同的深度图 D k , 0 D_{k, 0} Dk,0。前一阶段的中间深度图将用于下一阶段的代价体构建。最后, D 3 , 0 D_{3,0} D3,0作为系统的最终输出 D 0 D_{0} D0
在这里插入图片描述

3.2 Feature Extraction

使用 hourglass-shaped encoder-decoder UNet,3个层级分别输出分辨率为 1 8 × 1 8 \frac{1}{8} \times \frac{1}{8} 81×81 1 4 × 1 4 \frac{1}{4} \times \frac{1}{4} 41×41 1 2 × 1 2 \frac{1}{2} \times \frac{1}{2} 21×21的32通道特征图。

3.3 Cost Volume and Regularization

在第 k k k个尺度阶段,我们首先为每个ref-src的pair来构建pair-wise的cost volume,而不是直接从所有视图构建统一的成本量。对于第 i i i对,通过假设ref图像的深度为 d d d,我们可以从src视图获得warp之后的特征图 F k , i → 0 ( d ) F_{k,i→0}(d) Fk,i0(d)。我们应用group-wise correlation来计算ref特征图和warp了的src特征图之间的cost map。 具体来说,给定两个 32 通道特征图,我们将所有通道分为 8 组,每组 4 个通道。 然后计算每个对应组对之间的相关性,从而为每个像素产生 8 个值。 然后将所有深度假设的成本图堆叠在一起作为成本量。第 k k k阶段中第 i i i个图像对的最终成本量 C k , i C_{k,i} Ck,i的大小为 N d , k × H × W × N c N_{d,k}×H×W×N_{c} Nd,k×H×W×Nc ,其中 N d , k N_{d,k} Nd,k是第 k k k阶段中的深度假设数, N c = 8 N_{c}=8 Nc=8是分组相关运算的组号。第一阶段的假设集合是预先确定的,第二阶段和第三阶段的假设集合是根据前一阶段的深度图输出动态确定的。

我们的成本调整分两步进行。 首先,第k阶段的第i个对,每个成对成本量分别被正则化为latent volume V k , i V_{k,i} Vk,i。 然后,所有都融合到 V k V_{k} Vk,进一步正则化为概率体积 P k P_{k} Pk,并通过soft-argmax操作回归到当前阶段 D k , 0 D_{k,0} Dk,0的最终深度图。 具体来说,我们首先通过联合推断成对深度和不确定性来测量可见性。 每个latent volume通过额外的 3D CNN 和 softmax 操作转换为概率体积 P k , i P_{k,i} Pk,i。 然后,通过soft-argmax和熵运算联合推断深度图 D k , i D_{k,i} Dk,i和相应的不确定性图 U k , i U_{k,i} Uk,i。不确定性图将用作latent volume融合期间的加权指导。

3.4 Pair-wise Joint Depth and Uncertainty Estimation

深度图是通过 soft-argmax 操作从概率体回归的。 为了简单起见,下面省略了阶段的数字k。 我们将所有深度假设的概率分布表示为 { P i , j } j = 1 N d \{P_{i,j}\}_{j=1}^{N_{d}} {Pi,j}j=1Nd。 soft-argmax 运算相当于计算该分布的期望,Di 计算如下:
D i = ∑ j = 1 N d d j P i , j \begin{aligned} \mathbf {D}_{i} = \sum _{j=1}^{N_d} d_j \mathbf {P}_{i, j} \end{aligned} Di=j=1NddjPi,j
为了联合回归深度估计及其不确定性,我们假设深度估计遵循拉普拉斯分布。 在这种情况下,估计的深度和不确定性最大化了观察到的GT情况的可能性:
p ( D g t , i ∣ D i , U i ) = 1 2 U i ⋅ exp ⁡ ( ∣ D i − D g t , i ∣ U i ) \begin{aligned} p( \mathbf {D}_{gt, i} | \mathbf {D}_{i}, \mathbf {U}_{i} ) = \frac{1}{2\mathbf {U}_{i}} \cdot \exp \left( \frac{|\mathbf {D}_{i} - \mathbf {D}_{gt, i}|}{\mathbf {U}_{i}} \right) \end{aligned} p(Dgt,iDi,Ui)=2Ui1exp(UiDiDgt,i)
其中 U i U_{i} Ui是像素的深度估计的不确定性。注意,概率分布 { P i , j } j = 1 N d \{P_{i,j}\}_{j=1}^{N_{d}} {Pi,j}j=1Nd也反映了匹配质量。因此,我们应用 { P i , j } j = 1 N d \{P_{i,j}\}_{j=1}^{N_{d}} {Pi,j}j=1Nd的熵图 H i H_{i} Hi来衡量深度估计质量,通过函数 f u f_{u} fu H i H_{i} Hi转换为不确定性图 U i U_{i} Ui f u f_{u} fu为一个浅层的2D CNN:
U i = f u ( H i ) = f u ( ∑ j = 1 N d − P i , j log ⁡ P i , j ) \begin{aligned} \mathbf {U}_{i} = f_u(\mathbf {H}_{i}) = f_u(\sum _{j=1}^{N_d} - \mathbf {P}_{i, j} \log \mathbf {P}_{i, j}) \end{aligned} Ui=fu(Hi)=fu(j=1NdPi,jlogPi,j)
采用熵的原因是分布的随机性与单峰分布负相关。 单模态是深度估计高置信度的指标。
为了联合学习深度图估计 D i D_{i} Di及其不确定性 U i U_{i} Ui,我们最小化上述负对数似然:
L i j o i n t = 1 ∣ I 0 v a l i d ∣ ∑ x ∈ I 0 v a l i d − log ⁡ ( 1 2 U i exp ⁡ ∣ D i − D g t , i ∣ U i ) = 1 ∣ I 0 v a l i d ∣ ∑ x ∈ I 0 v a l i d 1 U i ∣ D i − D g t , i ∣ + log ⁡ U i \begin{aligned} \begin{aligned} L_{i}^{joint}&= \frac{1}{|I_0^{valid}|} \sum _{x\in I_0^{valid}} -\log \left( \frac{1}{2\mathbf {U}_{i}}\exp \frac{| \mathbf {D}_{i} - \mathbf {D}_{gt, i} |}{\mathbf {U}_{i}}\right) \\&=\frac{1}{|I_0^{valid}|} \sum _{x\in I_0^{valid}} \frac{1}{\mathbf {U}_{i}} | \mathbf {D}_{i} - \mathbf {D}_{gt, i} | + \log \mathbf {U}_{i} \end{aligned} \end{aligned} Lijoint=I0valid1xI0validlog(2Ui1expUiDiDgt,i)=I0valid1xI0validUi1DiDgt,i+logUi
公式中省略了常数。 为了数值稳定性,在实践中我们直接推断 S i = l o g U i S_{i}=logU_{i} Si=logUi而不是 U i U_{i} Ui。 对数不确定性图 S i S_{i} Si也由浅层 2D CNN 从熵图 H i H_{i} Hi转换而来。
Loss也可以解释为使用正则化项对估计值和真实值之间的 L1 损失进行的衰减。 直觉是在训练过程中应该减少错误样本的干扰。

3.5 Volume Fusion

省略掉阶段数 k k k,给定成对latent volume { V i } i = 1 N v \{V_{i}\}_{i=1}^{N_{v}} {Vi}i=1Nv,单个V通过加权和从卷中融合而成,其中权重与估计的成对不确定性负相关。
V = ( ∑ i = 1 N v 1 exp ⁡ S i ) − 1 ∑ i = 1 N v ( 1 exp ⁡ S i V i ) \begin{aligned} \mathbf {V} = \left( \sum _{i=1}^{N_v} \frac{1}{\exp \mathbf {S}_i} \right) ^{-1} \sum _{i=1}^{N_v} \left( \frac{1}{\exp \mathbf {S}_i} \mathbf {V}_i\right) \end{aligned} V=(i=1NvexpSi1)1i=1Nv(expSi1Vi)
根据我们的观察,具有较大不确定性的像素更有可能位于遮挡区域。 因此,latent volume中的这些值可能会减弱。

加权和的替代方法是应用 S i S_{i} Si的阈值并对每个像素执行硬可见性选择。 然而,如果没有对 S i S_{i} Si值的解释,我们只能进行经验阈值处理,这可能不具有普遍性。 相反,我们的加权和公式自然地融合了所有观点,并以相对方式考虑对数不确定性 S i S_{i} Si

3.6 Coarse-to-Fine Architecture

介绍了一下层级结构,和CasMVSNet类似。

3.7 Training Loss

对于每个阶段,计算最终深度图的pair-wise L1 loss、pair-wise joint loss和L1 loss,总损失是所有三个阶段损失的加权和。为了将不同训练场景中的尺度归一化,所有的深度差异都除以最后阶段预先定义的深度间隔。
L = ∑ k = 1 3 λ k [ L 1 , k f i n a l + 1 N v ∑ i = 1 N v ( L 1 , k , i p a i r + L k , i j o i n t ) ] \begin{aligned} L = \sum _{k=1}^3\lambda _k\left[ L_{1,k}^{final} + \frac{1}{N_v} \sum _{i=1}^{N_v} (L_{1, k,i}^{pair} + L_{k,i}^{joint})\right] \end{aligned} L=k=13λk[L1,kfinal+Nv1i=1Nv(L1,k,ipair+Lk,ijoint)]
pair-wise L1 loss也被包含了,是因为不确定性损失往往会过度放松pair-wise depth和不确定性估计。 这里的操作可以保证合格的pair-wise depth map estimation。

3.8 Point Cloud Generation

描述了点云是如何生成的。

4 Experiment

实验部分的数据就不展示了,感兴趣的可以自行查看。

4.1 Implementation

4.2 Benchmarking on Tanks and Temples Dataset

4.3 Benchmarking on ETH3D Dataset

4.4 Benchmarking on DTU Dataset

4.5 Ablation Study

4.6 Memory and Time Consumption

5 Conclusion

我们提出了一种用于多视图立体重建的可见性感知深度推理框架。 我们提出了两步成本体积正则化、成对深度和不确定性的联合推理以及根据不确定性图的成对体积的加权平均融合。 所提出的方法已在多个数据集上进行了广泛评估。 定性地,该系统可以产生更准确和更密集的点云,这证明了所提出的可见性感知深度推理框架的有效性。

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

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

相关文章

【电子学会】2023年05月图形化四级 -- 绘制同心圆

绘制同心圆 1. 准备工作 (1)保留小猫角色; (2)背景为默认白色。 2. 功能实现 (1)点击绿旗,小猫询问“请问绘制几个同心圆?”; (2)…

044、TiDB特性_PlacementPolicy

Placement Rules in SQL之前 跨地域部署的集群,无法本地访问无法根据业务隔离资源难以按照业务登记配置资源和副本数 Placement Rules in SQL之后 跨地域部署的集群,支持本地访问根据业务隔离资源按照业务等级配置资源和副本数 配置 labels 设置 Ti…

这个怎么弄?电脑没有d3dx9_43.dll?

在使用某些电脑软件或游戏时,遇到这样的提示:找不到d3dx9_43.dll,无法继续执行代码。这个问题比较常见,很多人不知道该怎么解决。如果你也遇到这个问题,不要着急。本文将详细介绍如何解决找不到d3dx9_43.dll无法继续执…

计算机网络基础第四章

一、网络层概述 1.1 网络层功能概述 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。 功能一:路由选择与分组转发(最佳路径)功能二:异构网络互联功能三&#xf…

23年测试岗面试,高频自动化测试面试题(付答案)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面试题1&#xff…

高等数学专题(1)三角函数公式大全

本帖的公式内容可以并列全网最全(doge),博主多方面搜集并总结了最重要和常用的三角函数公式,具体为以下几个内容: 1.诱导公式 2.平方关系 3.二倍角公式 4.半角公式 5.和差角公式 6.积化和差 7.和差化积 8.辅助角公式 9…

半小时漫画计算机

ISBN: 978-7-121-41557-9 作者:刘欣(码农翻身) 绘画:刘奕君 页数:210页 阅读时间:2023-06-03 推荐指数:★★★★★ 以漫画的形式来讲解计算机的基础知识, 主要涉及到CPU、内存、网络…

CentOs进行AKShare HTTP 部署并供外网IP调用

需求背景 周末闲聊之时,看了akshare的官方文档,之前都是通过python程序去调用数据,作为一个java开发者,我觉得甚是不太方便。认真看了一下文档,是我失敬了。大佬已经推出了aktools工具,这样就可以通过http…

时钟案例.js

案例已经在一个html中写完 要求通过node.js将其分成html css js 三个文件 正则表达式 就是把字符串表示出来 读取文件 读取css 同理还有js 和html 素材代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><me…

MySQL---索引

目录 一、索引的分类 二、索引的底层原理是什么&#xff1f; 2.1、Innodb和MyIsAM两种引擎搜索数据时候的区别&#xff1a; 2.2、为什么MySQL&#xff08;MyIsAM、Innodb&#xff09;索引选择B树而不是B树呢&#xff1f; 2.3、Innodb的主键索引和二级索引&#xff08;辅助…

【图游走+二分图】牛客小白月赛 43 F

F-全体集合_牛客小白月赛43 (nowcoder.com) 题意&#xff1a; 思路&#xff1a; 首先是经典的猜结论环节 这个结论可以想象特殊情况&#xff0c;把图看成一条链&#xff0c;多模拟几个例子 然后会发现一个很显然的结论&#xff1a;在链上的两个人点之间的距离一定是偶数 然…

【【51单片机的蜂鸣器实现小星星】】

用单片机的蜂鸣&#xff0c;实现简单小星星 我们在设置板子的时候要翻转 翻转IO口是因为使用了步进电机的多余的芯片管脚 我们翻转之后还想让它保持一段时间 就是先翻转500次 Delay(1&#xff09;之后 就是最小的单位每隔1ms 周期就是2ms 频率就是500HZ 蜂鸣器播放音乐 我们首…

【040】巧妙地穿梭双端:掌握C++ STL中deque容器的强大功能

巧妙地穿梭双端&#xff1a;掌握C STL中deque容器的强大功能 引言一、deque容器概述二、deque容器实现原理三、deque容器常用API3.1、deque的构造函数3.2、deque的赋值操作3.3、deque的大小操作3.4、deque的双端插入和删除操作3.5、deque的数据存取3.6、deque的插入操作3.7、de…

Spring IOC AOP

IOC容器 概念 IOC&#xff0c;全程Inversion of Control&#xff08;控制反转&#xff09; 通过控制反转&#xff08;创建对象的权限交给框架&#xff0c;所以叫反转&#xff09;创建的对象被称为Spring Bean&#xff0c;这个Bean和用new创建出来的对象是没有任何区别的。 官…

排序算法第三辑——交换排序

目录 ​编辑 一&#xff0c;交换排序算法的简介 二&#xff0c;冒泡排序 冒泡排序代码&#xff1a;排升序 三&#xff0c;快速排序 1.霍尔大佬写的快速排序 2.挖坑法 3.前后指针法 四&#xff0c;以上代码的缺陷与改正方法 三数取中 三路划分&#xff1a; 五&#…

真的绝了,通过注释来埋点好简单!!

目录 回顾 开始 插件编写 功能一 功能二 功能三 合并功能 运行代码 总结 这篇文章主要讲如何根据注释&#xff0c;通过babel插件自动地&#xff0c;给相应函数插入埋点代码&#xff0c;在实现埋点逻辑和业务逻辑分离的基础上&#xff0c;配置更加灵活 回顾 上篇文章…

微服务系列文章之 Springboot应用在k8s集群中配置的使用

Docker部署其实也可以再docker run或者dockerfile里面&#xff0c;将配置文件目录映射到宿主机&#xff0c;然后通过宿主机配置文件修改参数。 FROM docker.io/python:3.6MAINTAINER tianye # 设置容器时间 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&am…

Windows安装Oh-My-Posh美化Powershell

Windows Terminal&#xff1a;https://www.microsoft.com/store/productId/9N0DX20HK701 最新Powershell下载&#xff1a;https://github.com/PowerShell/PowerShell/releases Oh-My-Posh官网&#xff1a;https://ohmyposh.dev/ Nerd字体下载&#xff1a;https://www.nerdfonts…

Git源代码管理方案

背景 现阶段的Git源代码管理上有一些漏洞&#xff0c;导致在每次上线发布的时间长、出问题&#xff0c;对整体产品的进度有一定的影响。 作用 新的Git源代码管理方案有以下作用&#xff1a; 多功能并行开发时&#xff0c;测试人员可以根据需求任务分配测试自己的功能&#…

MyBatis-Plus条件查询问题解决

问题描述 系统中有用户注册的功能&#xff0c;但是会出现重复注册的现象&#xff0c;代码中有做过重复校验&#xff0c;但是没有生效。 问题解决 首先排查数据生成时间点不同&#xff0c;相差时间有长有短&#xff0c;不是用户同时多次点击的原因&#xff0c;应该是用户这边…