【论文精读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.
即该方法的内存消耗与深度的采样数无关,这就是逐深度优化正则体的好处,但其实也就是用时间换空间。

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

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

相关文章

Mysql执行报错:[Err] 1292 - Truncated incorrect DOUBLE value:***

MySQL执行语句抛出异常: 上面错误提示概是下面几种情况: 数据类型不匹配:在进行数值比较或运算时,数据类型可能不匹配。例如,将一个字符串值与一个 DOUBLE 类型的列进行比较或运算,或者将一个非数字字符串…

Android设计模式--策略模式

每天都要完成一个小目标 一,定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化 什么意思呢?在我们平时的开发中,难免会遇到这种情况&…

【eNSP安装与使用】华为eNSP网络设备模拟器从安装到使用详细步骤(亲测有效,附安装包下载)

目录 写在前面涉及知识一、安装那些事1.1前期安装包准备(基于windows10环境测试)1.2 安装WinPcap1.3 安装Wireshark1.4 安装VirtualBox1.5 安装eNSP 二、使用那些事2.1 安装问题解决(启动设备ar1失败 错误代码41)2.2 测试使用 三、…

干货分享---- 金融贷款电销获客的方法、渠道

电话营销的现状是,它过去使用电话资源在常规交易平台上正常工作,但进入时,对方总是挂断电话,甚至被他人标记为骚扰,这使工作变得困难。事实上,电话营销交易量飙升的关键很简单,那就是营销技巧和…

AGI+机器人行业:AGI 赋能人形机器人,具身智能时代有望加速到来

目录 1AGI的关键拼图:起于大模型,终于具身智能 .2 具身智能助力AGI走进现实 3人形机器人是AGI最佳载体,业界研究进展加速 2.2 OpenAI升级迭代GPT,推动机器人“大脑”升级 2.3 Meta与CMU联手打造RoboAgent,用更少的…

【开源】基于JAVA的生活废品回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案,旨在鼓…

网上赚钱有哪些项目可以长期做?盘点六个靠谱的副业项目

很多想扩宽收入来源,或者准备从事网络副业项目的人来说,在网上找到一个靠谱的项目也并非易事。现在的网络时代,网上赚钱成了一个备受关注的话题。但是现在却到处充斥着金钱和骗局的诱惑,不谨慎的朋友很容易被骗踩坑。 那么&#x…

一文搞懂Transformer

近期Transformer系列模型的出现,增加了CV领域的多样性。但是Transformer这一不同领域的模型对学习者来说需要一个细致的学习过程.下面就是本菜鸟总结学习路线。 Transformer是基于attention机制。而attention机制又在Encoder、Decode中。本篇博客将从Attention->…

软件测试如何定位判断是前端的bug还是后端bug

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

【漏洞复现】浙大恩特客户资源管理系统 fileupload.jsp 任意文件上传漏洞

文章目录 前言声明一、系统概述二、漏洞描述三、资产探测四、漏洞复现五、修复建议 前言 杭州恩软信息技术有限公司客户资源管理系统fileupload.jsp接口存在安全漏洞,攻击者可通过上传恶意脚本应用,获取服务器控制权限。 声明 请勿利用文章内的相关技术…

7个免费的优质图标素材网站,设计师必备!

对于交互设计师和产品经理来说,一套漂亮易用的图标可以算是提高效率的法宝,自己导出一套标准化的图标是一个巨大的工程。如何找到一个既美观又实用又能快速重用的图标?别慌,今天我们整理了7个价值高又好用的图标素材网站&#xff…

【unity插件】Shader实现UGUI的特效——UIEffect为 Unity UI 提供视觉效果组件

文章目录 前言地址描述Demo 演示Installation 安装如何玩演示用法使用示例完结 前言 一般的shader无法直接使用在UI上,需要在shader中定义特定的面板参数,今天就来推荐github上大佬做的一套开源的一系列UGUI,Shader实现的特效——UIEffect 为…

代码随想录 Day46 动态规划14 LeetCode T392 判断子序列 T115 不同的子序列

LeetCode T392 判断子序列 题目链接:392. 判断子序列 - 力扣(LeetCode) 题目思路: 本题有两种思路,第一个思路是使用双指针,第二个思路是使用动态规划,结尾笔者会附上两种方法的代码. 1.双指针 首先我们谈双指针的思路,就是让两个指针分别指向s和t字符…

Linux指令(二)

🎠🎠🎠🎠🎠🎠🎠🎠🎠🎠🎠🎠🎠🎠🎠🎠 🎖️🎖️🎖️&a…

C++入门,详解类和对象(1)

类和对象 一,前言二,类的介绍2.1类的引入2.2类的定义 三,类访问限定符及其分装3.1访问限定符说明 四,类的作用域五,类的实例化六,类对象模型6.1类的存储方式6.2类的大小计算 七,this指针7.1this…

​Unity Vuforia 新手(图片识别)教程,后续整理 实体识别 详细流程

文章目录 前言一、Vuforia是什么?二、Unity导入Vuforia1.去Unity - Windows – Asset Store,搜vuforia engine,添加到我的资源2.打开package Manager,导入到工程中即可3.或者在vuforia engine官网下载的Unity包导入4.检查是否导入…

选择最适合你的接口测试工具:SoapUI、JMeter、Postman!

在软件开发的过程中,接口测试是确保系统正常运行的关键环节。为了有效地执行接口测试,选择适当的工具至关重要。在这篇文章中,我们将比较分析三种常见的接口测试工具:SoapUI、JMeter和Postman,以帮助你了解它们的优势和…

TSINGSEE青犀视频平台EasyCVR修改设备通道不生效是什么原因?该如何解决?

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流&#…

黑马程序员微服务 第五天课程 分布式搜索引擎2

分布式搜索引擎02 在昨天的学习中,我们已经导入了大量数据到elasticsearch中,实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以今天,我们研究下elasticsearch的数据搜索功能。我们会分别使用DSL和Res…

智能导诊的开发技术有哪些?

智能导诊源码 智能导诊是医疗领域中一项重要的应用,它可以帮助医生和患者更快速、更准确地诊断疾病,提高医疗效率和精度。以下是智能导诊开发技术的几个方面: 1.数据收集整合 智能导诊系统需要收集大量的医疗数据,包括患者症状、病史、检查结…