M3VSNet理解

M3VSNet: Unsupervised Multi-metric Multi-view Stereo Network

  • 一、网络概览
    • 1.1创新点
    • 1.2网络结构
  • 二、网络细节
    • 2.1金字塔特征提取
    • 2.2法向深度一致性
    • 2.3多度量损失函数
      • 2.3.1像素损失
      • 2.3.2特征损失
  • 三、实验
    • 3.1实验环境
    • 3.2实验结果
    • 3.3消融实验
    • 3.4在Tanks & Temples上的泛化能力

一、网络概览

1.1创新点

•提出了一种新的多度量无监督网络,即使在非理想环境下也能工作,可以使用没有ground-truth的数据集进行训练。

•提出了一种新的多度量损失函数。因为对于两幅相同的图像,只要从像素级的角度看像素偏移,差异会很大。然而,从感知的角度来看,它们几乎是相同的,比如特征层次。此外,人类视觉系统根据对象特征而不是单个图像像素感知周围世界。因此,为了提高基于无监督学习的MVS的鲁棒性和完备性,它促使我们考虑对象特征的相似性。

•在3D点云格式中加入了法向深度一致性,以提高估计深度地图的准确性和连续性。

•大量实验表明,提出的M3VSNet优于先前最先进的无监督方法,在DTU数据集上与原始MVSNet取得了相当的性能,并在Tanks&Templates基准上显示了出色的泛化能力,并进行了有效改进。

1.2网络结构

M3VSNet理解_第1张图片

基本架构:金字塔特征聚合+基于方差的代价体生成和+3D U-Net正则化+法向深度一致性+多度量损失(像素损失+特征损失)

核心思想:有监督学习直接计算预测深度图与ground-truth的损失,而无监督学习通过投影变换的方式,利用预测的深度,将参考图像变换到源图像(参考图像像素坐标系→世界坐标系→源图像像素坐标系),计算一致性损失。

二、网络细节

2.1金字塔特征提取

传统的基于监督学习的网络,如MVSNet,仅采用1/4特征,缺少匹配对应的多尺度上下文信息。因此,在这里使用特征金字塔,将不同尺度特征与不同感受野的上下文信息聚合在一起。
M3VSNet理解_第2张图片
结构说明:
1.从底向上11层,在1,4,7,10层下采样,得到1/2、1/4、1/8、1/16四个尺寸的特征图。
2.每层结构:CNN+BatchNorm+ReLU
3.输出:1/4尺寸,32通道特征图。

2.2法向深度一致性

初始深度仍然包含一些不正确的匹配。因此,为了进一步提高预测深度图的质量,结合法向深度一致性(基于法线和局部曲面切线之间的正交性)使三维空间中的深度更加合理。

首先,法线应通过具有正交性的深度来计算。
然后,根据投影关系,由法向深度和初始深度推断细化深度。
M3VSNet理解_第3张图片
如图,选择8个相邻点推断中心点的法向,由于其正交性,使用叉积运算。对于每个中心点Pi,设一组相邻点为Pix和Piy(P都为相机坐标系坐标,p为像素坐标系坐标)。如果已知pi的深度Zi和摄像机的内参矩阵K,则法向量Nfi可计算如下:
M3VSNet理解_第4张图片
在这里插入图片描述
为了增加可信度,取8邻域平均值
在这里插入图片描述

由法向和初始深度图可以得到最终的优化深度图。对每个像素点pi(xi,yi),应细化其相邻像素点p neighbor的深度。假设相机内参矩阵为K,Z为深度,P为相机坐标系对应点,Pi的法向为
在这里插入图片描述
M3VSNet理解_第5张图片
则有
M3VSNet理解_第6张图片
由于局部曲面的正交性和曲面一致性,这种关系显然是合理的。总之,可以通过中心点的深度和法向推断相邻点的深度Z neighbor。

考虑到法向在某些边缘或不规则表面的不连续性,引入关于参考图像的权重wi,使深度更符合几何一致性。
在这里插入图片描述
权重wi取决于pi与p neighbor间的梯度,这意味着梯度越大则深度优化的可靠性越低。考虑到8邻域,最终深度Z neighbor是8个不同方向的加权和的组合。最终深度是三维空间中正则化的结果,这提高了估计深度图的精度和连续性。
M3VSNet理解_第7张图片
M3VSNet理解_第8张图片

该模块与3du-Net相结合,共同细化二维和三维空间的深度,提高了深度的精度和连续性。

2.3多度量损失函数

考虑了特征匹配的不同角度,像素损失可以保证纹理细节的匹配,而特征损失可以利用更多的语义信息进行匹配。多度量损失函数L表示为像素损失Lpixel和特征损失Lfeature加权和。
在这里插入图片描述
多度量损失函数的关键思想是多视角的光度一致性。给定参考图像Iref与源图像Isrc,相应的内参矩阵为Kref和Ksrc,从Iref到Isrc的外参为T,对于Iref中的像素pi(xi,yi),Isrc中对应的像素p’i(x’i,y’i)可以计算为
在这里插入图片描述
利用双线性插值可以对从参考图像Iref到源图像Isrc映射点的重叠区域I’src进行采样。
在这里插入图片描述
对于遮挡区域(投影在Isrc之外),I’src中像素的值设置为零。

