Fast-MVSNet解读

Fast-MVSNet

  • 一、概览
  • 二、稀疏高分辨率深度图预测
  • 三、深度图扩展
  • 四、Gauss-Newton 精细化
  • 五、损失函数
  • 六、实现细节
    • 1.train
    • 2.test
  • 七、网络结构
    • 1.稀疏高分辨率深度图预测
    • 2.深度图扩展
    • 3.Gauss-Newton精细化
  • 八、深度图融合
  • 九、消融实验

一、概览

Fast-MVSNet解读_第1张图片

网络分为3部分:稀疏高分辨率深度图预测网络、深度图扩展网络、高斯-牛顿精细化网络

二、稀疏高分辨率深度图预测

深度图方法的对比:
a)高分辨率深度图:内存成本很高
b)低分辨率深度图:没有细节
c)稀疏的高分辨率深度图:内存和计算成本很低。类似空洞卷积,它有可能纳入更大的空间上下文信息进行正则化。
Fast-MVSNet解读_第2张图片

实现方法与MVSNet获取初始深度图大致相同,减小了代价体的尺寸和深度采样数:
1.使用8层2D CNN提取F=32通道的图像特征
2.代价体为1/8Wx1/8HxDxF
3.深度采样数为48或96

三、深度图扩展

目标:稀疏高分辨率深度图扩展为密集深度图。
1)最简单的是采用最近邻,但是它没有考虑原始图像的信息,因此可能在边界的表现不太好。
2)联合双边上采样:它使用原始高分辨率图像的信息作为指导。
在这里插入图片描述
f是空间滤波器核,g是范围滤波器核,N(P )为p周围kxk的区域,Zp是归一化项。对于不同的场景,这两个滤波器核可能不同,需要手动调整。因此,用权重W代替他们,并用简单网络学习权值。数学上,使用以下形式,
在这里插入图片描述
其中wp,q是CNN的输出,并以数据驱动的方式学习。虽然没有显式地计算空间信息,但它确实是由网络隐式编码的。此外,当预测不同位置p的不同权重时,可以看作是标准双边上采样器的一般化,它对每个位置p应用一个固定的核。

概括来说,最终使用的方法是:从参考图像中提取特征图,在特征图的通道中存放卷积核参数,因此最终的通道数kxk。然后用卷积网络提取出的卷积核对稀疏高分辨率深度图进行卷积,得到扩展的深度图。

