【论文精读2】R-MVSNet

R-MVSNet【递归多视图立体网络】,论文全名:“Recurrent MVSNet for High-resolution Multi-view Stereo Depth Inference”,CVPR 2019(CCF A)
在MVSNet的基础上做了一些改进,主要解决的问题是代价体正则化(Cost Volume Regulazation)过程当中对内存过大的问题,主要做了三点改动:
(1)在代价体正则化步骤,使用序列化GRU【门控递归单元】来代替3D CNN
(2)将soft argmin 替换为Softmax,并将原始的回归问题改为多分类问题计算交叉熵损失
(3)为产生具有亚像素精度的深度估计,对初始网络得到的深度图进行变分深度图细化(Variational Depth Map Refinement)

MVSNet是该系列论文的基础,建议先理解后再看这些优化的模型,详见【论文精读1】MVSNet系列论文详解-MVSNet。

一、问题引入

基于代价体的MVS重建方法主要限制之一是可扩展性,即代价体正则化的内存消耗成本使学习MVS很难应用于高分辨率场景。

MVS(Multi-View Stereo)指的是在多个具有重叠特征的图像、且内外参数已知的情况下对三维物体或场景进行重建。
在该类问题当中,通常会根据多个图像的匹配特征来构建代价体,并将其正则化为概率体以推断深度图。而无论是传统方法,还是使用基于神经网络的学习方法,在正则化时若将整个代价体作为输入,都会遇到内存消耗随尺度增加而立方级增加的情况,针对于此,传统方法和基于学习的方法都做了一些尝试:

就是一次性全局正则化成本体积C的替代方案

成本体积C可以被视为是D张成本图在深度方向上的映射

传统方法通常隐式的调整代价体,如:

局部深度传播迭代细化深度图/点云
使用简单平面扫描顺序正则化代价体
具有深度赢家通吃的2D空间成本聚集

而基于学习的方法做了两种尝试:

如OctNet和O-CNN利用3D数据的稀疏性将八叉树结构引入到3D CNN中,但仍限于分辨率的重建。
Surface Net和Deep MVS等将工程化的分而治之策略应用于MVS重建,但面临全局上下文信息丢失和速度减慢的问题。

二、模型结构

在这里插入图片描述

本文的核心思想是利用GRU(RNN神经网络变种),将普通正则化一次性在多个深度上进行的过程,转为逐个深度进行、并利用了上一个深度的输出(即将深度尺度看作循环神经网络的时间尺度),从而将原来D个深度样本时需要的内存T减小到了T/D(该数值仅为方便理解)。

所提出的网络建立在MVSNet架构的基础上,但使用卷积门控递归单元(GRU)而不是3D CNN以顺序方式正则化成本量。通过顺序处理,算法的在线内存需求从三次减少到二次。
其实就是从原本CNN需要正则化3D成本体积-》通过门控递归单元(GRU)沿着深度方向顺序正则化2D成本图
显著减少了内存消耗,并使高分辨率重建变得可行

1.特征提取

给定参考图像I1【1张】及其相邻源图像的集合【 { I i } i = 2 N \left\{ I _ { i } \right\} _ { i = 2 } ^ { N } {Ii}i=2N】MVSNet提出了一种端到端的深度神经网络来推断参考深度图D。在其网络中,深度图像特征{Fi}Ni=1首先通过2D网络从输入图像中提取。然后,这些2D图像特征将通过可微分单应性被扭曲到参考相机截头体中,以构建3D空间中的 { V i } i = 1 N \left\{ V _ { i } \right\} _ { i = 1 } ^ { N } {Vi}i=1N个特征体积。

为了处理任意N视图图像输入,提出了一种基于方差的代价度量,将N个特征体映射到一个代价体C。

与其他立体和MVS算法类似,MVSNet使用多尺度3D cnn对代价体进行正则化,并通过softargmin回归计算参考深度图D。

2.特征体正则化

2.1 特征图->特征体

在这里插入图片描述

即图中圆圈M的过程。它将N张源图像和参考图通过特征提取网络得到了N个特征图,通过深度D0对应的单应矩阵H进行变换得到N个特征体,并对这N本书(特征体)的每页(每个特征通道)上的每个特征点计算方差值,最终得到一本由方差值组成的书(代价体,即图中C0)。

