【论文简述】R-MVSNet:Recurrent MVSNet for High-resolution Multi-view Stereo Depth Inference(CVPR 2019)

一、论文简述

1. 第一作者:Antyanta Bangunharcana

2. 发表年份:2019

3. 发表期刊:CVPR

4. 关键词:MVS、GRU、深度学习、CNN、分类

5. 探索动机:绝大多数基于学习的方法都基于代价空间正则化来进行训练和预测。但基于3D卷积的方式对于计算资源的消耗巨大,此外基于八叉树的OctNet和O-Net、基于分治策略的DeepMVS以及SurfaceNet也都面领着精度或速度的问题。MVSNet最大的问题是3D UNet,太耗费内存了。

6. 工作目标:是否可以用新的结构代替3D卷积,实现高效的正则化方式?

7. 核心思想:R-MVSNet另辟蹊径,不是一次性正则化整个3D代价体,而是提出了一种基于递归方式的重建方法,利用基于GRU循环正则化机制来处理代价空间,代替原本的3D代价空间,通过在深度方向上的循环处理,可以同时收集每个深度上的空间信息和不同深度上的上下文信息,不但减少了内存消耗(O(N^3) → O(N^2),时间换空间)还提升了模型的精度\效率与泛化性,能够重建先前不能重建的大场景,使得高分辨率的深度图/立体重建成为可能。

  • 序列化GRU来代替3D CNN
  • 回归问题改为多分类问题
  • 对初始深度图进行变分深度图改进

8. 实验结果:SceneFlow、KITTI 2012和KITTI 2015数据集上的广泛实验证明了模型的有效和高效,并表明模型优于其他基于速度的算法,同时也与其他最先进的算法在精度方面相匹敌。

9.论文&代码下载:

https://openaccess.thecvf.com/content_CVPR_2019/papers/Yao_Recurrent_MVSNet_for_High-Resolution_Multi-View_Stereo_Depth_Inference_CVPR_2019_paper.pdf

https://github.com/YoYo000/MVSNet

二、实现过程

1. R-MVSNet概述

本文的核心思想是利用GRU(RNN神经网络变体)。从输入图像中提取深度图像特征,然后按照MVSNet的方式构建代价体。卷积GRU依次正则化不同深度处的代价图,并利用了上一个深度的输出,即将深度尺度看作循环神经网络的时间尺度),最终合成代价体,从而将原来D个深度的代价体一次性正则化时需要的内存T减小到了T/D。该网络被训练为一个具有交叉熵损失的分类问题。

2. 学习部分

2.1. 特征提取

与MVSNet一致,输入一张reference image(参考图) 和N张source images(待映射图),然后使用8个2D卷积提取feature maps,最后,下采样得到原图1/4分辨率的32通道的特征图。

2.2. 特征体构造

将N张source images的特征利用单应性变换( homography warping),类似极线搜索,转换到reference image前的视锥体上构建N个三维特征体。

2.3. 代价体构造

将N个特征体通过计算方差,聚合至一个代价体,因此提出了一个N-视图的相似性度量的代价指标。方差越小,说明在该深度上置信度越高。

2.4. 循环正则化

代价空间可以视为不同深度上的代价图在深度方向上叠加而成。这一工作中最为重要的观点在于将不同深度的代价图视为类似时间序列以便使用循环神经网络进行处理,某一深度正则化后的输出值不同与当前状态相关还与先前的深度有关,这就GRU的使用对应了起来。最终对每一层代价图使用3层GRU模块,输入特征为16通道,其输入特征的通道数从16降为4降为1,输出一通道代价图。

参考讲的很好:https://blog.csdn.net/qq_41794040/article/details/127853045

2.5. 概率体

直接将各个深度正则化后的代价图连接成一个代价体,并沿深度方向使用了Softmax,即此时各点的值沿深度方向和为1。

2.6. 损失

将概率体P与真实图像的概率体Q计算交叉熵损失,将原始整个网络求概率期望的回归问题,视为分类问题来进行训练。

真实概率体Q是由真实的深度图得到,在深度方向上进行One-Hot编码。具体来说深度图上各像素点都对应了一个深度值,将该深度图复制D份(深度样本数),各像素点在真实深度的那层取1,其他层取0。Q(i, p)是P(i, p)对应的体素。随后,对概率体P来说,深度图上的每一个点在深度方向上有D个Softmax后的概率值,即属于深度d这一“类”的概率;而真实概率体Q则相当于给出了该点所在深度“类”的标签,因此即转换为一个求交叉熵损失的多分类问题。

分类方法的一个关注点是离散化的深度图输出,为了达到亚像素精度,下一节提出了一种变分深度图改进算法来进一步改进深度图输出。此外,在训练期间计算整个概率体,但在测试中,深度图可以使用winner-take-all从正则化的代价图中顺序检索进行选择。

3. 非学习部分

3.1. 后处理方法

  • 参考图像的源图像的选择,延续MVSNet
  • 参考视图的深度范围[dmin, dmax],通过COLMAP得到
  • 使用逆深度设置的采样深度值的深度样本数D,没看懂

3.2.  变分深度图改进

