【论文简述】Efficient Multi-view Stereo by Iterative Dynamic Cost Volume(CVPR 2022)

news2025/1/22 19:44:53

一、论文简述 

1. 第一作者:Shaoqian Wang、Bo Li

2. 发表年份:2022

3. 发表期刊:CVPR

4. 关键词:MVS、深度学习、动态代价体、GRU、迭代优化

5. 探索动机:由于正则化步骤需要较多的GPU内存和处理时间,因此现有方法只能处理低分辨率的图像。显然除了提高重建质量外,减少运行时间和GPU内存消耗也是非常重要的,这使得基于学习的MVS能够适应内存和计算有限的设备。

6. 工作目标:提高高分辨率MVS的计算速度并减少内存消耗,同时保证较高的重建质量。

7. 核心思想:

  • 提出了一种新的非常轻量级的动态代价体,可以通过基于二维卷积的GRU迭代处理,并且在几个迭代步骤中即可收敛。因此避免了大尺寸静态代价体的内存和时间的开销问题。迭代和动态处理可以保证较大的搜索空间,这对精度至关重要。
  • 提出了一种级联和分层的改进结构,利用多尺度信息,加快收敛速度。与之前的方法比较,进一步缩小了代价体的大小,并将多阶段策略推广为迭代的方式。特别是通过使用轻量级3D CNN,为GRU提供了可靠的初始的代价体,这是快速收敛和最终性能的关键。
  • 该方法可以用于高分辨率的图像,可以通过在测试阶段调整迭代次数来更好地平衡精度和效率。

8. 实验结果:在DTU和Tanks & Temples基准上的大量实验表明,该方法在准确性、速度和内存方面可以达到最先进的结果。下图为在DTU数据集上该方法与其他方法的比较。运行时间(左)和GPU内存消耗(右)的Overall Error的准确性。图像分辨率为1600×1184。“iter”表示每个阶段的迭代次数。

9. 论文下载:

https://openaccess.thecvf.com/content/CVPR2022/papers/Wang_Efficient_Multi-View_Stereo_by_Iterative_Dynamic_Cost_Volume_CVPR_2022_paper.pdf

https://github.com/bdwsq1996/Effi-MVS

二、实现过程

1. Efficient MVS概述

Efficient MVS由多尺度特征提取器和基于GRU的优化器组成,该优化器包括动态代价体构造器和GRU模块。

  1. 提取多尺度特征,构建初级代价体;
  2. 输入至初始深度值预测模块,利用轻量级的3D CNN估计初始深度图;
  3. 利用深度图估计新的深度范围,构造局部代价体;
  4. 利用几何特征(局部体)、深度特征(深度图)、上下文特征(参考图)构建动态代价体;
  5. 输入迭代GRU模块,采用多尺度级联的GRU结构对多尺度信息进行聚合,更新深度图;
  6. 循环以上结构,进行多阶段多次迭代。

2. 多尺度深度特征提取

参考图像I0和N−1个源图像Ii组成大小为W × H的输入图像,并使用特征金字塔网络(FPN)提取多尺度特征。特征图有3个尺度(阶段k = 0,1,2),用Fk表示图像在k阶段的特征,分辨率分别为原始图像的1/8、1/4、1/2。同时,用另一个的FPN网络处理参考图像,用于提取基于GRU的优化器的多尺度上下文特征和初始隐藏状态。

3. 动态代价体

代价体在MVS问题中起着关键作用。如下图所示,不同于以往工作的静态代价体,我们将几何特征、深度特征和上下文特征聚合起来构建动态代价体。分别从局部代价体、深度特征和参考图像中提取几何特征、深度特征和上下文特征。得益于迭代策略,该方法可以在一个较窄的逆深度范围内更新深度假设,从而在每次迭代中构建局部代价体,这使得动态代价体比静态代价体小很多。

3.1. 局部代价体

与MVSNet一样,给定参考视图的深度假设dj={1,…,D}中,利用可微单应性变化,通过方差构建局部代价体,表示参考特征和源特征之间的相关性。

考虑到基于GRU的优化器可以迭代更新深度图,每次迭代中只在一个狭窄的逆深度范围内采样一些深度假设。具体来说,对于阶段k和迭代t的每个像素p,统一在逆深度范围Rk中采样Dk深度假设:

