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

2023-11-04

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • java编码技巧

    判断某个集合是否包含某值 ArrayUtils contains Object array Object objectToFind 缓存 service层先判断缓存是否有此数据 有则返回该数据 没有则从数据库获取 并存入缓存 往插入数据以后
  • QEMU安装及测试

    QEMU README QEMU is a generic and open source machine userspace emulator and virtualizer QEMU官网链接 https www qemu org Git
  • EasyPoi导出Excel

    这几天一直在忙工作中的事情 在工作中有一个问题 可能是因为刚开始接触这个EasyPoi 对其也没有太多的理解 在项目中就使用了 有一个需求 是要导出项目中所有的表格 今天就对这个需求进行分析和实现吧 需求 导出项目中所有的表格 导出文件为E
  • osgFBO(九)多pass---2,pass2,shader将背景从红色变为绿色

    二 pass2是比较完整的 同时有输入纹理和输出纹理 与pass1类似 这里只列出不同的地方 1 pass2摄像机输入tex1 osg ref ptr
  • 火焰检测 数据集

    开源项目1 https github com gengyanlei fire smoke detect yolov4 tree master yolov5 有数据集 Pytorch YOLOV4 火焰目标检测 石头儿啊的博客 CSDN博客
  • SpringBoot接口实现视频在线播放

    获取所有的mp4在线播放地址 并当前端调用该接口时返回mp4视频文件名及其播放地址 mp4视频存放在D盘的video文件夹下 ApiOperation 获取所有MP4播放地址 GetMapping get video address pub
  • 1. Qt小游戏 --- 推箱子

    1 说明 这个小游戏主要使用Qt中的绘制事件函数 paintEvent 在画布上面不停的绘制图形 并使用定时器做时间上的触发处理 这个小游戏只是做了简单的逻辑处理 具体复杂的功能读者可自行发挥 效果展示如下 Qt制作推箱子小游戏 2 相关代
  • 正负压产生电路(9V,12V)

    正负压输出电路 开关电源知识储备 xl6007 电荷泵 原理图和PCB 开关电源知识储备 在dc dc拓扑中有着buck 降压 boost 升压 buck boost 升降压 其原理简单总结是 利用储能元件 如电容电感 对电流的释放进行控制
  • vue3.0--使用element-plus的$message

    前题已经按如上步骤安装了按需加载的element plus 项目中使用this message 使用成功了 import ElMessage from element plus components ElMessage ElMessage
  • Error setting null for parameter #2 with JdbcType OTHER

    mybatis执行时报错内容如下 Error setting null for parameter 2 with JdbcType OTHER Try setting a different JdbcType for this parame
  • atcoder ABC 128

    目录 B guidebook c switches D equeue B guidebook B Guidebook atcoder jp 多关键字排序 按主要关键字 次要关键字排序 用结构体存储主次要关键字 用sort排序 sort可以对
  • squid 高匿配置 用户名密码配置

    1 安装squidyum install squid2 修改配置文件 在 http access deny all 上面加上如下权限配置 注意 一定要在这句上面 用户名密码配置 auth param basic program usr li
  • openGL之API学习(五)光照

    基本的光照模型主要包括 环境光 漫反射 镜面反射 环境光是在晴天室外到处看到的光的类型 环境光也就被建模为一个没有光源 没有方向并且对场景中的所有物体产生相同的点亮效果的一种光 环境光在很多情况下会被尽量的避免去考虑 因为它看上去有点太人工
  • PlacingObjectsontheGlobe_译

    PlacingObjectsontheGlobe 译 已经创建了一个关卡并且输入一些像CesiumWorldTerrain或者一个城市的摄影测量模型真实世界资产 接下来你可能想要从标准UnrealEngine工具箱添加一些对象 格网 植物
  • 对Spring loC DI的理解

    文章转自https www cnblogs com Mr Rocker p 7721824 html 仅供个人学习所用 好东西当然要多多学习啊 学习过Spring框架的人一定都会听过Spring的IoC 控制反转 DI 依赖注入 这两个概念
  • 如何编写一个可变参数函数?如何让所有单片机的所有串口实现printf函数?

    前言 1 由于真的复习不下去 就想着写一篇博客拉回自己的心思 于是想到了长期有疑惑 但是一直没有进行深入了解的C语言可变参数函数 2 本人查阅了一些网上的资料 以及自己的理解写出来了这一片博客 首先再次感谢肯哥的答疑 3 借鉴文章 C51单
  • [Android] 通过Menu实现图片怀旧、浮雕、模糊、光照和素描效果

    由于随手拍项目想做成类似于美图秀秀那种底部有一排Menu实现不同效果的功能 这里先简单介绍如何通过Menu实现打开相册中的图片 怀旧效果 浮雕效果 光照效果和素描效果 后面可能会讲述如何通过PopupWindow实现自定义的Menu效果 希
  • 关于startup启动找不到相应文件问题-ORA-01078: failure in processing system parameters

    Oracle启动的三种方式 startup nomount 非安装启动 读取init org 主要用于检查实例 startup mount 安装启动 startup open 打开 依次顺序为 open gt mount gt nomoun
  • Jaspersoft 报表:PDF中文不显示问题

    问题概述 PDF中文不显示问题主要是Jasperreports提供的font包不提供中文格式支持 所以我们需要自定义一个font包 用于支持 第一步 在Jaspersoft Studio中添加中文字体 1 下载微软雅黑字体文件 ttf 字体
  • 【论文精读】Vis-MVSNet: Visibility-aware Multi-view Stereo Network

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