该部分不理解的详见MVSNet,这是MVSNet的核心内容即可微单应变换。

2.2 特征体正则化

在这里插入图片描述

在正则化部分主要使用的网络结构在图中已经画出,首先是一个橙色的卷积网络来将通道数由32变为16,随后通过3层【 为了进一步增强正则化能力,堆叠三层GRU单元以形成更深的网络 】叠加的GRU分别将通道数变为16,4,1,最终输出的是一张正则化后的代价图(Cost Map)

个人理解其实这时候代价图上各点的值代表了该点属于当前深度的概率值。
随后,重复2.1的过程深度计算出深度为D1时的代价体,同样输入该网络进行正则化,需要注意的是这时候在GRU层的输入不仅是该深度下的代价体,同时还利用了上一个深度D0时各GRU层的输出,即循环神经网络【RNN】的思想。

这部分是降低代价体正则化内存消耗的核心步骤,实现原因在于每次网络只对一个深度的代价体进行正则化,而非像MVSNet一样一次性对所有深度的代价体正则化,如下图所示,右边的RNN结构等同于左边,本文模型同理,即每次的内存消耗只是左边图上的一次神经网络训练消耗。

在这里插入图片描述

2.3 正则化代价图 -> 概率体

该部分是对MVSNet的第二个改动点,与其Soft argmin(沿深度方向求 概率*当前深度 的期望值)不同,直接将各个深度正则化后的代价图(个人理解图上各点值代表该点属于当前深度的概率值)聚合成一个概率体P,并在这当中沿P的深度方向使用了Softmax,即此时各点的值沿P深度方向和为1的概率。

3.计算损失

将概率体P与真实图像所得的真实概率体Q计算交叉熵损失,即第三个改动点,将原始求概率期望的回归问题变成了一个多分类的问题。

将回归问题-》转化为分类问题

  • 回归:估计一个连续值
  • 分类:预测一个离散类别

真实概率体Q是由真实的深度图得到,具体来说深度图上各像素点都对应了一个深度值,将该深度图复制D份(深度样本数),各像素点在真实深度的那层取1,其他层取0,即一个深度方向上的One-Hot操作。

【补充】

One-Hot编码是一种常用的数据表示方法。One-Hot操作是将分类变量转换为二进制向量的过程,其中每个元素表示变量的一个特定类别。这通常用于处理分类任务,其中模型需要接受分类信息作为输入。

具体来说,One-Hot编码将一个包含有限个可能取值的分类变量映射到一个由0和1组成的向量,其中每个元素对应一个类别,如果观察值属于该类别,则对应元素的值为1,否则为0。

随后,对概率体P来说,深度图上的每一个点在深度方向上有D个Softmax后的概率值,即属于深度d这一“类”的概率;而真实概率体Q则相当于给出了该点所在深度“类”的标签,因此即转换为一个求交叉熵损失的多分类问题,公式如下:

在这里插入图片描述

【补充】

  • Softmax回归是一个多类分类模型
  • 使用Softmax操作子得到每个类的预测置信度
  • 使用交叉熵来衡量预测和真实概率之间的的区别

三、变分深度图细化(Variational Depth Map Refinement)

该部分据论文表述是:One concern about the classification formulation is the discretized depth map output. To achieve subpixel accuracy, a variational depth map refinement algorithm is proposed in Sec. 4.2 to further refine the depth map output.,即分类方法的一个关注点是离散化的深度图输出,而为了达到亚像素精度,提出了一种变分深度图细化算法。
其实对于这个“亚像素精度”的理解还是有点模糊,是指图像亚像素点也具有对应的深度值吗?

该步骤的输入是网络得到的初始深度图,具体来讲,是对各像素点取深度值,深度值的来源是在各正则化后的Cost Map沿深度方向上观察,取概率最大的那个深度作为该点深度,进行得到一张完整的深度图。

这就是论文中所说的利用argmax的Winner-take-all(赢家通吃)策略,即直接取最有可能的那一个,而不是沿深度方向求期望等。
这也是论文提到的,在训练过程中需要计算出概率体P,但在测试时只需得到各深度下正则化后的Cost Map并使用该策略即可获取深度图。(In addition, while we need to compute the whole probability volume during training, for testing, the depth map can be sequentially retrieved from the regularized cost maps using the winner-take-all selection)

