【论文精读3】CasMVSNet

模型处理过程:

在这里插入图片描述

一. 问题引入

基于学习的MVS算法因为受到显存的限制,输出的深度图的空间分辨率只有输入图像的1/16大小(长宽均为输入图像的1/4大小)。以MVSNet为例,对于1600×1184大小的输入图像,需要构建h×w×D×F=400×296×256×8大小的代价体,16GB的显卡才可以胜任。之前的方法限制了高分辨率MVS算法的发展。

那么问题来了,为什么要得到高分辨率的深度图呢?我们知道,MVS算法的评测是对最后生成的点云进行评测。同等情况下,深度图分辨率越高,得到的空间3D点数目越多,那么点云的完整性会更高,重建质量则更佳。

在这里插入图片描述

显示了分辨率为W×H×D×F的标准成本体积,其中W×H表示空间分辨率,D是平面假设的数量,F是特征图的通道数量 ,I为深度间隔

关于代价体:代价体(Cost Volume)是三维的,存储时为4D的tensor。我们可以理解为:代价体每一个位置存储的是一个F维的向量而不是标量。如图2所示,空间分辨率H×W越高,平面假设数D越多,深度间隔I越小,那么得到的深度图质量越高;同时显存占用越大、耗时越长。那么,有没有一种可以权衡精度和效率的方法呢?

为了解决上述问题,我们提出了一个级联成本-体积公式,并以粗略到精细的方式预测代价体。

二. 模型结构

整体思路:CasMVSNet使用级联的代价体来实现coarse-to-fine【 由粗到细 】的深度估计。

具体地,首先通过一个较小的代价体估计低分辨率的深度图,然后可以根据上一级输出的深度图,缩减当前尺度的深度假设范围。

CasMVSNet使用3级的代价体来实现深度图估计,包括两级的中间结果和一个最终的深度输出。

在这里插入图片描述

1. 特征提取模块

CasMVSNet需要在每个尺度上都进行特征提取和代价体构建,所以需要输入图像的多尺度特征。文章使用了三个尺度的FPN(Feature Pyramid Network)网络。 采用具有更高空间分辨率的特征图来构建更高分辨率的成本量 ,三个尺度的特征图空间分辨率分别为输入图像的{1/16, 1/4, 1}大小。和之前的方法一样,不同输入图像之间共享权重。

在这里插入图片描述

2. 深度范围的确定

在这里插入图片描述

R1表示的第一阶段的深度(或视差)范围覆盖了输入场景的整个深度(或差异)范围。

I为深度间隔

最低分辨率:将整个场景的深度范围离散D1个平面【本文中D1=48】,如上图1所示,其中粉色直线为深度假设平面,黄色曲线为估计的深度图。

Rk+1=Rk·wk,其中Rk是第k阶段的假设范围,wk<1是假设范围的缩小因子。

Ik+1=Ik·pk,其中Ik是第k阶段的假设平面区间,pk<1是假设平面区间的缩减因子。

给定假设范围Rk和假设平面间隔Ik ,相应的假设平面数目Dk=Rk/Ik

前面问题引入部分说明了,Dk越多,会导致GPU内存和运行时间的增加 ,基于级联公式,我们可以有效地减少假设平面的总数,因为假设范围(Rk)逐阶段显著减少,同时仍然覆盖整个输出范围。

后面的尺寸:如图2所示,级联成本体积可以基于前一阶段的预测输出,缩小假设范围【Rk】。

以上一阶段估计的深度图为中心,取一定固定深度范围Rk, 确定每一像素位置处的dmin和dmax, 其中dk-1为上一阶段上采样后的深度图,Rk为当前尺度的深度假设范围,然后根据场景范围离散处Dk个深度平面【本文中D2=32,D3=8】,不同像素点的深度范围可以不一样

上一阶段的输出【推测深度图】会被送到下一阶段中和下一阶段的尺度特征图空间一起作为下一阶段的单应性变换的输入

在这里插入图片描述

3. 单应性变换

在这里插入图片描述

其中dm k表示在第k阶段的第m个像素的预测深度,∆m k+1是在第k+1阶段要学习的第m像素的残差深度。 对于原始MVSNet所使用的单应性矩阵,只是修改了d的底数

