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


多视图几何三维重建实战系列之R-MVSNet文章插图
图5 GRU结构示意图
多视图几何三维重建实战系列之R-MVSNet文章插图
为了进一步加强GRU结构正则化的能力 , R-MVSNet采用一个CNN将32通道的深度特征映射到16通道的深度特征 , 然后使用一个三层堆栈式GRU结构对代价图进行过滤(图5-b) 。
深度优化 。 如图2 , R-MVSNet利用堆栈卷积神经网络通过在深度方向抓取前后深度信息 , 然后每个代价图经过GRU的过滤 , 最后整合形成一个过滤后代价体Cr , 再经过SoftMax处理生成表示深度置信概率的概率体P , 与MVSNet类似 , 以深度期望值作为参考影像的深度图 。
1.3、损失函数的设计
大多数MVS网络通过soft argmin操作回归深度或视差值 , 其借鉴的假设是在深度方向 , 每个三维点在多视角图像之间的像素值应该近似 , 这种假设在深度估计范围均匀采样的情况下是成立的 , 但如果对于循环神经网络结构 , 则需要应用逆深度化的方法去采样深度值 , 已保证一个更大的深度估计范围 。 所以 , 作者提出采用交叉熵损失函数将深度回归问题转化为多类分类问题 。 损失函数如式(4):
多视图几何三维重建实战系列之R-MVSNet文章插图
(4)
其中 , P(i,p)表示的是第i个在概率体P中的体素 , Q为在该像素上与P位置对应的深度真值 。
2、R-MVSNet实战操作
首先 , 再次感谢Yaoyao(香港科技大学)给出的开源代码和已经预处理好的模型和数据 。 其次 , 因为R-MVSNet是参考MVSNet框架下做出的改进 , 所以开源数据集和深度估计操作和MVSNet完全一致 , 这里对数据预处理仅做简单的回顾 , 详细数据处理内容 , 请大家回顾实战系列-MVSNet 。
1)环境配置
参考Yaoyao的github主页中installation即可完成环境配置 。
()
2)数据整理
在文末分享的百度云盘中下载数据集preprocessed_inputs/dtu.zip和预训练好的网络models/tf_model_19307.zip 。 将tf_model解压 , 在其中的GRU/中获得训练好的模型 model.ckpt-100000.data-00000-of-00001 。
多视图几何三维重建实战系列之R-MVSNet文章插图

  • 图6 百度云盘数据
将test.py 中的pretrained_model 地址改为tf_model中GRU的地址 。
多视图几何三维重建实战系列之R-MVSNet文章插图
图7 更改预训练模型的地址
解压下载好的dtu.zip , 到用于深度估计的数据集 。 以scan10为例 , 该文件夹的结构如下图 。
多视图几何三维重建实战系列之R-MVSNet文章插图
图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、结果分析与比较


推荐阅读