总结:抽象来说,通过参考图像像素坐标系→世界坐标系→源图像像素坐标系变换,计算参考图像上每一像素点在源图像上的对应点,进行重叠区域(掩码M)损失计算。

2.3.1像素损失

对于像素损失,只考虑参考图像Iref与其他源图像之间的光度一致性。其损失函数主要有三个部分。
① 光度损失比较Iref和I’src之间像素值的差异。为了消除光照变化的影响,加入每个像素梯度的影响。在这里插入图片描述
其中,m是掩码M中有效点的总数。
② 设置结构相似性损失(SSIM)Lssim来度量Iref和I’src之间的相似性。当Ire f与I’src相同时,运算S的值为1。M3VSNet理解_第9张图片
③ 最终细化深度图的平滑可以使深度图在一阶域和二阶域的陡峭度降低。在这里插入图片描述
其中,n是参考图像Iref中点的总数。
总像素损失Lpixel可以如下所示:在这里插入图片描述

2.3.2特征损失

由于预测深度图与特征金字塔间具有强相关性,使用预训练的VGG16而不是特征金字塔网络提取高级特征。
M3VSNet理解_第10张图片
取VGG16第8,15,22层特征图输出,对于每个特征,基于交叉多视图的概念构建损失。与像素损失相似,使用Fsrc中相应的像素p’i,从Fref到Fsrc的特征匹配表达如下:在这里插入图片描述
特征域具有更大的感受域,其灵感来自人类视觉系统通过其特征而不是单个像素感知场景。因此,非理想区域的障碍可以在一定程度上得到缓解。估计的最终深度将检测像素纹理值以外特征的相似性,这得益于语义信息。损失LF表示如下: 在这里插入图片描述
最终的特征损失函数是不同尺度特征的加权和,这提高了点云重建的鲁棒性和完整性。LF8代表预训练VGG16中第8层的特征。 在这里插入图片描述

三、实验

3.1实验环境

使用DTU数据集进行训练评估,使用与MVSNet和MVS²相同的训练集测试集分割。

参数设置:
训练阶段,只使用DTU的训练集,输入图像的分辨率是原始图片的裁剪版(640x512)。深度假设范围[425,935],深度采样数D=192。
batch_size=4,
4块NVIDIA RTX 2080Ti,
epochs=10,
adam优化器,
初始学习率l0=1e-3,每两个epoch降低0.5
损失权重:γ1=1、γ2=1、α1=0.1、α2=0.5、α3=0.5、λ1=0.8、λ2=0.2、λ3=0.067、β1=0.2,β2=0.8,β3=0.4
此外,每次迭代使用一个参考图像和两个源图像
在测试阶段,输入图像的分辨率为1600×1200。

3.2实验结果

M3VSNet理解_第11张图片
M3VSNet理解_第12张图片

加入特征损失,纹理细节更加完整。

3.3消融实验

分析M3VSNet中提出的不同模块的效果。主要进行了三个对比实验——金字塔特征聚合、法向深度一致性、多度量损失。

① 金字塔特征聚合:
该模块可以捕获从低级到高级表示的更多上下文信息。通过金字塔特征聚合,在很大程度上保证了匹配的一致性。M3VSNet理解_第13张图片

② 法向 深度一致性:
基于局部曲面切线与法线的正交性,引入法向深度一致性来正则化三维空间中的深度。绝对深度误差用于评估预测深度的质量,使用2mm、4mm和8mm范围内的深度误差百分比,与ground-truth对比(越高越好)。M3VSNet理解_第14张图片

③ 多度量损失包括像素损失和特征损失,它从匹配对应的不同角度学习内在约束。
在像素级损耗中损耗项的烧蚀研究中,使用绝对深度误差来评估不同损耗项的性能。
M3VSNet理解_第15张图片
如表所示,B是像素级仅有光度损失。G表示梯度一致性损失。SSIM表示为LSSIM,smooth表示为Lsmooth。G项和SSIM项略微改善了结果,smooth项贡献很大,有效改善了结果。
特征损失中损失项的烧蚀研究:
M3VSNet理解_第16张图片
添加1/16特征可以提高准确性,但会降低完整性。通过比较,1/2、1/4、1/8特征的组合效果最好。

3.4在Tanks & Temples上的泛化能力

为评估M3VSNet的泛化能力,使用具有室外大型场景高分辨率图像的坦克和庙宇数据集。
将在DTU数据集上训练好的模型不做任何微调,进行Tanks&Templates数据集的测试。

其包含各种分辨率为1920x1056、深度假设D=160的图像。深度融合过程中的另一个核心超参数是光度阈值。光度阈值越高,精度越高,但完整性越差。反过来,较低的光度阈值将引入更好的完整性,但精度较差。对于M3VSNet,光度阈值设置为0.6。
M3VSNet理解_第17张图片
M3VSNet理解_第18张图片
密集点云如图所示,对于家庭、francis、马、M60、黑豹、操场、火车、灯塔场景来说,这些点云是合理和完整的。
M3VSNet的健壮性在非理想区域(如操场场景中的沙子)中也发挥了重要作用。

参考文献:
[1] Huang B , Huang C , He Y , et al. M^3VSNet: Unsupervised Multi-metric Multi-view Stereo Network[J]. 2020.

你可能感兴趣的:(MVS-DL,pytorch,无监督学习,MVSNET,三维重建,法向深度一致性)