4. 损失计算

在这里插入图片描述

损失函数为3个尺寸深度图的L1损失的加权和,不同尺寸不同的权重,空间分辨率越高的尺幅权重越大,具体的,【λ1, λ2, λ3】分别被设置成了【0.5, 1.0, 1.5】

特征匹配和代价聚合和深度图回归

同MVSNet

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习Python实战】线性回归

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习python实战 欢迎订阅&#xff01;后面的内容会越来越有意思~ ⭐内容说明&#xff1a;本专栏主要针对机器学习专栏的基础内容进行python的实现&#xff0c;部分…

Web之CSS笔记

Web之HTML、CSS、JS 二、CSS&#xff08;Cascading Style Sheets层叠样式表&#xff09;CSS与HTML的结合方式CSS选择器CSS基本属性CSS伪类DIVCSS轮廓CSS边框盒子模型CSS定位 Web之HTML笔记 二、CSS&#xff08;Cascading Style Sheets层叠样式表&#xff09; Css是种格式化网…

浏览器页面被恶意控制时的解决方法

解决360流氓软件控制浏览器页面 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、接受360安全卫士的好意&#xff08;尽量不要选&#xff09;二、拒绝360安全卫士的好意&#xff08;强烈推荐&#xff09;第…

Leetcode—876.链表的中间结点【简单】

2023每日刷题&#xff08;三十三&#xff09; Leetcode—876.链表的中间结点 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* middleNode(struct ListNode* head) {struct ListNod…

Redis持久化机制详解

使用缓存的时候&#xff0c;我们经常需要对内存中的数据进行持久化也就是将内存中的数据写入到硬盘中。大部分原因是为了之后重用数据&#xff08;比如重启机器、机器故障之后恢复数据&#xff09;&#xff0c;或者是为了做数据同步&#xff08;比如 Redis 集群的主从节点通过 …

传输层——TCP协议

文章目录 一.TCP协议二.TCP协议格式1.序号与确认序号2.窗口大小3.六个标志位 三.确认应答机制&#xff08;ACK&#xff09;四.超时重传机制五.连接管理机制1.三次握手2.四次挥手 六.流量控制七.滑动窗口八.拥塞控制九.延迟应答十.捎带应答十一.面向字节流十二.粘包问题十三.TCP…

字符串函数详解

一.字母大小写转换函数. 1.1.tolower 结合cppreference.com 有以下结论&#xff1a; 1.头文件为#include <ctype.h> 2.使用规则为 #include <stdio.h> #include <ctype.h> int main() {char ch A;printf("%c\n",tolower(ch));//大写转换为小…

vscode编写verilog的插件【对齐、自动生成testbench文件】

vscode编写verilog的插件&#xff1a; 插件名称&#xff1a;verilog_testbench,用于自动生成激励文件 安装教程&#xff1a;基于VS Code的Testbench文件自动生成方法——基于VS Code的Verilog编写环境搭建SP_哔哩哔哩_bilibili 优化的方法&#xff1a;https://blog.csdn.net…

Jenkins持续集成

1. 持续集成及Jenkins介绍 1.1. 软件开发生命周期 软件开发生命周期又叫做SDLC&#xff08;Software Development Life Cycle&#xff09;&#xff0c;它是集合了计划、开发、测试和部署过程的集合。如下图所示 &#xff1a; 需求分析 这是生命周期的第一阶段&#xff0c;根据…

【C++】模板初阶 【 深入浅出理解 模板 】

模板初阶 前言&#xff1a;泛型编程一、函数模板&#xff08;一&#xff09;函数模板概念&#xff08;二&#xff09;函数模板格式&#xff08;三&#xff09;函数模板的原理&#xff08;四&#xff09;函数模板的实例化&#xff08;五&#xff09;模板参数的匹配原则 三、类模…

毅速丨嫁接打印在模具制造中应用广泛

在模具行业中&#xff0c;3D打印随形水路已经被广泛认可&#xff0c;它可以提高冷却效率&#xff0c;从而提高产品良率。然而&#xff0c;全打印模具制造的成本相对较高&#xff0c;因为需要使用金属3D打印机和专用材料。为了节省打印成本&#xff0c;同时利用3D打印的优势&…