【论文精读8】MVSNet系列论文详解-UCS-Net

news2024/9/21 16:26:16

UCS-Net,论文名为:Deep Stereo using Adaptive Thin Volume Representation with Uncertainty Awareness,CVPR2020(CCF A)


本文是MVSNet系列的第8篇,建议看过【论文精读1】MVSNet系列论文详解-MVSNet之后再看便于理解。

一、问题引入

为了得到细粒度的重建深度,之前的方法在构建代价体时往往使用固定的深度假设,这就导致需要稠密的深度采样,在消耗大量内存和计算资源同时,很难实现高精度的深度估计

二、解决思路

在这里插入图片描述

三、论文模型

在这里插入图片描述
模型同样是由粗到细的优化深度图,仍然包含特征提取,代价体构建,代价体正则化和深度回归四个组件,不同之处在于使用多尺度特征提取,以及在构建代价体时,深度采样利用上一层概率体输出各像素的置信度方差来选择深度假设样本,并进行迭代优化,论文将整个流程分为3个stage来进行。
为了理解方便,以下按照Stage 1、Stage 2(Stage3与2一致)即训练的流程来介绍该模型。

Stage 1:

1.多尺度特征提取(Multi-scale feature extractor)

使用2D Unet来在三个不同的网络层输出特征图,尺寸分别[W/4, H/4, 8], [W/2, H/2, 16], [W, H, 32],Stage 1 使用最小尺寸的特征图构建代价体。

2.构建代价体

遵循MVSNet构建代价体的流程,只不过对于均匀采样的深度数由256变为64.

3.代价体正则化&深度回归

正常使用3D UNet来正则化代价体得到概率体,同时使用soft argmin来回归深度预测图

4.不确定性估计(uncertainty estimation)

之前的方法(包括Stage1)的深度回归中,都是仅仅使用概率体的各个深度概率图上对各点的概率和对应深度求期望,而本文以像素为单位沿深度方向上求方差(以概率为权重)来作为不确定性的估计,公式表述更容易理解:
V ^ ( x ) = ∑ j = 1 D P j ( x ) ⋅ ( d j ( x ) − d ˉ ( x ) ) 2 \hat{V}(x)=\sum_{j=1}^{D}P_{j}(x)\cdot(d_{j}(x)-\bar{d}(x))^2 V^(x)=j=1DPj(x)(dj(x)dˉ(x))2

V(x)代表像素x的深度方差,Pj(x)代表x在第j个深度平面上的概率,dj(x)代表第j个深度平面的深度假设值,d(x)~代表x在概率体深度方向求期望的深度值。

σ ^ ( x ) = V ^ ( x ) \hat{σ}(x)=\sqrt{\hat{V}(x)} σ^(x)=V^(x)
C ( x ) = [ d ˉ ( x ) − λ σ ^ ( x ) , d ˉ ( x ) + λ σ ^ ( x ) ] C(x)=[\bar{d}(x)-λ\hat{σ}(x),\bar{d}(x)+λ\hat{σ}(x)] C(x)=[dˉ(x)λσ^(x),dˉ(x)+λσ^(x)]

将方差开根号作为标准差σ,以深度预测值±λσ 为深度置信区间,下一个Stage的深度采样将利用这个深度置信区间来进行

Stage 2:

1.多尺度特征提取(Multi-scale feature extractor)

使用2D Unet来在三个不同的网络层输出特征图,尺寸分别[W/4, H/4, 8], [W/2, H/2, 16], [W, H, 32],Stage 2使用[W/2, H/2, 16]的特征图构建代价体。

2.构建自适应细代价体(ATV,adaptive thin volume)

根据当前Stage需要的深度采样数n(3个Stage分别为64,32,8),从上一个Stage计算出的深度置信区间 C(x) = [ d ˉ ( x ) − λ σ ^ ( x ) , d ˉ ( x ) + λ σ ^ ( x ) ] [\bar{d}(x)-λ\hat{σ}(x),\bar{d}(x)+λ\hat{σ}(x)] [dˉ(x)λσ^(x),dˉ(x)+λσ^(x)] 均匀采样,选取n个深度假设平面,这个深度区间C(x)就决定了新的代价体的"物理深度"。