该步骤的输入是训练网络得到的初始深度图,即使用winner-take-all沿深度方向上取概率最大的深度作为该点深度,进行得到一张完整的深度图。原文提出通过加强多视角光度一致性来在深度小范围内改进深度图。

变分深度图改进的过程,其实可以看做一个对像素点不断重投影并计算、迭代减小一个特定重投影误差Error的过程。给定参考图像I1,参考深度图D1和一个源图像Ii,将Ii通过D1投影到I1,形成重投影图像Ii→1。在像素p处I1和Ii→1之间的图像重投影误差定义为:

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

  • 图(g)->图(f)缓解了阶梯效应(stair effect),平滑项起了作用
  • 对小范围内的深度值进行微调,达到亚像素级的深度精度

 3.3. 滤波

  • 光度一致性,滤掉置信度图中概率低于0.3的像素;
  • 几何一致性,延续MVSNet,像素应该至少在三个视图可见。

3.4. 深度图融合

  • visibility-based depth map fusion
  • the mean average fusion

4. 代价体构建方式

文中描述了几种正则化的方式。对于红色体素,用蓝色体素表示在代价体正则化过程中的感受野。运行时内存需求也列在顶部,其中H、W和D分别表示图像的高度、宽度和深度样本数。

 

图(d)多深度的3D CNN的方法进行正则化。虽然直接考虑全局但由于同时操作多个深度内存消耗变为HxWxD,占用了大量的内存,内存需求随着模型分辨率的增加而增加,很难扩展到高分辨率场景。即除一次性全局正则化代价体外,几种通过深度方向顺序处理代价体的方式:

  • 图(a)是最简单的顺序方法,即winner-take-all的平面扫描法,即在深度方向上逐个点计算,取概率最噶的深度值作为最终结果,因此会受到噪声的影响。
  • 图(b)改进的代价聚合方法,在不同深度过滤匹配代价 C(d),以便为每个代价估计收集空间邻域信息。
  • 图(c)是本项工作的思想,提出的基于卷积 GRU的更强大的循环正则化方案,能够在深度方向上收集空间以及单向上下文信息,这实现了与全空间 3D CNN相当的正则化结果,并且由于每次只做一个深度层,内存消耗也是一个HxW,在运行时内存中效率更高。

5. 实验

5.1. 训练

使用DTU数据集训练,训练图像大小设置为W×H = 640 × 512,输入视图数N = 3,深度假设的采样范围为425mm至905mm,D = 192。通过TensorFlow实现,在GTX 1080Ti显卡上训练,迭代100k,batch size为1。RMSProp作为优化器,学习率设置为0.001,每10k迭代的指数衰减为0.9。

为了防止深度图在GRU正则化顺序上产生偏置,每个训练样本都以从dmin到dmax的正向GRU正则化和从dmax到dmin的反向正则化传递给网络。

5.2. 测试

输入视图数N = 5,自适应选择反向深度样本。对于Tanks and Temples数据集,相机参数由OpenMVG计算。在此基础上,使用OpenGL实现深度图的改进、滤波和融合。

5.3. 评价基准

DTU Dataset:accuracy 、completeness、overall score

the best reconstruction completeness and overall score among all methods.

数据集介绍:DTU dataset contains over 100 scans taken under 7 different lighting conditions and fixed camera trajectories.

Tanks and Temples Benchmark:the intermediate and the advanced sets both ranks 3rd

数据集介绍:the dataset is divided into the intermediate and the advanced sets. The intermediate set contains scenes with outside-look-in camera trajectories, while the advanced set contains large scenes with complex geometric layouts, where almost all previous learned algorithms fail due to the memory constraint. the benchmarking result of Tanks and Temples is highly dependent on the point cloud density.

ETH3D Benchmark:similar performance to MVSNet and ranks 6th on the low-res benchmark.

数据集介绍:The dataset is divided into the low-res and the high-res scenes, and provides the ground truth depth maps for MVS training.

5.3 Scalability

Wide-range Depth Reconstructions:深度是可以无限的,内存利用率也更高,时间换空间。

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.

High-resolution Depth Reconstructions

R-MVSNet还可以通过在深度方向上采样密度生成高分辨率的深度重建。对于DTU评估,如果固定深度范围,并将深度样本数从D = 256改为D = 512,则overall score将从0.422mm降低到0.419mm。

5.4. Ablation Studies

5.5 Discussion

Running Time:对于D = 256的DTU评估,RMVSNet以9.1s /视图的速度生成深度图。具体来说,需要2.9s来推断初始深度图和6.2s执行深度图改进。深度图改进的运行时间只与迭代和输入图像大小有关。过滤和融合所需的运行时间可以忽略不计。

Generalization:使用在DTU数据集上训练的模型进行所有实验,没有进行微调。在Tanks and Temples and ETH3D benchmarks

Limitation on Image Resolution:虽然R-MVSNet适用于具有无限深度分辨率的重建,但重建规模仍然受限于输入图像的大小。目前R-MVSNet可以在11GB GPU上处理的最大输入图像大小为3072 × 2048,这涵盖了所有MVS基准,除了ETH3D的高分辨率基准(6000 × 4000)。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华科附小第一名

您的支持对我的前行很重要!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值