当前位置: 代码迷 >> 综合 >> 《Depth Inference for Unstructured Multi-view Stereo》论文阅读笔记
  详细解决方案

《Depth Inference for Unstructured Multi-view Stereo》论文阅读笔记

热度:84   发布时间:2024-01-31 05:49:23.0

MVSNet: 《Depth Inference for Unstructured Multi-view Stereo》论文阅读笔记

  • 介绍
  • 相关工作
  • MVSNet
    • Image Features
    • Cost Volume
    • Depth Map
    • Loss

介绍

Multi-view stereo (MVS)从重叠图像中估计出密集表示,是计算机视觉几十年来广泛研究的核心问题。传统方法使用手工制作的相似性度量和工程正则化(如归一化互相关连和半全局匹配)来计算密集对应和恢复三维点。虽然这些方法在理想的朗伯场景下显示了良好的效果,但它们也存在一些常见的局限性。例如,场景的低纹理、高光和反射区域使稠密匹配变得难以处理,从而导致不完全重建。在最近的MVS基准中报道[1,18],虽然目前最先进的算法[7,36,8,32]在精度上表现很好,但重建完整性仍有很大的提升空间。近年来卷积神经网络(CNNs)研究的成功也引发了人们对提高立体重建的兴趣。在概念上,基于学习的方法可以引入全局语义信息,如镜面先验和反射先验,从而提高匹配的鲁棒性。在arXiv上有一些尝试,通过替换手工制作的相似度度量[39,10,23,11]或工程正则化[34,19,17]的二视图立体匹配。他们已经显示了良好的结果,并逐渐超过传统的方法在立体声基准。事实上,立体匹配任务非常适合应用基于cnn的方法,因为图像对是预先校正的,因此问题变成了不需要考虑相机参数的水平视差估计。
然而,直接将学到的两视图立体视觉扩展到多视图场景并非易事。虽然可以简单地对所有选择的图像进行立体匹配预校正,然后将所有成对重建的图像合并到全局点云中,但这种方法不能充分利用多视点信息,导致结果的准确性较差。与立体匹配不同,输入到MVS的图像可以是任意的相机几何形状,这给学习方法的使用带来了一个棘手的问题。只有少数的作品认识到这个问题,并尝试将CNN应用于MVS重建:SurfaceNet[14]预先构造了彩色体素立方体(colorvoxel Cubes, CVC),将所有图像像素颜色和相机信息组合到一个单独的体块中作为网络的输入。相比之下,学习立体机器(LSM)[15]直接利用可微投影/不投影来实现端到端训练/推理。然而,这两种方法都利用了规则网格的体积表示。由于3D海量内存消耗的限制,其网络规模难以扩大:LSM只处理低体积分辨率的合成对象,而SurfaceNet采用启发式的分治策略,大规模重建耗时较长。目前,现代MVS基准的主要板块仍被传统方法占据着。
为此,我们提出了一种用于深度图推理的端到端深度学习架构,该架构每次只计算一个深度图,而不是一次计算整个3D场景。类似于其他基于深度图的MVS方法[35,3,8,32],本文提出的网络MVSNet以一张参考图像和几张源图像作为输入,推导出参考图像的深度图。这里的关键是可微单应性翘曲操作,它对网络中的摄像机几何图形进行隐式编码,从2D图像特征构建3D成本量,并实现端到端训练。为了适应输入中任意数量的源图像,我们提出了一种基于方差的度量,将多个特征映射为一个成本特征。这个成本体积然后经历多尺度的3D卷积,并返回初始深度图。最后,利用参考图像对深度图进行细化,提高边界区域的精度。我们的方法与之前学习的方法有两个主要区别[15,14]。首先,为了进行深度图推断,我们的3D成本体积是建立在摄像机截锥台而不是正则的欧几里得空间上。其次,我们的方法解耦MVS重建到更小的问题每视图深度地图估计,使大规模重建成为可能。
我们在大规模DTU数据集上训练和评估了提出的MVSNet[1]。大量的实验表明,通过简单的后处理,MVSNet可以实现完整性和总体质量方面执行所有竞争方法。此外,我们还演示了该网络在户外的泛化能力坦克和寺庙基准[18],其中MVSNet排名第一(4月前)。(2018年18日)超过所有提交,包括开源MVS方法(例如,COLMAP[32]和OpenMVS[29])和商业软件(Pix4D[30]),没有任何微调。

