多视图几何三维重建实战系列之R-MVSNet

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

上期文章介绍了用于三维重建的深度学习框架MVSNet[1],这也是如今比较主流的深度估计的神经网络框架。框架的原理按照双目立体匹配框架步骤:匹配代价构造、匹配代价累积、深度估计和深度图优化四个步骤。使用过MVSNet的同学会发现,MVSNet使用3D的卷积神经网络对聚合后的代价体进行正则化,防止在学习过程中,受到低概率的错误匹配影响。

但使用三维卷积神经网络(U-Net[2]),会造成非常大的GPU消耗,使得我们在使用过程中,受到一定的限制。同时,因为该正则化的模块,导致普通GPU单卡下无法训练和测试较高分辨率的影像集,也会影响深度估计范围和估计精度。

图1 MVSNet代价体正则化

针对该问题,本篇文章将介绍CVPR2019的R-MVSNet[3],并简单根据代码,介绍运行步骤和对应的问题。

1、R-MVSNet

R-MVSNet同样是香港科技大学姚遥等人在CVPR2019上提出的一种深度学习框架,它在MVSNet的基础上,解决了正则化过程中GPU消耗大、无法估计较大场景和高分辨率照片的问题。R-MVSNet的网络结构如下:

图2 R-MVSNet网络结构

和MVSNet的结构类似,给定一个参考影像和与其类似的原始影像,通过2D CNN网络进行深度特征的提取,每张影像输出32通道的特征图。在参考平面扫描算法[4]构造参考影像的匹配代价。形成一个特征体,然后利用GRU结构代替3DCNN对特征体进行深度正则化,防止过拟合现象,输出表示沿深度方向不同像素所在深度概率的概率体,最后利用“赢者通吃”原则,输出深度图。R-MVSNet和MVSNet一样,隶属于监督学习的范畴。

深度特征提取,匹配代价构造的步骤和MVSNet完全一致,其创新点在于利用循环神经网络中的GRU结构对代价体进行正则化,有效降低了3D CNN正则化带来的巨大GPU消耗。以下就该创新做重点阐释。

1.1、回顾MVSNet中的正则化步骤

MVSNet中正则化使用的3D CNN网络参考的是U-Net(图3),U-Net可以理解为,先按照左边的部分进行下采样,以降低图片的分辨率,得到大尺度的信息,之后,结合不同尺度的图像信息,进行上采样(如灰色所示)。

图3 U-Net结构

MVSNet使用U-Net结构进行正则化时,内存消耗会随着模型增大而立方级别的增大。所以,MVSNets网络虽然深度估计效率高,但在三维卷积神经网络正则化过程中GPU资源消耗过大(图4) ,造成MVSNet可以估计的深度范围较小,影响深度估计的精度。传统方法的优化方法只对当前深度那一层信息进行处理,提取深度,而图4 – c)中,3DCNN则是对全体进行代价体正则化,面临效率和成本问题。

a) 传统方法的代价累积消耗 b) RNN代价体正则化消耗 c) 3D CNN 代价体正则化消耗

4 代价体处理消耗示意图

1.2、R-MVSNet中的GRU优化

R-MVSNet网络提出的替代方式是将代价体分割成沿着深度方向拼接而成的多个代价图,直接对单个代价图进行过滤。同时考虑到单个代价图缺失上下文信息,采用循环神经网络(GRU结构)过滤整个代价体,使得保证深度图估计高效率的同时,降低了GPU消耗。

堆栈式GRU结构。GRU(Gate-Recurrent Unit)是一种循环神经网络的结构,和LSTM一样,设有状态传递和“遗忘”机制,便于逐序处理数据,按照该思路,引入GRU结构(图5-a),对代价图按照深度方向逐序过滤。定义[]为向量相连作为共同输入输入,*为矩阵相乘。

5 GRU结构示意图

为了进一步加强GRU结构正则化的能力,R-MVSNet采用一个CNN将32通道的深度特征映射到16通道的深度特征,然后使用一个三层堆栈式GRU结构对代价图进行过滤(图5-b)。

深度优化。如图2,R-MVSNet利用堆栈卷积神经网络通过在深度方向抓取前后深度信息,然后每个代价图经过GRU的过滤,最后整合形成一个过滤后代价体Cr,再经过SoftMax处理生成表示深度置信概率的概率体P,与MVSNet类似,以深度期望值作为参考影像的深度图。

1.3、损失函数的设计

大多数MVS网络通过soft argmin操作回归深度或视差值,其借鉴的假设是在深度方向,每个三维点在多视角图像之间的像素值应该近似,这种假设在深度估计范围均匀采样的情况下是成立的,但如果对于循环神经网络结构,则需要应用逆深度化的方法去采样深度值,已保证一个更大的深度估计范围。所以,作者提出采用交叉熵损失函数将深度回归问题转化为多类分类问题。损失函数如式(4):

(4)

其中,P(i,p)表示的是第i个在概率体P中的体素,Q为在该像素上与P位置对应的深度真值。

2、R-MVSNet实战操作

首先,再次感谢Yaoyao(香港科技大学)给出的开源代码和已经预处理好的模型和数据。其次,因为R-MVSNet是参考MVSNet框架下做出的改进,所以开源数据集和深度估计操作和MVSNet完全一致,这里对数据预处理仅做简单的回顾,详细数据处理内容,请大家回顾实战系列-MVSNet。

1)环境配置

