MVSNet论文笔记(2018年)

Yao, Y., Luo, Z., Li, S., Fang, T., Quan, L. (2018). MVSNet: Depth Inference for Unstructured Multi-view Stereo. In: Ferrari, V., Hebert, M., Sminchisescu, C., Weiss, Y. (eds) Computer Vision – ECCV 2018. ECCV 2018. Lecture Notes in Computer Science(), vol 11212. Springer, Cham. https://doi.org/10.1007/978-3-030-01237-3_47

摘要

作者提出了一种端到端深度学习架构,对多视图图像进行深度图推断。在网络中,作者首先提取深度视觉图像特征,然后通过可微分单应性变换在参考相机坐标系上构建三维代价体。接下来,应用三维卷积对初始深度图进行正则化和回归,然后用参考图像进行细化,最终输出推断的深度图。该框架使用基于方差的代价度量灵活地适应任意的n视图输入,该度量将多个特征映射到一个代价特征中。在大规模室内DTU数据集上对MVSNet进行了演示。通过简单的后处理,该方法不仅显著优于以前的最新技术,而且运行速度也快了好几倍。还在复杂的室外坦克和寺庙数据集上评估了MVSNet,在2018年4月18日之前,该方法在没有进行任何微调的情况下排名第一,显示出MVSNet具有很强的泛化能力。

1 引言

多视图立体视觉(MVS, Multi-view stereo)估计重叠图像的密集表示是计算机视觉领域研究了数十年的核心问题。传统的方法使用手工的相似度度量和工程正则化(例如,归一化互相关和半全局匹配)来计算对应的密集和恢复三维点。虽然这些方法在理想的传感器下显示了良好的结果,但它们存在一些共同的局限性。例如,场景的低纹理、镜面和反射区域使密集匹配难以处理,从而导致不完整的重建。在最近的MVS基准测试中报道,尽管目前最先进的算法在精度上表现得很好,但重建的完整性仍然有很大的改进空间。

最近卷积神经网络(CNNs)研究的成功也引发了人们对改进立体重建的兴趣。从概念上讲,基于学习的方法可以引入全局语义信息,如镜面和反射先验,以实现更鲁棒的匹配。有一些尝试在双视图立体匹配上,用基于学习的方式取代手工的相似度量或工程正则化。这些工作已经显示出了良好的结果,并在立体基准测试集中逐渐超过了传统的方法。事实上,立体匹配任务非常适合使用基于CNN的方法,因为图像对被预先纠正,因此问题成为不影响摄像机参数的水平像素级视差估计

然而,直接将学习到的双视图立体视觉扩展到多视图场景并不简单。虽然可以简单地对所有选择的图像对进行立体匹配,然后将所有成对的重建合并到一个全局点云,但这种方法不能充分利用多视图信息,导致不准确的结果。与立体匹配不同,输入到MVS的图像可能是任意的相机几何形状,这给基于学习的方法带来了一个棘手的问题

只有少数工作认识到这个问题,并尝试将CNN应用于MVS重建:SurfaceNet预先构造了彩色体素立方体(CVC, Colored Voxel Cubes),它将所有图像像素的颜色和摄像机信息结合到单个体积作为网络的输入。相比之下,基于学习的立体视觉机制(LSM, Learned Stereo Machine)直接利用可微分投影/非投影来实现端到端训练/推理。

然而,这两种方法都利用了规则网格的体积表示。由于3D体积巨大内存消耗的限制,他们的网络很难扩展: LSM只处理低体积分辨率的合成对象,SurfaceNet采用启发式分治策略,需要很长时间进行大规模重建。在2018年4月18日之前,现代MVS基准测试的主流仍被传统的方法所占据。

为此,作者提出了一种用于深度图推理的端到端深度学习架构,它每次计算一个深度图,而不是一次计算整个3D场景。与其它基于深度图的MVS方法类似,MVSNet以一个参考图像和几个源图像作为输入,并推断出参考图像的深度图。这里的关键是可微分单应性变换操作,它隐式地编码网络中的摄像机几何结构,从二维图像特征构建三维代价体,并实现端到端训练。

为了适应输入中任意数量的源图像,我们提出了一个基于方差的度量方法,它将多个特征映射到一个代价体特征中。这个代价体经过多尺度的三维卷积和回归出一个初始深度图。最后,利用参考图像对深度图进行细化,以提高边界区域的精度

MVSNet和以前基于学习的方法之间有两个主要的区别。首先,为了进行深度图推断,MVSNet的3D代价体是建立在相机的坐标系之上,而不是常规的欧几里得空间。其次,MVSNet将MVS重建解耦到较小的每一个视图深度图估计问题上,这使得大规模重建成为可能。

2 相关基础

2.1 多视图立体视觉重建(MVS Reconstruction)