变分深度图细化的过程,其实可以看做一个对像素点不断重投影并计算、迭代减小一个特定重投影误差Error的过程,表述如下:
Given the reference image I1, the reference depth map D1 and one source image Ii, we project Iito I1 through D1 to form the reprojected image Ii→1. The image reprojection error between I1 and Ii→1 at pixel p is defined as:

给定参考图像I1、参考深度图D1和一个源图像Ii,将原图Ii按照推测深度图D1映射到参考图I1上以得到重投影图像Ii→1。重投影图像和参考图之间的误差被定义为

在这里插入图片描述

其中Ei photo 是两个像素之间的光度误差,Ei smooth 是保证深度图平滑度的正则化项。
论文用零均值归一化互相关 (ZNCC) 来测量光一致性 C(·),并使用 p 与其邻居 p’ ∈ N § 之间的双边深度平方差 S(·) 来获得平滑度。
在细化过程中,不断迭代地最小化参考图像和所有源图像之间、所有像素点的总的图像重投影误差。

在这里插入图片描述

通过该过程获得了两个效果:
(1)图(g)->图(f)消除了阶梯效应(stair effect),平滑项起了作用
(2)对小范围内的深度值进行微调,达到亚像素级的深度精度

【补充】

亚像素级别的深度通常是指在图像处理中,通过软件技术对图像进行更精细的处理,以提高图像的分辨率和精度12。在相机成像的过程中,获得的图像数据是将图像进行了离散化的处理,由于感光元件本身的能力限制,到成像面上每个像素只代表附近的颜色。例如两个感官原件上的像素之间有4.5um的间距,宏观上它们是连在一起的,微观上它们之间还有无数微小的东西存在,这些存在于两个实际物理像素之间的像素,就被称为“亚像素”12。

四、总结

这篇R-MVSNet是Yao Yao等原班人马针对MVSNet在内存消耗上的一个改进,所以基本思想没变,主要是利用不同视角图像特征变换至同一假设深度下,通过差分来判断某特征点属于当前深度的可能性,主要是在差分后代价体正则化步骤用了RNN序列化来做,是用时间换内存空间思想的一种应用。

五、讨论

1.论文针对不同的正则化方法给出了一个描述图:

在这里插入图片描述

该图描述即除一次性全局正则化代价体外,几种通过深度方向顺序处理代价体的优化思路:

图(a)是最简单的顺序方法,即赢家通吃的平面扫描立体声,它粗略地用更好的深度值替换像素级深度值,因此会受到噪声的影响。

图(b)改进的代价聚合方法,在不同深度过滤匹配成本 C(d),以便为每个成本估计收集空间上下文信息。

图©是本项工作遵循顺序处理的思想,提出的基于卷积 GRU的更强大的循环正则化方案,能够在深度方向上收集空间以及单向上下文信息,这实现了与全空间 3D CNN相当的正则化结果,但在运行时内存中效率更高。

图a就是上文中提到过的winner-take-all原则,即在深度方向上逐个点计算,取最可能的深度值来用
图b主要增加了空间“上下文”信息,这里上下文有点歧义,其实是指空间邻域信息,而且论文中所说的“在不同深度过滤匹配成本C(d)”感觉也不对,不应该是不同深度,原文是这样的 cost aggregation methods filter the matching cost C(d) at different depths (Fig. 1 (b)) so as to gather spatial context information for each cost estimation.
图c则是本文的,逐深度来做能够考虑在深度方向、以及空间上下文的信息,并且由于每次只做一个深度层,内存消耗也是一个HxW.
图d是MVSNet为代表的直接使用3D CNN的方法,虽然直接考虑全局但由于同时操作多个深度内存消耗变为HxWxD[D是图的数量].

