【论文精读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.mfbz.cn/a/161488.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

shopee跨境选品工具——知虾,助您精准选品和科学运营

在如今的电商时代&#xff0c;shopee跨境选品是每个卖家都面临的重要任务。而Shopee作为一家知名的跨境电商平台&#xff0c;为卖家提供了一系列有用的工具和功能来帮助他们进行精准选品和科学运营。其中&#xff0c;知虾作为Shopee的大数据采集及分析平台&#xff0c;为卖家提…

二叉树的遍历(非递归版)

文章目录 二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转到网站。 二叉树的前序遍历 用递归实…

栈与队列:用栈实现队列

目录 题目&#xff1a; 栈与队列的数据模型对比&#xff1a; 思路分析&#x1f387;&#xff1a; 代码分析&#xff1a; 一、定义队列 二、初始化队列 三、入队 四、出队⭐ 代码解析&#xff1a; 五、获取队头元素 六、查看队列是否为空 七、销毁队列 完整代码 …

竞赛 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基…

ROSCon 2023 大会回顾

系列文章目录 文章目录 系列文章目录前言一、会议内容二、其他活动 前言 我们与 ROSCon 2023 全体 700 多名与会者的合影。 视频回放链接 一、会议内容 ROSCon 2023 是我们第十二届年度 ROS 开发者大会&#xff0c;于 2023 年 10 月 18 日至 20 日在路易斯安那州新奥尔良举行。…

原型网络Prototypical Network的python代码逐行解释,新手小白也可学会!!由于工作量大,准备整8个系列完事,-----系列5

文章目录 前言一、原始程序---计算原型&#xff0c;开始训练&#xff0c;计算损失二、每一行代码的详细解释2.1 粗略分析2.2 每一行代码详细分析 前言 承接系列4&#xff0c;此部分属于原型类中的计算原型&#xff0c;开始训练&#xff0c;计算损失函数。 一、原始程序—计算原…

Redis持久化机制详解

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

链式队列的基本操作与实现(数据结构与算法)

链队列的表示与实现如下图&#xff1a; 代码如下&#xff1a; #include<iostream> using namespace std;#define MAXQSIZE 100 //最大队列长度 typedef int QElemType; //typedef struct Qnode {QElemType data;struct Qnode* next; }QNode, *QueuePtr; //队列结点类型…

python基础练习题库实验2

题目1 编写一个程序&#xff0c;要求用户输入产品代码、产品名称、产品尺寸和产品价格。 然后使用字符串格式来显示产品信息&#xff0c;就像下面的示例一样。 请注意&#xff0c;价格必须使用两位十进制数字显示。 代码 product_code input("Enter product code: &q…

10-19 HttpServletResponse

相应的对象 web开发模型&#xff1a;基于请求与相应的模型 一问一答的模型 Response对象:响应对象,封装服务器给客户端的相关的信息 顶级接口: ServletResponse 父接口:HttpServletResponse response对象的功能分为以下四种:(都是服务器干的事注意) 设置响应头信息; 发送状态码…

[内存泄漏][PyTorch](create_graph=True)

PyTorch保存计算图导致内存泄漏 1. 内存泄漏定义2. 问题发现背景3. pytorch中关于这个问题的讨论 1. 内存泄漏定义 内存泄漏&#xff08;Memory Leak&#xff09;是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放&#xff0c;造成系统内存的浪费&#xff0c;导致…

Vite Vue3+Element Plus框架布局

App根组件&#xff1a;框架布局 <template><el-container class"layout-container-demo" style"height: 98vh"><!-- 菜单栏 --><el-aside width"200px"><el-scrollbar><!-- router:是否启用 vue-router 模式。…

4、FFmpeg命令行操作8

生成测试文件 找三个不同的视频每个视频截取10秒内容 ffmpeg -i 沙海02.mp4 -ss 00:05:00 -t 10 -codec copy 1.mp4 ffmpeg -i 复仇者联盟3.mp4 -ss 00:05:00 -t 10 -codec copy 2.mp4 ffmpeg -i 红海行动.mp4 -ss 00:05:00 -t 10 -codec copy 3.mp4 如果音视…

IDEA创建文件添加作者及时间信息

前言 当使用IDEA进行软件开发时&#xff0c;经常需要在代码文件中添加作者和时间信息&#xff0c;以便更好地维护和管理代码。 但是如果每次都手动编辑 以及修改那就有点浪费时间了。 实践 其实我们可以将注释日期 作者 配置到 模板中 同时配置上动态获取内容 例如时间 这样…

记录一些涉及到界的题

文章目录 coppersmith的一些相关知识题1 [N1CTF 2023] e2Wrmup题2 [ACTF 2023] midRSA题3 [qsnctf 2023]浅记一下 coppersmith的一些相关知识 上界 X c e i l ( 1 2 ∗ N β 2 d − ϵ ) X ceil(\frac{1}{2} * N^{\frac{\beta^2}{d} - \epsilon}) Xceil(21​∗Ndβ2​−ϵ) …

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

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

ThinkPHP 系列漏洞

目录 2、thinkphp5 sql注入2 3、thinkphp5 sql注入3 4、 thinkphp5 SQL注入4 5、 thinkphp5 sql注入5 6、 thinkphp5 sql注入6 7、thinkphp5 文件包含漏洞 8、ThinkPHP5 RCE 1 9、ThinkPHP5 RCE 2 10、ThinkPHP5 rce3 11、ThinkPHP 5.0.X 反序列化漏洞 12、ThinkPHP…

字符串函数详解

一.字母大小写转换函数. 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…
最新文章