参考Yaoyao的github主页中installation即可完成环境配置。

https://github.com/YoYo000/MVSNet

2)数据整理

在文末分享的百度云盘中下载数据集preprocessed_inputs/dtu.zip和预训练好的网络models/tf_model_19307.zip。将tf_model解压,在其中的GRU/中获得训练好的模型 model.ckpt-100000.data-00000-of-00001。  

  • 图6 百度云盘数据

将test.py 中的pretrained_model 地址改为tf_model中GRU的地址。

图7 更改预训练模型的地址

解压下载好的dtu.zip,到用于深度估计的数据集。以scan10为例,该文件夹的结构如下图。

图8 scan10文件夹结构

3)深度估计

运行代码:

python test.py --dense_folder TEST_DATA_FOLDER --regularization 'GRU' --max_w 1600 --max_h 1200 --max_d 256 --interval_scale 0.8

注意:

  • flag --dense_folder 要设定为scan10的地址。

  • flag –regularization表示正则化代价体的方式,R-MVSNet中使用的是GRU网络。

  • 图片的大小可以按照GPU的大小变更参数,但是需要时32的整数倍(特征提取时2D神经网络要求图像是32的整数倍)

  • Max_d 和interval_scale 建议先按照默认的要求,在使用自己的数据时,我们会给出调整的方式

  • 可以和MVSNet比较发现,可用的分辨率和深度估计范围都得到了提升。

3、结果分析与比较

3.1、时间与GPU消耗比较

估计时间。对于TankandTemple中的Family数据集,COLMAP的预估重建时间为4.1小时,OpenMVS重建时间为27.3分钟,MVSNet重建时间为4.7分钟,R-MVSNet重建时间为8.8分钟,R-MVSNet重建效率优于传统方法,稍劣于MVSNet(表1),因为R-MVSNet每次的代价图过滤都要考虑到上一步代价图的影响,这个迭代过程节省GPU消耗的同时则加大了运行时间。

1 MVSNetR-MVSNet结果比较

GPU内存消耗。在提升代价图分辨率和增大深度范围的同时(最大长宽及最大深度范围从MVSNet的1152*864*192到R-MVSNet的1600*1200*256(如表1), GPU消耗却从MVSNet的10.5GB降到了6.78GB,这使得R-MVSNet适用于场景的快速重建。

深度范围。如表1,相比较MVSNet,R-MVSNet可以回归更大的深度范围(由于缺少控制点信息,深度学习中的深度范围缺少尺度信息,故没有量纲),如图9,第一行表示MVSNet的深度图估计结果,R-MVSNet表示第二行深度图估计结果。在雕像后面的灌木林,R-MVSNet能回归出置信度较高的深度。得到较为平滑的深度图。

9  MVSNet与R-MVSNet对比结果

3.2、MVSNet和R-MVSNet重建结果比较

点云完整度比较。如图10,第一列表示基于MVSNet深度图配准的稠密重建结果,第二列表示基于R-MVSNet深度图的稠密重建结果。通过对比发现:

1) MVSNet可以对相片中心的对象进行重建,重建的深度范围比较小。在小氛围内的重建完整度较高,表面光滑,无空洞现象,但却少周围环境的重建信息(图10左侧)。

2) R-MVSNet不仅可以对相片中心对象进行重建,且精度优于传统方法和MVSNet方法,而且,R-MVSNet可估计更大深度范围,如图10右侧图像所示,周围场景信息保留的更为完整、丰富。

综合判断,R-MVSNet的深度重建效率高,重建效果最好,适用于场景的快速重建应用中。

10  MVSNet和R-MVSNet稠密重建结果比较

4、总结

针对三维卷积神经网络的深度学习方法计算资源消耗大问题,利用循环神经网络将匹配代价体分割成代价图,并逐个进行过滤。实验表明,循环神经网络改进后,深度学习方法下,能快速且较为完整的进行场景重建。

目前所提出的深度学习方法全在TensorFlow框架下,下篇文章将带来一篇CVPR2020的关于有监督的MVSNet文章,在Pytorch框架下,也是对GPU资源消耗过大问题进行改进,敬请期待。

5、参考文献

[1] Yao Yao, Luo Zixin, Li Shiwei, Fang Tian, Quan Long. MVSNet: Depth Inference for Unstructured Multi-View Stereo. European Conference on Computer Vision (ECCV)

[2] Ronneberger, O., Fischer, P., Brox, T.: U-net: Convolutional networks for biomedical image segmentation. International Conference on Medical Image Computing and Computer Assisted Intervention (MICCAI) (2015)

[3] Yao Y , Luo Z , Li S , et al. Recurrent MVSNet for High-resolution Multi-view Stereo Depth Inference[J]. 2019.

[4] Collins R T . A Space-Sweep Approach to True Multi-Image Matching[C] Computer Vision and Pattern Recognition, 1996. Proceedings CVPR '96, 1996 IEEE Computer Society Conference on. IEEE, 1996.

附录

开源数据集、参考论文下载地址在公众号3D视觉工坊」,后台回复R-MVSNet,即可直接下载。

开源数据集下载链接:(感谢香港科技大学姚遥开源的数据集链接)

我们需要下载的是用于测试的数据集,所以打开百度云链接时,点击 “mvsnet”,再点击“preprocessed_inputs”,下载其中的“dtu.zip”和“tankandtemples.zip”即可(图11)。

图11  目标目录

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值