在这里插入图片描述

如上图所示,展示了原始RGB图像、真实深度图、预测深度图,以及下边的三个阶段对于红点的深度概率体各深度的概率展示,其中紫色区域代表了不同Stage下红点的深度置信区间,可以观察到该区间(也即代价体的物理长度)越来越小,深度预测也越来约逼近真实值

3.代价体正则化&深度回归

4.不确定性估计(uncertainty estimation)

与Stage 1一致

四、实验效果

在这里插入图片描述

在DTU数据集上达到除传统Gipuma之外的精度最高完整度和overall最高

在这里插入图片描述

在Tanks上也取得了极为明显的效果提升

在这里插入图片描述

在DTU上对各Stage进行消融实验

  • Scale x2代表对当前尺寸的深度图在宽和高方向进行双线性插值后的误差
  • 各Scale x2后的精度,与下一个Stage的结果相比(用ATV)都不如,说明了ATV的有效性

在这里插入图片描述

无论是时间消耗还是内存消耗,相比MVSNet和RMVSNet都极大的减少,且推断的深度图尺寸与原图一致

五、总结

这篇论文的效果真的让人好的没话说…最重要的是思路和操作方式都很清晰和简单,以至于连时间和内存消耗都大幅减少——这一切就是简单的做了一个深度方差、以在迭代的从基于方差的、以原始深度期望为中心的置信区间里不断优化。强到令人怀疑。。虽然github上开源了代码,但是issues里有人说训练损失降不下来,或者精度不够,打算之后自己训练一下试试效果🧐🧐

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

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

相关文章

机器学习之过拟合和欠拟合

文章目录前言什麽是过拟合和欠拟合?过拟合和欠拟合产生的原因:欠拟合(underfitting):过拟合(overfitting):解决欠拟合(高偏差)的方法1、模型复杂化2、增加更多的特征,使输入数据具有更强的表达能力3、调整参数和超参数4、增加训练…

Java项目:SSM游戏点评网站

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录…

jenkins-pipeline语法总结(最全)

1、jenkins总结之pipeline语法 jenkins总结之pipeline语法1、jenkins总结之pipeline语法1.1必要的Groovy知识1.2pipeline的组成1.2.1pipeline最简结构1.3post部分1.4pipeline支持的指令• environment:• tools:• input:• options&#xff…

大学网课查题接口

大学网课查题接口 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击跳…

项目管理逻辑:老板为什么赔钱的项目也做?为什么害怕你闲着?

目录 1.波士顿矩阵 2.为什么企业还要做没有市场占有率,也没有销售增长率的产品? 2.1项目层级划分 2.2项目集 2.3组合管理 2.4赔钱也做的项目案例 1.波士顿矩阵 项目经理没有资源, 公司不给足够的支持 在任何一个企业老板的脑子里,都会有这样一个矩阵, 纵向表示销售增长…

数据结构与算法,MySQL数据库面试专题及答案

文章目录数据结构面试题及答案数组问题字符串相关问题链表问题二叉树问题编程面试问题之杂项答案数据结构与算法时间复杂度 并不是计算程序具体运行的时间,而是算法执行语句的次数 O(2^n) 表示对 n 数据处理需要进行 2^n 次计算 多项式的时间复杂度 数据 n 在表达式…

Docker安装部署Redis集群

目录 概述 一、创建文件和目录 1.1 创建需要挂载的文件和目录 1.2 同步操作 二、随机从节点模式 2.1 创建master节点的redis容器 2.2 在同一台机器上创建另外2个节点 2.3 其他2台机器同步操作 2.4 配置主从集群 2.4.1 进入任意一个 Redis 实例 2.4.2 配置集群 2.4…

《未来简史:从智人到智神》笔记一——人类的新议题