其中Im表示最小深度假设平面间隔。Dk t−1为迭代t−1中更新的深度图。为了用二维CNN处理局部代价体,并将其与上下文和深度信息融合,我们取消了深度维度,并沿着通道维度连接代价图。因此,与MVSNet不同,该局部代价体的形状是CL∈W×H×(C×D),其中C和D分别表示通道维度和深度维度。

3.2. 特征聚合

在每次迭代t中,使用两个轻量级提取器从局部代价体和深度图Dk t−1中提取几何特征和深度特征,该提取器由两个二维卷积层组成。上下文特征来源于多尺度上下文特征提取器,每个阶段只需要提取一次。为了构建最终的动态代价体C,首先利用二维卷积层处理几何特征和深度特征的连接。然后,将输出与上下文特征连接起来,形成动态代价体。所有的连接操作都在通道维度中执行。

4. 多阶段GRU

为了利用多尺度信息,加快收敛速度,结合金字塔特征图,构造了多尺度的GRU结构处理动态代价体。在每次迭代t中,优化模块输出深度图残差Δdt,并更新输入深度图Dt = Dt−1 + Δdt更新,被上采样至Dt+1作为下一次迭代t+1的输入。如下图所示,每次迭代后深度图的质量都有明显的提高。特别是从图4中可以看出,基于GRU的优化模块可以填充无纹理区域的孔洞,锐化边界。

4.1. 初始深度预测

基于GRU的优化模块根据局部空间信息更新深度值。由于MVS中的弱纹理区域和相似区域的共性问题,一个不可靠的初始深度图将使基于GRU的优化更容易输出错误的深度值。因此,文中提出了初始深度值预测模块,在最粗阶段预测可靠的初始深度值。

和其他基于学习的MVS方法一样,通过代价体构建、3D CNN正则化和回归三个模块预测概率体Pd和相应的深度图,如上图。

  1. 建立了一个很小的代价体,它由稀疏深度假设组成,但包含足够大的逆深度范围。
  2. 利用一个轻量级的3D CNN对代价体进行正则化,得到每个深度假设d对应的概率体Pd。
  3. 用softargmin回归初始深度图Dinit:

4.2. GRU

使用GRU模块来更新深度图,该模块细节如下:

其中σ为sigmoid激活函数,W为对应卷积网络的参数,conv为一个小的2D卷积模块,由一个1×5卷积和一个5×1卷积组成。GRU的输入是动态代价体Ct−1以及潜在隐藏状态ht−1。动态代价体Ct−1可以通过之前的深度图Dt−1进行更新。此外,在每个阶段,初始隐藏状态h0由上下文特征网络初始化。基于隐藏状态ht,利用深度头模块来预测残差深度Δdt。深度头模块包含两个卷积层,并使用tanh激活函数来约束输出值的范围。

在每个阶段k的最后一次迭代Tk之后,使用掩码上采样模块(GRU中提到的)对当前深度图进行上采样。

5. 损失函数

在训练阶段,计算初始深度预测模块和不同的迭代阶段基于GRU的多阶段优化模块中输出的深度图和相应分辨率的真实深度图的L1损失。最终损失是所有损失的加权和:

​其中Linit是初始深度预测模块获得的初始深度图的损失。Tk为第k阶段的优化迭代次数。Lk i为Tk输出深度图和k阶段上采样深度图的损失,λk i为相应的权值。

6. 实验

6.1. 数据集

DTU Dataset、Tanks and Temples Dataset

6.2. 实现

训练:使用DTU数据集训练。输入视图数N = 5,图像大小裁剪到640 × 512,输入图像的总数设置为N = 3,对于初始深度预测模块,深度值的样本总数设置为D = 48。对于局部代价体,我们将所有阶段的深度假设数量Dk设为4。定义了逆深度的最小假设平面区间Im:

设Z为384,深度假设间隔在阶段0,1,2设为至4Im, 2Im, Im(阶段0为分辨率为W ×H = 80×64的粗阶段)。对于每个阶段的优化模块,我们设置阶段0,1,2到的迭代次数T k为3,3,3。使用AdamW在OneCycleLR调度器下训练模型48个epoch,学习率为0.001。批大小设置为4,并在1个NVIDIA GeForce RTX 3090 GPU上训练模型。