相关工作

MVS重建. 根据输出表示,MVS方法可分为
1)直接点云重建[22,7],
2)体积重建[20,33,14,15]
3)深度图重建[35,3,8,32,38]。
基于点云的方法直接对三维点进行操作,通常依靠传播策略来逐步细化重构。由于点云的传播是顺序进行的,这些方法很难完全并行化,处理时间长。基于体积的方法将三维空间划分为规则的网格,然后估计每个体素是否附着在表面上。这种表示的缺点是空间离散化错误和高内存消耗。相比之下,深度图是最灵活的表示方法。它将复杂的MVS问题解耦为相对较小的逐视图深度地图估计问题,即一次只关注一幅参考和少数源图像。此外,深度图可以很容易地融合到点云[26]或体积重建[28]。根据最近的MVS基准[1,18],目前最好的MVS算法[8,32]都是基于深度图的方法。
Learned Stereo. 与传统的手工图像特征和匹配度量[13]不同,最近的立体视觉研究将深度学习技术用于更好的成对patch匹配。Han等[10]首先提出了一个深度网络来匹配两个图像patch。Zbontar等人[39]和Luo等人[23]使用所学特征进行立体匹配和半全局匹配(SGM)[12]后处理。除了成对匹配代价外,学习技术还应用于代价正则化。SGMNet[34]学习调整SGM中使用的参数,而CNN-CRF[19]在网络中集成条件随机场优化,用于端到端立体学习。最近最先进的方法是GCNet[17],它使用3D CNN来规范成本量,并通过软argmin操作来回归视差。KITTI banchmark[25]报道,基于学习的立体声,特别是那些端到端学习算法[24,19,17],显著优于传统的立体声方法。
Learned MVS. 很少尝试学习MVS方法。Hartmann等人提出了学习的多patch相似度[11]来代替传统的MVS重建代价度量。针对MVS问题,首先基于学习的管道是SurfaceNet[14],它通过复杂的体素视图选择预先计算成本体积,并使用3D CNN进行规则化和推断表面体素。
与我们最相关的方法是LSM[15],其中摄像机参数在网络中编码作为投影操作,形成cost volume,使用3D CNN对体素是否属于曲面进行分类。然而,由于体积表示的普遍缺点,表面网和LSM的网络只能进行小规模的重建。他们要么采用分治策略[14],要么只适用于低分辨率输入[15]的合成数据。相比之下,我们的网络专注于每次生成一个参考图像的深度图,这允许我们自适应地直接重建一个大场景。
在这里插入图片描述

MVSNet

本节描述了所提议的网络的详细架构。MVSNet的设计强烈遵循了摄像机的几何规则,并借鉴了之前MVS方法的经验。在接下来的章节中,我们将比较我们的网络的每一步与传统的MVS方法,并展示我们的基于学习的MVS系统的优势。Fig. 1显示了MVSNet的完整架构。

Image Features

MVSNet的第一步是对 N N 个输入图像 { I i } i = 1 N \{I_i\}^N_{i=1} 提取深度特征 { F i } i = 1 N \{Fi\}^N_{i=1} 进行稠密匹配。我们使用了一个8层的二维CNN,将第3层和第6层的跨距设置为2,将feature towers划分为3个尺度。在每个尺度内,应用两个卷积层来提取更高层次的图像表示。每个卷积层后面跟着一个批处理标准化(BN)层和一个整流线性单元(ReLU),除了最后一层。此外,与常见的匹配任务相似,参数在所有特征塔之间共享,以提高学习效率。
2D网络的输出是N个32通道的feature map,每个维度都比输入图像小4个。值得注意的是,虽然特征提取后图像帧被缩小,但每个剩余像素的原始邻近信息已经被编码到32通道像素描述符,防止密集匹配丢失有用的上下文信息。与简单地对原始图像进行密集匹配相比,所提取的feature map大大提高了重构质量(见第5.3节)。