实现方法
Fast-MVSNet解读_第3张图片
1.Ds使用最临近算法转化为稠密深度图D(填补空洞),将每个点kxk邻域的所有点依次写入通道(形成k²的通道,存储其领域点,即im2col,卷积的一种计算方式)
2.同时参考图像提取特征,输出通道数为kxk,得到D上每个位置的卷积核,再reshape为K²xHW二维,方便计算
3.哈达玛积(Hadamard product):特征图D和W对应位置相乘
4.sum相加(实际是卷积运算拆成了两步,先乘积,再相加,将k²变为1,再reshape为HxW,得到密集深度图

四、Gauss-Newton 精细化

原理理解:此时再次从参考图像和多张原图像提取出了多张特征图,使用扩展深度图预测出的深度D(P ),将参考图像上的点p投影到每张原图像上pi’处,计算p与p’处特征图取值的差异(若深度估计的准确,那么p和投影p’处的特征应该相似,差值小)。

目标:误差函数E(p)最小化
Fast-MVSNet解读_第4张图片
1.D(p )表示参考图像p点的深度估计(扩展深度图的取值)
2.Fi和F0分别为原图像和参考图像的特征图(原文为the deep representation,感觉不准确)
3.pi’是p在原图像Ii的投影点(原文为重投影点reprojected point)
4.Fi(p)为特征图Fi在p处的特征

用高斯牛顿法最小化E(p ):
1.计算残差ri(p )(观察值与估计值(拟合值)之间的差)
在这里插入图片描述
2.对每个残差,计算他们对D(p)的一阶导数
在这里插入图片描述
3.最后,可以得到当前深度的增量δ,其中J是雅可比矩阵{Ji(p)}的叠加,r是残差向量{ri(p)}(i=1,N)的叠加。
在这里插入图片描述
4. 相加得到精细化后的深度图
在这里插入图片描述

优点:可差分、作为网络的一层不需要可学习参数、收敛速度很快,实验发现它只需更新一步就可以快速收敛。

五、损失函数

与MVSnet相同
在这里插入图片描述
λ =1.0

六、实现细节

1.train

1.使用MVSnet生成的训练数据
2.输入图像的分辨率设置为640×512、视图数N=3
3.使用与MVSNet相同的视图选择策略(计算得分,选择得分高的前几幅作为原图像)
4.深度平面的数量D=48,深度假设[425,921]mm均匀采样。
5.优化器使用RMSProp Optimizer,初始学习率为0.0005,每两个epoch学习率降低0.9。
6.在4 NVIDIA GTX 2080Ti GPU上,批处理大小设置为16。
7.首先对稀疏深度图预测模块和扩展模块进行了4个epoch的预训练,然后进行12个epoch整个模型的端到端训练。

2.test

1.在扩展深度图后,得到了一个1xHxW的密集深度图,为了与Point-MVSNet公平对比,在高斯-牛顿提纯前用最邻近算法将深度图上采样到2xHxW
2.使用N = 5张分辨率为1280×960的图像作为输入,并设置深度平面数D =96。首先为每个参考图像预测深度图,然后使用MVSnet提供的后处理将预先指定的深度图融合为点云。除非另有说明,否则使用与Point-MVSNet相同的深度图融合参数。

七、网络结构

1.稀疏高分辨率深度图预测

网络与MVSNet类似,在空间域中构建了一个稀疏的代价体,并且使用了较少的深度平面(例如96)。因此,可以以更低的成本获得稀疏的高分辨率深度图。

2.深度图扩展

使用一个10层的卷积网络来预测权重W。
Fast-MVSNet解读_第5张图片

3.Gauss-Newton精细化

对于Gauss-Newton精细化,使用与深度图扩展类似的网络结构作为扩展模块来提取输入图像{Ii}(i=0,N)的深层特征表示。不同的是,表中的Conv_4和Conv_7首先被插值到相同的大小,然后拼接。

八、深度图融合

融合包括三个步骤:
1)光度过滤
首先将稀疏高分辨率深度图的预测概率(概率图获取方式应该与MVSNet相同)插值为高分辨率概率图,然后过滤出概率低于阈值的点,过滤阈值设置为0.5。
2)几何一致性
计算每个深度图的差异,并过滤出差异大于阈值的点η. 具体地说,参考图像深度图D中的点p投影到相邻深度图Dˆ中的p’, 将差异定义为
在这里插入图片描述
其中f是参考图像的焦距,baseline是两个图像的基线。阈值η设置为0.12像素。
3)深度融合
要求每个点在V=3视图中可见,并取所有重投影深度的平均值。

在文中,为了公平比较,使用了与Point-MVSNet中相同的参数进行深度图融合。发现融合参数η和V对重建结果有显著影响。从定量比较结果中,可以看出准确性和完整性之间的权衡。
a)增加η, 重建点精度降低,但更完整。
b)V值增加,重建结果变得更加精确,但不完整。
由于融合对最终重建结果有重大影响,因此将可学习的融合模型集成到整个pipline中是未来的一个方向。
Fast-MVSNet解读_第6张图片

九、消融实验

对高斯牛顿精细化进行消融实验,并进行了更多的迭代。
如表所示,高斯-牛顿精化能显著提高重建质量。然而,采用高斯-牛顿法迭代次数多,性能改善甚微。因此,在Gauss-Newton精细化中,只使用一次迭代。
Fast-MVSNet解读_第7张图片

你可能感兴趣的:(MVS-DL,计算机视觉,深度学习,三维重建,MVSNet,Fast-MVSNet)