目录 一、人类的旧议题演变 二、人类的新议题 1、长生不死 2、追求幸福快乐 3、努力把自己升级为神 三、研究历史的意义——不是为了重复过去,而是为了摆脱过去并从中获得解放 四、生命的意义 1、主观体验有两个基本特征 2、生命的意义? 一、人类…

C语言第十三课:初阶指针

目录 前言: 一、指针是什么: 1.那么指针到底是什么呢? 2.内存中的数据存储原理: 3.数据存储与指针使用实例: 4.存储编址原理: 二、指针和指针类型: 1.决定了指针的步长: 2.决定了…

【VSCode + Anaconda】VSCode [WinError 126]找不到指定模块

【VSCode Anaconda】VSCode [WinError 126]找不到指定模块问题解决一解决二问题 在 Anaconda Prompt 中的 python 环境测试,可以使用 import torch 命令 现在在 VSCode 中测试,发现相关异常 图中,已经选择了相应的 conda 环境的 python.exe…

分片集群中的分片集合

分片集群中的分片集合 MongoDB 中 分片集群有专门推荐的模式,例如 分片集合 它是一种基于分片键的逻辑对文档进行分组,分片键的选择对分片是非常重要的,分片键一旦确定,MongoDB 对数据的分片对应用是透明的 mongodb 分片中&#…

MySQL高级语句(三)

一、正则表达式(REGEXP) 1、正则表达式匹配符 字符解释举列^匹配文本的开始字符’ ^aa ’ 匹配以 aa 开头的字符串$匹配文本的结束字符’ aa$ ’ 匹配以aa结尾的字符串.匹配任何单个字符’ a.b 匹配任何a和b之间有一个字符的字符串*匹配零个或多个在它…

数据结构—树、有序二叉树

文章目录树的概述树的分类二叉树的遍历有序二叉树代码通过链表方式构建有序二叉树通过递归方式实现有序二叉树递归遍历有序二叉树中序遍历:先序遍历:后序遍历:删除节点1、删除叶子节点删除叶子节点总结图示2、删除只有一个子树的节点删除只有…

毕业设计-基于深度学习火灾烟雾检测识别系统-yolo

前言 📅大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

Spring循环依赖源码解析(深度理解)

文章目录前言本章目标一、什么是循环依赖?1、那么循环依赖是个问题吗?2、但是在Spring中循环依赖就是一个问题了,为什么?二、Bean的生命周期2.1、在Spring中,Bean是如何生成的?2.2、那么这个注入过程是怎样…

GitLab CI/CD系列教程(一)

来自:GitLab CI/CD系列教程(一):Docker安装GitLab_哔哩哔哩_bilibili 1. 创建虚拟机并连接Xterm 创建一个4G内存的虚拟机,否则很容易启动不了,报502 虚拟机的创建看这篇: VMware16的安装及VM…

基于java+ssm+vue+mysql的网上书店

项目介绍 本网上系统是针对目前网上的实际需求,从实际工作出发,对过去的网上系统存在的问题进行分析,结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用目前最流行的B/S结构和java中流行的…

从0开始搭建vue2管理后台基础模板

网站主要完成:侧边菜单栏、页面标签卡、内容栏 源代码gitee地址:https://gitee.com/zhao_liangliang1997/navigation-bar 一、起步 1、创建vue项目 vue create 项目名2、引入element 3、其他安装 1、首先需要安装如下 cnpm install vuex cnpm install…

DockerCompose安装、使用 及 微服务部署实操

1 什么是DockerCompose DockerCompose是基于Compose文件帮助我们快速的部署分布式应用。 解决容器需手动一个个创建和运行的问题! DockerCompose本质上也是一个文本文件,其通过指令定义集群中的每个容器如何运行。我们可以将其看做是将多个docker run…

Ansible 自动化运维工具的使用

目录 一、Ansible简介 二、Ansible 的安装和使用 1.下载 2.使用 三、Ansible命令和模块 1.命令格式 2.命令行模块 (1)command 模块 (2)shell 模块 (3)cron 模块 (4)user …