根据输出表示法,MVS方法可分为1)直接点云重建、2)体素重建、3)深度图重建基于点云的方法直接基于三维点,通常依靠传播策略逐步强化重建。由于点云的传播是按顺序进行的,这些方法很难被完全并行化,而且通常需要很长的处理时间基于体素的方法将三维空间划分为规则的网格,然后估计每个体素是否附着在表面上。这种表示方法的缺点是空间离散化误差和高内存消耗。相比之下,深度图是所有表示方式中最灵活的。它将复杂的MVS问题解耦为相对较小的每一幅视图的深度图估计问题,该问题一次只关注一个参考图像和几个源图像。此外,深度图可以很容易地融合到点云或体素重建上。根据最近的MVS基准测试,在2018年4月18日之前最好的MVS算法都是基于深度图的方法。

2.2 基于学习的立体视觉(Learned Stereo)

与使用传统的手工图像特征和匹配度量不同,最近的立体视觉研究使用深度学习技术进行成对的补丁匹配。Han等人首先提出了一个深度网络来匹配两个图像补丁。Zbontar等人和Luo等人使用学习到的特征进行立体匹配和半全局匹配(SGM)进行后处理。除了成对匹配代价外,基于学习的方法也应用于代价正则化。SGMNet学习调整SGM中使用的参数,而CNN-CRF 在网络中整合了条件随机场优化,用于端到端立体视觉学习。在2018年4月18日之前,最先进的方法是GCNet ,它应用3D CNN来规范代价体,并通过soft argmin操作回归视差。在KITTI数据集中有报道,基于学习的立体视觉方法,特别是端到端的学习算法,明显优于传统的立体视觉方法。

2.3 基于学习的多视图的立体视觉(Learned MVS)

在2018年4月18日之前,研究者们对基于学习的MVS方法的尝试较少。哈特曼等人提出了学习到的多补丁相似度来替代传统的MVS重建的代价度量。第一个基于学习的处理MVS问题的算法是SurfaceNet ,它通过复杂的体素级视图选择预先计算代价体,并使用三维CNN进行正则化和推断表面体素。与MVSNet最相关的方法是LSM,其中摄像机参数在网络中被编码为投影操作,以形成代价体,并使用3D CNN对一个体素是否属于某一表面进行分类。然而,由于体素表示的普遍缺点,SurfaceNet和LSM的网络被限制在小规模的重建。它们要么应用分治策略,要么只适用于具有低分辨率输入的合成数据。相比之下,MVSNet专注于每次为一个参考图像生成深度图,这使得MVSNet可以直接自适应地重建一个大型场景。

3 MVSNet

3.1 网络架构

在这里插入图片描述

3.2 提取图片特征

MVSNet的第一步是提取N个输入图像的深度特征 ( F i ) i = 1 N (F_i)_{i=1}^N (Fi)i=1N进行密集匹配。采用八层二维CNN,将第3层和第6层的步长设置为2,将特征金字塔划分为三个尺度。在每个尺度内,应用两个卷积层来提取更高级别的图像表示。除了最后一层,每个卷积层之后都是一个批归一化(BN)层和一个校正后的线性单位(ReLU)。此外,类似于常见的匹配任务,参数在所有特征金字塔之间共享,以实现高效学习。二维网络的输出是32通道特征图,与输入图像相比,32通道特征图在各维度上缩小了4个。值得注意的是,虽然特征提取后图像帧缩小,但每个剩余像素的原始相邻信息已经被编码到32通道像素描述符中,防止了密集匹配丢失有用的背景信息。与简单地对原始图像进行密集匹配相比,提取的特征图显著提高了重建质量。
在这里插入图片描述

3.3 构建代价体

接下来,从提取的特征图和输入相机中建立1个3D代价体。虽然之前的工作使用规则网格划分空间,对于我们的深度地图推断任务,我们在参考相机坐标系上构造代价体。为简单起见,下面 I 1 I_1 I1表示为参考图像, ( I i ) i = 2 N (I_i)_{i=2}^N (Ii)i=2N表示源图像, ( K i , R i , t i ) i = 1 N (K_i,R_i,t_i)_{i=1}^N (KiRiti)i=1N表示与特征图对应的相机内参、旋转矩阵和平移。

3.4 可微分单应性变换(Differentiable Homography)

