【论文精读3】MVSNet系列论文详解-P-MVSNet

P-MVSNet全名为“P-MVSNet: Learning Patch-wise Matching Confidence Aggregation for Multi-View Stereo”,名字当中反映了论文的核心模块即基于学习方法的分块匹配置信聚合模块,乍一看有点难理解,但看完本文肯定很清楚啦。


本文是MVSNet系列的第3篇,建议看过【论文精读1】MVSNet系列论文详解-MVSNet之后再看便于理解。

一、问题引出

1.构建代价体的方差法存在问题

论文认为在构建代价体时使用方差法,即在对应像素点的特征间做方差的方法不利于逐像素的密集匹配,例如:

when the features of a pixel in adjacent non-reference images are very similar but do not match the corresponding feature in the reference image, a low matching cost will be generated for this pixel, which potentially tends to give it a wrong estimation in the depth map。
即最终推断深度图时基于参考图像,但可能存在非参考图上某像素的特征非常近似、而与参考图上该像素特征并不匹配的情况,由于方差计算各视图的特征作用平等,最终参考图像的深度图上该点深度值可能会出现问题

因此,在构建代价体(本文称为匹配置信体MCV)时应该强调参考图中像素点特征的重要性,该问题在下文2.1部分给出了一种类似方差的计算方法。

2.代价体直接soft argmin对噪声缺乏鲁棒性

the constructed plane-sweep volume contained in the corresponding frustum is essentially anisotropic – we can infer the corresponding depth map along the depth direction of the matching cost volume, but cannot get the same information along other directions. This fact can be used to guide the regularization of matching confidence volume.
即当前代价体可以沿深度方向推断深度信息,但无法在同深度上与邻域特征的深度信息进行混合、交流。

论文因此提出了基于学习的分块匹配置信体聚合模块(详见下文2.2部分),简单来说就是将原来的基本单位像素(pixel-wise)变成3x3的像素块(patch-wise),并让在同深度不同patch块、不同深度的3个邻域patch块进行信息交流和聚合。

二、网络模型

1.特征提取网络

该部分与MVSNet思路一致,都是共享参数的卷积神经网络来提取深度视觉特征,不过最终输出的特征图通道数为16而非32.

【论文精读3】MVSNet系列论文详解-P-MVSNet_第1张图片

2.学习分块匹配置信度(Learning patch-wise matching confidence)

传统MVSNet基于Plane Sweeping方法得到的代价体在本文中被称为像素级匹配置信体(pixel-wise Matching Confidence Volume)。
本文利用与方差法稍有区别的公式计算出该像素级匹配置信体(pixel-wise MCV),并指出为了增强匹配的鲁棒性和精度使用学习的方法将其聚合为分块匹配置信体(patch-wise MCV)。

2.1 计算pixel-wise MCV

原代价体(pixel-wise MCV)被表述为M=M(d,p,c),它反映了某代价体上某点p的关于深度d和特征通道c的置信度——假设p为特征图第c层的某像素,其真实深度为d的可能性,因此代价体M是一个形状为[Z, H/4, W/4, C]的张量,Z代表深度样本数,C代表特征图通道数。该置信度计算方法为:
【论文精读3】MVSNet系列论文详解-P-MVSNet_第2张图片
即将参考特征图F0上的点p投影至领域特征图Fj上的对应点p’,计算两者差值的平方(对所有邻域源图像的特征图),求和后取平均值作为e的负指数。
该方法与MVSNet的取方差法区别在于,方差法中各视图下的对应特征点起到了均等的作用,而该方法是让各源图像对应点与参考图特征点求差值,因此强调了参考图上特征的作用

2.2 学习方法聚合patch-wise MCV

在该步骤,论文通过学习方法(即卷积神经网络)将M(pixel-wise MCV)转为M*(patch-wise MCV),即以patch为基本单位,一个patch是指以点p为中心的3x3像素块,具体的神经网络公式表述如下:
pathch聚合的神经网络公式
先看第二个公式,Ma包含了两块:

  • ρ1是使用1x1x1为卷积核的3D卷积块(后跟BN和ReLU),这块的作用是聚合各点在不同通道的匹配置信信息
  • Ω1是指一个以p为中心的3x3patch块,ρ2是使用1x3x3为卷积核的3D卷积块(后跟BN和ReLU),该部分作用是混合每个patch内的匹配信息

第一个公式在Ma的基础上通过网络训练出最终的M*(patch-wise MCV)

  • Ω2是沿深度方向上相邻3个patch块的集合(union),ρ3是使用3x3x3为卷积核的3D卷积块(后跟BN),作用是在深度方向上聚合多个patch块的置信信息,最终使用tanh函数激活来正则化置信度。

3.深度图推断

  • 该过程分为三步,首先将得到的patch-wise MCV(M*)放入混合3D UNet得到隐式概率体(Latent Probability Volume,LPV),随后使用在LPV深度方向上进行softmax得到概率体,最终使用soft argmin方法对LPV沿深度方向求期望推断深度图。

  • 此外,论文不仅推断[H/4,W/4]的深度图,同时还利用上采样和一组网络层获取更大尺寸的patch-wise MCV(M*),并使用以上三步推断获得更高分辨率的深度图。

  • 该过程中的数字2和1分别代表尺度大小,L2是指[H/4, W/4]的正常尺度,L1是指[H/2, W/2]尺度。