Cost Volume

下一步是从提取的特征图和输入相机构建一个3D成本量。之前的工作[14,15]使用规则网格划分空间,而我们的深度图推理任务是在参考摄像机内外参上构建成本体积。为简单起见,下面我们将 I 1 I_1 表示为参考图像, { I i } i = 2 N \{I_i\}^N_{i=2} 为源图像,和 { K i , R i , t i } i = 2 N \{K_i,R_i,t_i\}^N_{i=2} 对应于特征图的相机内参、旋转和平移。
Differentiable Homography 将所有特征图弯曲到参考相机不同的前列平面,形成N个特征卷 { V i } i = 1 N \{V_i\}^N_{i=1} 。从变形特征图 V i ( d ) Vi(d) 到深度 d d 的坐标映射由平面变换确定x ~ Hi(d)·x,其中‘~’表示投影等式, H i ( d ) Hi(d) 表示第 i t h i^{th} 个特征图和参考特征图在深度 d d 处的单应性。设 n 1 n_1 为参考相机的主轴,单应性用3×3矩阵表示:
在这里插入图片描述
不失一般性,参考特征图 F 1 F_1 的单应性本身是一个3×3的单位矩阵。翘曲过程与经典的平面扫描立体视觉[5]相似,不同之处是使用可微双线性插值从特征图 { F i } i = 1 N \{F_i\}^N_{i=1} 中采样像素而不是图像 { I i } i = 1 N \{I_i\}^N_{i=1} 。翘曲操作作为连接二维特征提取和三维正则化网络的核心步骤,以可微的方式实现,实现了深度映射推理的端到端训练。
Cost Metric 然后我们聚合多个特性卷 { V i } i = 1 N \{V_i\}^N_{i=1} 到1成本体积 C C 。为了适应任意数量的输入视图,我们提出了一个基于变量的代价度量M来度量n视图的相似性。令 W , H , D , F W, H, D, F 为输入图像宽度,高度,深度样本数和特征图的通道数, V = W 4 ? H 4 ? D ? F V =\frac{W}{4}·\frac{H}{4}·D·F 特征体积大小,我们的成本指标映射 M : R V × . . . × R V ? N ? R V M:\underbrace{\Bbb R^V\times...\times \Bbb R^V}_{N}\longrightarrow \Bbb R^V :
在这里插入图片描述
其中 V i ? \overline{V_i} 是所有特性卷的平均值,上面的所有操作都是基于元素的。
大多数传统的MVS方法以启发式的方式将参考图像和所有源图像的代价两两相加。相反,我们的度量设计遵循这样一种理念,即所有视图都应该对匹配成本做出相同的贡献,并且不优先于参考图像。我们注意到,最近的工作[11]对多个CNN层使用均值操作来推断多个patch的相似度。这里我们选择“方差”操作,因为“均值”操作本身不提供关于特征差异的信息,而且它们的网络需要CNN前后的层来帮助推断相似度。相反,我们基于差异的成本度量明确地度量了多视图特性的差异。在随后的实验中,我们将证明这种显式的差异测量方法提高了验证的准确性。
Cost Volume Regularization 从图像特征计算出的原始成本体积可能会受到噪声污染(例如,由于存在非朗伯曲面或物体遮挡),因此应该结合平滑约束来推断深度图。我们的正则化步骤旨在精炼上述成本量 C C ,以生成用于深度推断的概率量 P P 。受最近基于学习的立体声[17]和MVS[14,15]方法的启发,我们采用多尺度3D CNN进行成本体积正则化。这里的四尺度网络类似于一个3D版本的UNet[31],它使用编解码器结构从一个较大的接受域聚集邻近的信息,而内存和计算成本相对较低。为了进一步降低计算需求,我们在第一个3D卷积层之后将32通道的开销减少到8通道,并改变每个尺度内的卷积从3层到2层。最后的卷积层输出一个1通道的音量。最后,在深度方向上应用softmax运算进行概率归一化。
所得到的概率体在深度图推断中是非常可取的,因为它不仅可以用于逐像素深度估计,而且可以用于估计置信度的测量。我们将在3.3节说明,通过分析深度重构的概率分布,可以很容易地确定深度重构的质量,从而在4.2节给出一个非常简洁而有效的离群值滤波策略。