评估:对于DTU,设置输入图像数量N为5,输入图像大小为1600 × 1184。评估Tanks & Temples
数据集,使用DTU训练的模型,并且没有任何微调。视图数N设为7、输入图像大小为1920 × 1056,初始深度预测模块中深度假设个数为96。Tanks & Temples数据集的相机位置、稀疏点云和深度范围由开源SfM软件OpenMVG得到。

滤波与融合:与MVSNet一致,使用光度一致性、几何一致性对输出深度图进行滤波。本文对滤波算法做了一些改进,具体细节详见补充资料。同时,对从初始深度预测模块获得的概率体Pd进行上采样,作为每个像素的置信度度量,丢弃估计的深度概率小于0.3的像素。

6.3. 结果

DTU数据集基准比较:SOTA

内存和时间比较:SOTA

Tanks & Temples泛化性:SOTA ,advanced表现更好

6.4. 消融实验

迭代次数:It is not surprising, because our dynamic cost volume could aggregate distinctive context information, which could be further utilized by the GRU to fill in the holes. The similar conclusion could also be proven,which the holes are filled with the number of iteration increased.

初始深度预测:because our dynamic cost volume could aggregate distinctive context information, which could be further utilized by the GRU to fill in the holes. The similar conclusion could also be proven in the Fig. 4, in which the holes are filled with the number of iteration increased.

动态代价体:depth feature(DF) and context feature(CF) is important.

阶段次数:The performance has improved significantlywith the increase of the number of stages. At the same time, the running time and GPU memory consumption have also increased significantly.

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

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

相关文章

大话JMeter4|不同的并发数可以自动化做压测吗?

1080709 23.5 KB 上节课爱画漫画的小哥哥用漫画形式向大家展示了JMeter的进阶用法:如何搭建InfluxDB,使用更炫酷的Grafana。 看到很多小伙伴觉得看的不过瘾,在强烈的催促下,小哥哥的新文章又出来了。这次小哥哥又给我们带来怎样的…

vue + nodejs + npm

node.js下载 1、如图所示: 2、建立node_cache、node_global文件夹: 然后运行以下2条命令 npm config set prefix “D:\node-v14.15.0-win-x64\node_global” npm config set cache “D:\node-v14.15.0-win-x64\node_cache” 执行npm list -global查看&…

编译原理——求短语、直接短语(简单短语)、素短语、句柄

先介绍一下短语、直接短语(简单短语)、素短语、句柄怎么求:这个图是核心 然后通过一些例题,实战一下; 根据上面介绍的概念、求法,应用一下即可; 例题1 短语:注意对于每一个子树&a…

数字孪生技术助力高炉数字化建设的可行性

随着数字孪生等新一代信息技术的快速发展,数字化转型已成为企业重塑竞争优势的关键举措。依托数字孪生技术,对炼铁高炉进行物联网、数字化信息系统建设,实现了高炉运行状态的数字化监测与预警,数字孪生系统凭借在数字化、模型化、…

利用WordPress搭建属于自己的网站

怎么用WordPress给自己搭建了一个网站?可能很多人都想拥有属于自己的网站,这篇文章就找你怎么利用WordPress搭建属于自己的网站。如果你也正好有搭建个人网站的想法,那么本文会给你一个参考,我尽量写的比较详细,给自己…

【Ctfer训练计划】——(五)

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

Java on VS Code 11月更新|VS Code Java 开发者超200万!

作者:Nick Zhu - Senior Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,我们很高兴与大家分享一个好消息,现在 Visual Studio Code 上已有超过 200 万 Java 开发者,这离不开长期以来社区以…

JavaSE笔记——异常、断言

文章目录前言一、处 理 错 误1.异常分类2.声明受查异常3.如何抛出异常4.创建异常类二、捕获异常1.捕获异常2.捕获多个异常3.再次抛出异常与异常链4.finally 子句5.带资源的 try 语句三、使用断言1.断言的概念2.启用和禁用断言3.使用断言完成参数检查总结前言 在现实世界中却充…