将所有特征图转换成参考相机的不同前平行平面,形成N个特征体 ( V i ) i = 1 N (V_i)_{i=1}^N (Vi)i=1N在深度d下,坐标映射从变换后的特征图 V i ( d ) V_i(d) Vi(d) F i F_i Fi通过平面变换 x ′ ∼ H i ( d ) ⋅ x x'∼H_i(d)·x xHi(d)x,其中“∼”表示投影等式, H i ( d ) H_i(d) Hi(d)表示第i个特征图与参考特征图在深度d处的单应性矩阵。设n1为参考相机的主轴,单应性用3×3矩阵表示:
H i ( d ) = K i ⋅ R i ⋅ ( I − ( t 1 − t i ) ⋅ n 1 T d ) ⋅ R 1 T ⋅ K 1 T      ( 1 ) \mathbf{H}_i(d)=\mathbf{K}_i \cdot \mathbf{R}_i \cdot\left(\mathbf{I}-\frac{\left(\mathbf{t}_1-\mathbf{t}_i\right) \cdot \mathbf{n}_1^T}{d}\right) \cdot \mathbf{R}_1^T \cdot \mathbf{K}_1^T ~~~~(1) Hi(d)=KiRi(Id(t1ti)n1T)R1TK1T    (1)
不失一般性,参考特征图F1的单应性本身是一个3×3单位矩阵。变换过程类似于经典的平面扫描立体视觉算法,除了可微双线性线性插值用于从特征图 ( F i ) i = 1 N (F_i)_{i=1}^N (Fi)i=1N采样像素而不是图像 ( I i ) i = 1 N (I_i)_{i=1}^N (Ii)i=1N作为连接二维特征提取和三维正则化网络的核心步骤,以可微的方式实现了变换操作,实现了深度图推理的端到端训练
在这里插入图片描述

3.4 代价度量

接下来,将多个特征体 ( V i ) i = 1 N (V_i)_{i=1}^N (Vi)i=1N聚合为一个代价体C。为了适应任意数量的输入视图,作者提出了一个基于方差的代价度量M用于N视图相似性度量。设W、H、D、F为输入图像的宽度、高度、深度采样数和特征图的通道数,V = W/4·H/4·D·F为特征体大小,成本度量被定义为映射 M : R V × ⋯ × R V ⏟ N → R V \mathcal{M}: \underbrace{\mathbb{R}^V \times \cdots \times \mathbb{R}^V}_N \rightarrow \mathbb{R}^V M:N RV××RVRV
C = M ( V 1 , ⋯   , V N ) = ∑ i = 1 N ( V i − V i ‾ ) 2 N      ( 2 ) \mathbf{C}=\mathcal{M}\left(\mathbf{V}_1, \cdots, \mathbf{V}_N\right)=\frac{\sum_{i=1}^N\left(\mathbf{V}_i-\overline{\mathbf{V}_i}\right)^2}{N}~~~~(2) C=M(V1,,VN)=Ni=1N(ViVi)2    (2)
其中 V i ‾ \overline{\mathbf{V}_i} Vi是所有特征体的平均体,上面所有操作都是按元素个体操作。
大多数传统的MVS方法以启发式的方式聚合参考图像和所有源图像之间的配对代价。相反,MVSNet的度量设计遵循的原则是所有的视图都应该对匹配成本的贡献相同,而不优先考虑参考图像。在2018年4月18日之前的工作应用了多个CNN层的平均操作来推断多补丁相似性。在这里,作者选择了“方差”操作,因为“均值”操作本身没有提供关于特征差异的信息,而且它们的网络需要CNN前层和CNN后层来帮助推断相似性。相比之下,基于方差的代价度量明确地测量了多视图特征的差异

3.5 代价体正则化

从图像特征计算出的原始成本体积可能会被噪声污染(例如,由于存在非兰伯表面或物体遮挡),并且应该结合平滑约束来推断深度图。MVSNet的正则化步骤被设计用于细化上述代价体C,以生成一个用于深度推断的概率体P。受最近基于学习的立体视觉和MVS方法的启发,MVSNet应用多尺度三维CNN进行代价体正则化。这里的四尺度(W、H、D、F为输入图像的宽度、高度、深度采样数和特征图的通道数)网络类似于3D版本UNet ,它使用编码器-解码器结构,以相对较低的内存和计算成本从一个大的接受域聚合邻近信息。为了进一步减少计算需求,MVSNet在第一个三维卷积层后,将32通道的成本体积减少到8通道,并将每个尺度内的卷积从3层更改为2层。最后一个卷积层输出一个1通道的体积。最后,沿深度方向应用softmax操作进行概率归一化。

在这里插入图片描述
所得到的概率体在深度图推断中是非常理想的,因为它不仅可以用于每像素的深度估计,而且还可以用于测量估计的置信度。根据深度重建的质量,从而得到了一种非常简洁而有效的离群值滤波策略。

3.6 深度图