3.1 Hybrid 3D Unet获取隐式概率体

与普通的3D Unet相比,论文所使用的Hybrid 3D Unet不同之处是使用了两种不同尺寸的卷积核,所在网络层也被叫做各向异性3D卷积块(anisotropic 3D convolutional block)和各向同性3D卷积块(isotropic 3D convolutional block),简单理解就是3x3x3这种各个方向尺度都相同的卷积核具有各向同性,而1x3x3这种就是各向异性。

Hybrid 3D Unet网络结构图如下所示:
【论文精读3】MVSNet系列论文详解-P-MVSNet_第3张图片

  • 在较浅层,分别使用两种各向异性的卷积核1x3x3和7x1x1进行卷积:

    • 1x3x3主要是在同一个采样深度平面上融合信息
    • 7x1x1可以在深度方向上扩大感受野,以较低的计算成本利用全局信息
  • 在较深层和输出层使用各向同性(正常的)3x3x3卷积核来融合更多上下文信息

3.2 隐式概率体V2 -> 概率体P2

对上一步输出的隐式概率体V2,沿深度使用softmax,得到各点沿深度方向概率和为1的概率体P2

3.3 概率体P2->深度图DL2

使用soft argmin操作概率体P2,即沿深度方向求各点深度期望推断深度图DL2

3.4 更高分辨率深度图推断

  • (1)利用特征提取步骤中解码获得的特征图F‘0[H/2, W/2, C],与3.1得到的隐式概率体V2上采样后的隐式概率体V2’[H/2, W/2, Z]沿通道方向级联得到一个尺寸为[H/2,W/2, C+Z]的网络输入
  • (2)输入通过一个包含三个2D卷积层的网络,分别输出通道数为C+Z、Z、Z,其中前两层附加了BN和ReLU操作,最后输出隐式概率体V1
  • (3)对隐式概率体V1重复3.2和3.3的操作得到具有更高分辨率的深度图DL1

4.Loss损失函数

对于深度回归问题使用真实深度图和预测深度图(L1和L2分辨率)的差异来设计损失函数,即
【论文精读3】MVSNet系列论文详解-P-MVSNet_第4张图片
对深度图L1和L2上的有深度标签的点ɸ求深度差值的均值,并使用α来控制两项的重要性。

5.点云重建(后处理操作)

由于重建结果包含多个深度图,论文指出"a concern is that they may not agree well with each other on common regions due to errors in the estimated depths."
即 “一个令人担忧的问题是,由于估计深度的误差,它们在共同区域上可能不太一致。”为了剔除错误预测的深度,论文引入两个滤波准则,其实就是MVSNet中的两种后处理准则稍加变化和应用,然后对不同深度图进行融合并重建点云。

  • 深度置信度准则(depth-confidence criterion) 去除明显不可信的预测
  • 深度一致性准则(depth-consistency criterion) 舍弃相邻图像间不一致的深度值

深度置信度准则部分论文说的很清楚,就是将概率体深度方向最大的概率值(对L1置信度则是加上L2上采样后的置信度)作为置信度图上某点p的值,实验时若小于0.5则舍弃该点(不可信)。

而深度一致性准则就是像MVSNet一样做重投影并使其满足2视图一致性(MVSNet要求3视图一致性),特殊的地方在于第一次投影点p时给出了选择另一视角下对应点p’(用来做重投影的点)的不同方案,如下图
【论文精读3】MVSNet系列论文详解-P-MVSNet_第5张图片

  • (a)最近邻深度:选择离真实对应点p’距离最近的点a,论文红色部分表述应该有问题
  • (b)标准双线性深度:直接使用双线性插值获取并使用点p’(在真实相机参数可用情况下选择)
  • (c) 深度一致优先深度:使用与点p对应3D点P真实深度最接近的点q(论文提出在真实相机参数时使用)

三、总结

  • 这篇论文对于一些模型的操作步骤讲解清晰,很多MVSNet没有详细讲的细节给出了说明,建议基础不好的朋友阅读原文以加深对MVS系列的理解
  • 起了很多新名字,“代价”cost几乎都被换成了“置信”confidence,MCV,LPV等等,以及各向同性isotropic、各向异性anstropic,其实都是已有或很简单的概念但都给了令人眼前一黑的名字…初看有点唬人
  • 论文两个核心板块,本质都是在卷积核的尺寸上做文章
    • 基于学习的分块置信体代价聚合,通过设计特定卷积网络对通道、patch、深度之间的置信信息进行混合、聚合,通过1x1x1,1x3x3,3x3x3的卷积核来实现
    • 混合3DUnet模块将置信体变成概率体,通过对普通的3DUnet的浅层卷积核做变化,提出各向异性的1x3x3融合同深度特征通道信息、7x1x1扩大深度感受野,最后再在深层用各向同性3x3x3融合上下文信息
    • 从消融实验的结果来看,这两者还是挺有用的,为我们操作卷积核提供了一个不错的实验思路

你可能感兴趣的:(深度学习,人工智能,计算机视觉,三维重建)