2.此外,论文中还提到了一个选取深度样本数D的策略——Inverse Depth,但并没有详细展开讲,之说在supplementary material里详细讲但并没有找到…
这个应该还挺重要的,因为论文中说:
Most deep stereo/MVS networks regress the disparity/depth outputs using the soft argmin operation, which can be interpreted as the expectation value along the depth direction [30]. The expectation formulation is valid if depth values are uniformly sampled within the depth range. However, in recurrent MVSNet, we apply the inverse depth to sample the depth values in order to efficiently handle reconstructions with wide depth ranges.
即沿深度求期望是当深度样本值在[Dmin,Dmax]均匀采样时才有效,但RMVSNet为了高效处理更广深度范围的重建而是用这个inverse depth设置,很明显不是均匀采样的,也就是关乎着单应变换时对应的具体的深度值取值的问题。

3.在训练时,论文指出
to prevent depth maps from being biased on the GRU regularization order, each training sample is passed to the network with forward GRU regularization from dmin to dmax as well as the backward regularization from dmax to dmin,
即为了防止GRU在按深度采样由小到大有偏差问题,会由大到小再训练一遍。

4.论文指出
The memory requirement of R-MVSNet is independent to the depth sample number D, which enables the network to infer depth maps with large depth range that is unable to be recovered by previous learning-based MVS methods.
即该方法的内存消耗与深度的采样数无关,这就是逐深度优化正则体的好处,但其实也就是用时间换空间。

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

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

相关文章

三、Eureka注册中心

目录 一、作用及调用方式 二、搭建eureka注册中心 三、注册user-service和order-service 四、新增实例 五、服务拉取 六、总结 一、作用及调用方式 在服务提供者启动时,它会向eureka注册中心提供自己的信息,并每30秒进行一次刷新eureka注册中心保存…

ping: www.baidu.com: Name or service not known解决办法

解决服务器无法ping通外网问题 1、问题描述: 配置了网卡信息,发现还是无法访问外网,并报ping: www.baidu.com: Name or service not known信息 2、问题原因: 这就是外网没开通好 3、解决方法: 修改网卡文件&#xff…

易货:一种古老而有效的商业模式

在当今的商业世界中,我们常常听到关于电子商务、互联网和社交媒体等新技术的讨论。然而,尽管这些新技术为我们的日常生活带来了许多便利,但它们并没有完全取代传统的商业模式。其中,易货模式是一种古老而有效的商业模式&#xff0…

Python爬虫程序网络请求及内容解析

以下是一个简单的Python爬虫程序,用于爬取商户的内容。这个程序使用了requests和BeautifulSoup库来进行网络请求和内容解析。 import requests from bs4 import BeautifulSoup# 爬虫爬虫IP信息 proxy_host duoip proxy_port 8000# 请求URL url 目标网站# 创建一个…

docker-compose 部署 MySQL 8

目录 前言MySQL 配置文件(my.cnf)docker-compose.yml安装卸载 前言 Windows/Linux 系统通过 docker-compose 部署 MySQL8.0。 MySQL 配置文件(my.cnf) # 服务端参数配置 [mysqld] usermysql # MySQL启动用户 default-storage-engineINNODB # 创建新表时…

HTTP代理与SOCKS5代理,有什么区别?

在数字通信领域,数据安全和匿名性都是非常重要的指标。互联网的不断发展催生了几种协议,每种协议都有独特的优势和挑战。其中,SOCKS5 代理、HTTP代理最为广泛使用,下面给大家一起讨论,HTTP代理与SOCKS5代理&#xff0c…

POE也收费了

一直通过POE在用chatgpt,今天下午发现要收费了…

开发知识点-Vue-Electron

Electron ElectronVue打包.exe桌面程序 ElectronVue打包.exe桌面程序 为了不报错 卸载以前的脚手架 npm uninstall -g vue-cli安装最新版脚手架 cnpm install -g vue/cli创建一个 vue 随便起个名 vue create electron-vue-example (随便起个名字electron-vue-example)进入 创建…

ai语音电销机器人电销行业要怎么降低封号率?

工信部对电话营销电话的管控越来越严格,企业电销行业的发展受到了很多限制,因为电话销售人员在进行销售工作的时候,经常会因为各种原因触发封号机制,导致手机卡号被封,那企业电销行业要怎么降低封号率? 很多…

vue+iView实现下载zip文件导出多个excel表格