由浅入深学安全-1

由浅入深学安全 常用术语解析 肉鸡 肉鸡也称傀儡机,是指可以被黑客远程控制的机器。 比如用灰鸽子等诱导客户点击或者电脑被黑客攻破或用户电脑有漏洞被种植了木马,黑客可以随意操纵它并利用它做任何事情。 一句话木马 一句话木马主要用来配合菜刀…

【Java系列】还在为Java运算符而烦恼吗?一篇文章带你解答心中烦恼

返回主篇章         👇 【Java】才疏学浅小石Java问道之路 Java基本运算符1. 算数运算符分类运算法则2. 关系运算符分类注意项3. 逻辑运算符分类运算法则4. 短路逻辑运算符分类运算法则5. 赋值运算符拓展6. 三元运算符格式运算法则7. 自增自减运算符分类使用…

12-Golang中的嵌套分支以及switch语句的用法

Golang中的嵌套分支以及switch语句的用法嵌套分支基本介绍基本语法switch基本介绍基本语法流程图使用细节嵌套分支 基本介绍 在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支 基本语法 if 条件表达…

声明式服务调用OpenFeign

文章目录一. OpenFeign1. Feign 与 OpenFeign二. OpenFeign的使用三. OpenFeign自定义配置1. 修改日志级别2. 超时控制四. OpenFeign性能优化五. OpenFeign最佳实践1. 继承2. 抽取PS: 本文为作者学习笔记,实际技术参加意义不大,本文将持续改进完善。 一…

Doris(二)

目录1、Doris数据的导入和导出1.1 数据导入1.1.1 Broker Load1.1.1.1 适用场景1.1.1.2 基本原理1.1.1.3 基本语法1.1.1.4 导入示例1.1.1.5 查看导入1.1.1.6 取消导入1.1.2 Stream Load1.1.2.1 适用场景1.1.2.2 基本原理1.1.2.3 基本语法1.1.2.4 导入示例1.1.2.5 取消导入1.1.3 …

蓝牙耳机什么牌子好?性价比最高的蓝牙耳机排行榜

近年来,蓝牙耳机品牌与日俱增,可供人们选择的范围也越来越大。当然,主打性价比的蓝牙耳机品牌也有很多,下面,我来给大家分享几款性价比最高的蓝牙耳机,一起来看看吧。 一、南卡小音舱蓝牙耳机 售价&#…

寒潮来袭,这款产品在跨境电商市场卖脱销

年底的寒潮来袭,全球市场热销产品分析跨境电商在年底冬季属于销售旺季,大多数的跨境电商卖家们都开始尽情努力,争取今年获得大批收入,在这个年底既是旺季也是困难季。2022年底旺季时分,有不少产品在跨境电商市场卖脱销…

jQuery index()

jQuery index() 概述 在jQuery中,我们可以使用index()方法来获取当前jQuery对象集合中“指定元素”的索引值。 语法 $(元素).index()说明 index()方法可以接受一个“jQuery对象”或“DOM对象”作为参数,不过一般情况下,我们很少会使用到…

Idea常用快捷键(MacOS和Win平台)持续更新ing~

小名在刚换MacOS系统时总结的一些Idea快捷键,这里小名把Win的对比快捷键和功能都列出来,方便像小名这样“肌肉记忆”的小伙伴顺利过渡~ 当然,这些都是小名平日工作常用的快捷键,不熟悉这些快捷键的Win平台小伙伴也可以…

springboot的核心注解详解

springboot的注解详解 Spring Boot 主要优势之一,就是“开箱即用,远离繁琐的配置”。 Spring Boot 架构没有代码生成,也不需要XML配置,有效避免大量的 Maven 导入和各种版本冲突,为 Spring 开发提供一个更快、更广泛…

数字ic后端|分享后端项目中一次分析解决问题的过程

后端ICer经常会在项目中遇到问题,如何解决问题,则体现出经验。今天遇到的一个问题,这里做个记录。同时也希望通过读这篇文章,你也能增加一个解决问题的经验。 相对来说,前端更多的是理论,后端更多的是需要…

Java基础:Lambda表达式方法引用

在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑?…