初始估计
从概率体P中检索深度图D的最简单方法是像素级的赢家通吃(即argmax)。然而argmax操作不能产生亚像素估计,由于其不可微性,不能进行反向传播训练。相反,计算沿深度方向的期望值,即所有假设的概率加权和:
D = ∑ d = d min ⁡ d max ⁡ d × P ( d )      ( 4 ) \mathbf{D}=\sum_{d=d_{\min }}^{d_{\max }} d \times \mathbf{P}(d)~~~~(4) D=d=dmindmaxd×P(d)    (4)
其中P (d)为深度d处所有像素的概率估计。请注意,这个操作在[17]中也被称为soft argmin操作。它是完全可微的,能够近似argmax结果。虽然在代价体构建过程中,深度假设在[dmin,dmax]范围内均匀采样,但这里的期望值能够产生连续的深度估计。输出深度图(图2 (b))与二维图像特征图的大小相同,与输入图像相比,每个维度都缩小了4。
在这里插入图片描述
概率图
沿深度方向的概率分布也反映了深度估计的质量。虽然多尺度3D CNN具有很强的能力将概率正则化到单模态分布,但我们注意到,对于那些错误匹配的像素,它们的概率分布是分散的,不能集中在一个峰值上(见图2 ©)。

基于这一观察结果,将深度估计值的质量dˆ定义为地面真实深度在接近估计值的一个小范围内的概率。由于深度假设是沿着相机坐标系离散采样的,可以简单地取四个最近的深度假设的概率和来衡量估计质量。请注意,其它的统计测量值,如标准偏差或熵也可以在这里使用,但它们加入实验中,没有观察到这些测量值对深度图过滤有显著改进。然而,作者提出的概率和思想可以更好的对异常值滤波

深度图细化
虽然从概率体中检索到的深度图是一个合格的输出,但由于正则化过程中涉及的接受域较大,重构边界可能会出现过度平滑,这与语义分割和图像匹配中存在的问题类似。请注意,自然图像中的参考图像包含边界信息,因此使用参考图像作为指导来细化深度图。受最近的图像匹配算法的启发,在MVSNet的末端应用了一个深度残差学习网络。将初始深度图和调整后的参考图像合并为一个4通道的输入,然后通过三个32通道的二维卷积层,然后是一个1通道的卷积层来学习深度残差。然后将初始的深度图相加,以生成细化的深度图。最后一层不包含BN层和ReLU单元来学习负残差。此外,为了防止在一定的深度尺度上有偏差,预先调整了初始深度幅度在[0,1]的范围,并在细化后将其转换回来

3.7 损失

同时考虑了初始深度图和细化深度图的损失。使用真实深度图和估计的深度图之间的平均绝对差值作为我们的训练损失。由于真实深度地图并不总是完整的整个图像,我们只考虑那些具有效地真实标签的像素:
 Loss  = ∑ p ∈ p valid  ∥ d ( p ) − d ^ i ( p ) ∥ 1 ⏟ Loss  0 + λ ⋅ ∥ d ( p ) − d ^ r ( p ) ∥ 1 ⏟ Loss  1      ( 4 ) \text { Loss }=\sum_{p \in \mathbf{p}_{\text {valid }}} \underbrace{\left\|d(p)-\hat{d}_i(p)\right\|_1}_{\text {Loss } 0}+\lambda \cdot \underbrace{\left\|d(p)-\hat{d}_r(p)\right\|_1}_{\text {Loss } 1}~~~~(4)  Loss =ppvalid Loss 0 d(p)d^i(p) 1+λLoss 1 d(p)d^r(p) 1    (4)
其中Pvalid表示有效地真实像素的集合,d{p}像素p的地面真实深度值,dˆi{p}初始深度估计,dˆr{p}细化深度估计。在实验中,参数λ被设置为1.0。

4 实验分析

在这里插入图片描述
与其他多视图立体视觉方法类似,应用了一个深度图融合步骤,将来自不同视图的深度图集成到一个统一的点云表示中。基于可见性的融合算法被用于我们的重建,其中不同视点之间的深度遮挡和违反被最小化。为了进一步抑制重构噪声,在滤波步骤中确定每个像素的可见视图,并将所有重新投影深度的平均值作为像素的最终深度估计。然后将融合的深度图直接重新投影到空间中,生成三维点云。MVS重建图如图3所示。
在这里插入图片描述
定量结果见表1。虽然Gipuma在准确性方面表现最好,但MVSNet在完整性和整体质量方面都显著优于所有方法。如图4所示,MVSNet产生的点云最完整,特别是在那些无纹理和反射的区域,这通常被认为是MVS重建中最难恢复的部分。
在这里插入图片描述

5 消融实验

输入视图数量:2,3,5(最佳)
Image Features 提取: original 2D feature extraction network with a single 32-channel convolutional layer
Cost Metric:使用平均值和使用方差度量
Depth Refinement:影响不大
在这里插入图片描述
评价:MVSNet的核心贡献是将摄像机参数编码为可微分单应性变换,在摄像机坐标系上构建代价体,连接了二维特征提取和三维代价正则化网络。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值