Depth Map

在这里插入图片描述

Initial Estimation 从概率量P中检索深度图D的最简单方法是像素上的最大值[5](即argmax),然而由于argmax操作的不可微性,不能产生亚像素估计,也不能用反向传播进行训练。相反,我们计算沿深度方向的期望值,即对所有假设的概率加权求和:
在这里插入图片描述
其中 P ( d ) P(d) 是深度为d的所有像素点的概率估计。注意,该操作在[17]中也称为软argmin操作。它是完全可微的,可以近似argmax结果。在成本量建设期间,深度假设在范围内均匀采样 [ d m i n , d m a x ] [d_{min}, d_{max}] ,这里的期望值可以产生连续的深度估计。输出的深度图(Fig.2 (b))与二维图像特征图大小相同,与输入图像相比每个维度缩小4。
Probability Map 沿深度方向的概率分布也反映了深度估计的质量。虽然多尺度3D CNN有很强的将概率规整为单一模态分布的能力,但是我们注意到对于那些误匹配的像素点,其概率分布是分散的,不能集中到一个峰值(Fig.2 ?)。在此基础上观察,我们定义的质量深度估计?d地面实况深度的概率是附近的一个小范围内估算。当深度假设沿着摄像机截锥被离散采样时,我们只需对四个最接近的深度假设取概率和来衡量估计质量。请注意,这里也可以使用其他统计度量,如标准差或熵,但在我们的实验中,我们没有观察到深度图过滤的这些度量值有显著改进。此外,我们的概率和公式可以更好地控制离群值滤波的阈值参数。
Depth Map Refinement 虽然从概率体中检索到的深度图是一个合格的输出,但由于正则化涉及到较大的接受域,重构边界可能存在过平滑问题,类似于语义分割[4]和图像matting的问题[37]。请注意,natural中的参考图像包含边界信息,因此我们使用参考图像作为细化深度图的指导。受最近的图像抠图算法[37]的启发,我们在MVSNet的末端应用了一个深度残差学习网络。初始深度图和调整大小的参考图像连接为4通道输入,然后通过输入3个32通道的二维卷积层,接着1个1通道的卷积层,学习深度残差。然后将初始深度映射添加回去,以生成细化的深度映射。最后一层不包含BN层和如ReLU单元的负残差。此外,为了防止在某个深度尺度上出现偏差,我们将初始深度大小预缩放为range[0,1],并在细化后将其转换回来。

Loss

同时考虑了初始深度图和改进深度图的损失。我们使用地面真实深度图和估计深度图之间的平均绝对差作为我们的训练损失。由于ground truth depth map在整个图像中并不总是完整的(见第4.1节),我们只考虑那些有有效ground truth标签的像素:
在这里插入图片描述
式中, p v a l i d p_{valid} 为有效ground truth像素点集合, d ( p ) d(p) 为像素点 p p 的ground truth深度值,
d i ^ ( p ) \hat{d_i} (p) 博士最初的深度估计和 d r ^ ( p ) \hat{d_r}(p) 精制深度估计。在实验中,参数 λ \lambda 被设置为1.0。

  相关解决方案