【论文精读3】CasMVSNet

news2024/11/22 22:39:40

模型处理过程:

在这里插入图片描述

一. 问题引入

基于学习的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.coloradmin.cn/o/1223865.html

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

相关文章

文件隐藏 [极客大挑战 2019]Secret File1

打开题目 查看源代码发现有一个可疑的php 访问一下看看 点一下secret 得到如下页面 响应时间太短我们根本看不清什么东西&#xff0c;那我们尝试bp抓包一下看看 提示有个secr3t.php 访问一下 得到 我们看见了flag.php 访问一下可是什么都没有 那我们就进行代码审计 $file$_…

动手学深度学习——循环神经网络的从零开始实现(原理解释+代码详解)

文章目录 循环神经网络的从零开始实现1. 独热编码2. 初始化模型参数3. 循环神经网络模型4. 预测5. 梯度裁剪6. 训练 循环神经网络的从零开始实现 从头开始基于循环神经网络实现字符级语言模型。 # 读取数据集 %matplotlib inline import math import torchfrom torch import …

shopee地区选品:深入了解选品工具——知虾,优化您的销售策略

作为一家社交电商平台&#xff0c;Shopee拥有庞大的用户群体和海量的交易数据&#xff0c;这使得该平台的选品数据对于卖家来说非常宝贵。在这方面&#xff0c;知虾工具是一款强大的分析工具&#xff0c;可以帮助卖家深入了解用户的消费习惯、喜好和需求&#xff0c;从而更准确…

深入解析:开发抖音酒店景区小程序的技术

抖音作为社交媒体平台的佼佼者&#xff0c;其独特的风格和用户基础吸引了无数开发者的目光。在本文中&#xff0c;我们将深入解析开发抖音酒店景区小程序的关键技术&#xff0c;为开发者提供实用指南。 1.抖音风格设计 在开发酒店景区小程序时&#xff0c;首先要注重界面设计…

强化学习各种符号含义解释

&#xff1a;状态 : 动作 : 奖励 : 奖励函数 : 非终结状态 : 全部状态&#xff0c;包括终结状态 : 动作集合 ℛ : 奖励集合 : 转移矩阵 : 离散时间步 &#xff1a; 回合内最终时间步 : 时间t的状态 : 时间t动作 : 时间t的奖励,通常为随机量&#xff0c;且由和决定 : 回报 : n步…

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

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

Java Fasn 带您谈谈——开源、闭源

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 ✨特色专栏&#xff1a…

【C++】类与对象 III 【 深入浅出理解 类与对象 】

文章内容 前言 &#xff1a;新关键字explicit 的引入一、explicit关键字二、static成员&#xff08;一&#xff09;概念&#xff08;二&#xff09;特性 三、匿名对象四、友元前言&#xff1a;友元的引入&#xff08;一&#xff09;友元的概念友元分为&#xff1a;友元函数 和 …

黑马程序员 学成在线项目 第1章 项目介绍环境搭建v3.1

第1章 项目介绍&环境搭建v3.1 1.项目背景 1.1 在线教育市场环境 以下内容摘自艾瑞&#xff1a;2020年在线教育行业洞察&#xff1a;To B赛道篇_网络服务_艾瑞网 在线教育行业是一个有着极强的广度和深度的行业&#xff0c;从校内到校外&#xff1b;从早幼教到职业培训&…

计算机指令的流水线执行与流水线冒险

目录 计算机指令流水线 流水线冒险 结构冒险 数据冒险 控制冒险 计算机指令流水线 流水线方式的洗衣房可以以并行的方式提高性能 计算机执行指令&#xff0c;同样可以以流水线的方式并行 MIPS 流水化的数据通路 流水线冒险 下一周期不能按时执行下一条指令 结构冒险…

Selenium安装WebDriver(含116/117/118/119)