1&#xff0c;需求&#xff1a;在vue项目中&#xff0c;实现分月份导出多个Excel表格。 点击导出&#xff0c;下载zip文件&#xff0c;解压出多张表数据。 2&#xff0c;关键代码&#xff1a; <Button class"export button-style button-space" click"ex…

ssm823基于ssm的心理预约咨询管理系统的设计与实现+vue

ssm823基于ssm的心理预约咨询管理系统的设计与实现vue 交流学习&#xff1a; 更多项目&#xff1a; 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示&#xff1a; ————————————————

【QT HTTP】使用QtNetwork模块制作基于HTTP请求的C/S架构

目录 0 引言1 HTTP基本知识1.1 请求类型1.2 HTTP请求报文格式1.3 HTTP响应报文格式1.4 拓展&#xff1a;GET vs POST 请求方法GET请求请求报文&#xff1a;响应报文 POST请求请求报文响应报文 其他注意事项示例&#xff1a;GET请求示例POST请求示例 2 实战2.1 QtNetwork模块介绍…

Kafka 的应用场景

Kafka 是一个开源的分布式流式平台&#xff0c;它可以处理大量的实时数据&#xff0c;并提供高吞吐量&#xff0c;低延迟&#xff0c;高可靠性和高可扩展性。 Kafka 最初是为分布式系统中海量日志处理而设计的。它可以通过持久化功能将消息保存到磁盘&#xff0c;并让消费者按…

Express基本接口开发-入门学习与后续进阶

前提推荐 任何一个新的知识都是从文档看起&#xff0c;因此express官方文档示例有必要去学习一遍。 推荐看&#xff1a; 推荐入门指南-路由指南-中间件 看完这几个内容之后心里大概知道express有些什么东西了&#xff0c;然后现在就可以去练习了 注意&#xff1a;更多示例-代…

安全区域边界(设备和技术注解)

网络安全等级保护相关标准参考《GB/T 22239-2019 网络安全等级保护基本要求》和《GB/T 28448-2019 网络安全等级保护测评要求》 密码应用安全性相关标准参考《GB/T 39786-2021 信息系统密码应用基本要求》和《GM/T 0115-2021 信息系统密码应用测评要求》 1边界防护 1.1应保证跨…

03-CSS基础选择器

3.1 CSS基础认知&#x1f34e; 3.1.1 &#x1f441;️‍&#x1f5e8;️CSS概念 CSS&#xff1a;层叠样式表&#xff08;Cascading style sheets)&#xff0c;为网页标签增加样式表现的 语法格式&#xff1a; 选择器{<!-- 属性设置 -->属性名:属性值; <!--每一个…

Spring Cloud Netflix微服务组件-Eureka

CAP理论 分区容忍是能容忍一个或一部分节点挂掉后&#xff0c;整体系统也能正常工作&#xff08;就是别的节点还是活着的&#xff09;&#xff0c;所以分布式系统中P是必须要有的。比如数据库主从架构&#xff0c;主从两个节点之间需要数据同步&#xff0c;主挂了&#xff0c;…

Mysql中的索引与事务和B树的知识补充

索引与事务和B树的知识补充 一.索引1.概念2.作用3.使用场景4.使用 二.事务1.为什么使用事务2.事务的概念3.使用3.1脏读问题3.2不可重复读3.3 幻读问题3.4解决3.5 使用代码 三.B树的知识补充1.B树2.B树 一.索引 1.概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记…

程序员一般从什么平台兼职接私活?国内外主流9大平台汇总!

我想对于有一定工作经验的工程师来说&#xff0c;肯定听说过或者切身经历过公司裁员、公司倒闭、甚至清退年龄稍大的工程师等一系列负面情况。 其实我们作为员工来说&#xff0c;面对这些打击&#xff0c;我们能争取到的权益是比较少的&#xff0c;即使争取到了一些权益或补偿…

【功能栏】基于session的模拟短信注册功能

框架&#xff1a; spring boot mybatis-plus 目录 1.创建user表 ​编辑2. mybatis-plus插件 3.导入相关依赖 4.配置文件 5.前端代码 register.html style.css 6.后端代码 entity层 mapper层 sevice层 业务层接口 业务层实现类 controller层 7.调试 1. 未输…