1、确认浏览器的版本 在浏览器的地址栏&#xff0c;输入chrome://version/&#xff0c;回车后即可查看到对应版本 2、找到对应的chromedriver版本 2.1 114及之前的版本可以通过点击下载chromedriver,根据版本号&#xff08;只看大版本&#xff09;下载对应文件 2.2 116版…

3D建模基础教程:编辑样条线【子层级】

了解子层级编辑样条线 在3D建模中&#xff0c;样条线是创建各种形状和曲线的重要工具。而编辑样条线是3D建模过程中不可或缺的一部分。今天&#xff0c;我们将一起学习如何编辑样条线&#xff0c;以及了解其子层级的相关知识。 样条线的子层级介绍 样条线的子层级包括&#xff…

[C国演义] 第二十一章

第二十一章 最长公共子序列不相交的线 最长公共子序列 力扣链接 单个数组的子序列问题 – dp[i] -- 以nums[i] 为结尾的所有子序列中, xxx xxx. 然后状态转移方程根据 最后一个位置的归属问题进行讨论 两个数组的子序列问题 – 以小见大, 分别分析nums1中的一个区间 和 nums…

Linux:firewalled服务常规操作汇总

一、firewalled防火墙工作原理 firewalled的内部结构&#xff0c;可以简单的看做下图&#xff0c;有两个集合&#xff0c;一个集合管理关闭的端口&#xff0c;另一个集合管理放开的端口。 二、常用操作 1、开启和关闭防火墙 临时性配置&#xff1a; systemctl [start | stop …

​分享mfc140u.dll丢失的解决方法,针对原因解决mfc140u.dll丢失的问题

作为电脑小白&#xff0c;如果电脑中出现了mfc140u.dll丢失的问题&#xff0c;肯定会比较的慌乱。但是出现mfc140u.dll丢失的问题&#xff0c;其实也有很简单的办法&#xff0c;所以大家不用慌张&#xff0c;接下来就教大家解决办法&#xff0c;能够有效的解决mfc140u.dll丢失的…

某app c++层3处魔改md5详解

hello everybody,本期是安卓逆向so层魔改md5教学,干货满满,可以细细品味,重点介绍的是so层魔改md5的处理. 常见的魔改md5有: 1:明文加密前处理 2:改初始化魔数 3:改k表中的值 4:改循环左移的次数 本期遇到的是124.且循环左移的次数是动态的,需要前面的加密结果处理生成 目录…

Java项目实战《苍穹外卖》 二、项目搭建

当我痛苦地站在你的面前 你不能说我一无所有 你不能说我两手空空 系列文章目录 苍穹外卖是黑马程序员2023年的Java实战项目&#xff0c;作为业余练手用&#xff0c;需要源码或者课程的可以找我&#xff0c;无偿分享 Java项目实战《苍穹外卖》 一、项目概述Java项目实战《苍穹外…

c# webapi 处理跨源问题

利用cors中间件处理跨源问题。 首先&#xff0c;什么是跨域&#xff08;跨源&#xff09;问题&#xff1a; 是指不同站点之间&#xff0c;使用ajax无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃…

【C语言数据结构】单链表

目录 分析顺序表和链表实现单链表打印链表动态申请一个节点尾插头插尾删头删查找值函数单链表在pos位置之前插入x单链表在pos位置之后插入x删除pos位置单链表删除pos位置之后的值释放内存空间 分析顺序表和链表 如下图可以看出顺序表的优点 1.尾插尾删足够快 2.下标随机访问和修…

鸿蒙开发|开启鸿蒙开发之旅-发工具下载安装、项目创建和预览

文章目录 一、鸿蒙开发使用语言二、下载开发工具三、安装开发工具四、新建项目五、项目启动 一、鸿蒙开发使用语言 鸿蒙OS开发支持多种编程语言&#xff0c;开发者可以根据自身技术背景和项目需求选择合适的语言进行开发。目前鸿蒙OS主要支持以下几种语言&#xff1a; Java&am…