ECCV 2018|MVSNet|非结构化多视图立体视觉的深度推断

ECCV 2018|MVSNet|非结构化多视图立体视觉的深度推断

题目:MVSNet: Depth Inference for Unstructured Multi-view Stereo

论文:MVSNet: Depth Inference for Unstructured Multi-view Stereo | SpringerLink

会议:ECCV

年份:2018

在计算机视觉领域,多视图立体(MVS)技术一直是研究的热点,旨在从多幅重叠图像中恢复出场景的三维结构。本文精读的论文 “MVSNet: Depth Inference for Unstructured Multi-view Stereo” 提出了一种端到端的深度学习架构 MVSNet,为 MVS 问题带来了全新的解决方案。 

一、研究背景与挑战

传统 MVS 方法依赖手工制作的相似性度量和工程化的正则化手段,在理想的朗伯场景下表现尚可,但面对低纹理、镜面反射区域时,密集匹配变得极为困难,导致重建结果不完整。尽管当前的一些算法在精度上有不错的表现,但重建完整性仍有很大提升空间。

虽然卷积神经网络(CNN)的方法在立体匹配中取得了一定成功,但直接将其扩展到多视图场景并非易事。多视图输入图像的相机几何结构复杂多样,现有基于学习的 MVS 方法,如 SurfaceNet 和 Learned Stereo Machine(LSM),因采用规则网格的体素表示,存在内存消耗大、难以扩展等问题,无法有效处理大规模重建任务。

二、MVSNet 架构详解

整体架构如图1所示,共分为特征提取、可微单应性变换、代价体正则化和深度图细化四个部分

 

图1.MVSNet的网络设计。输入图像将经过二维特征提取网络和可微单应性变换,以生成代价体。最终的深度图输出由经过正则化的概率体回归得到,并利用参考图像进行细化。

1.特征提取

图2.特征提取 使用八层二维卷积,输入通道3,输出通道32,尺寸变为四分之一

MVSNet 的第一步是提取 N 个输入图像​的深度特征​,以用于密集匹配,密集匹配就是要在多视图图像中找到对应的像素点,从而推断深度信息。这里应用了一个八层的二维卷积神经网络(2D CNN)。其中,第 3 层和第 6 层的步长被设置为 2,目的是将特征塔划分为三个尺度 。在每个尺度内,使用两个卷积层来提取更高级的图像表示。除了最后一层之外,每个卷积层后面都紧跟着一个批归一化(BN)层和一个修正线性单元(ReLU) 。此外,与常见的匹配任务类似,为了实现高效学习,所有特征塔之间共享参数。

经过二维卷积神经网络处理后,会输出 N 个特征图,每个特征图具有 32 个通道。同时,这些特征图在长和宽等维度上,尺寸相较于输入图像缩小为原来的四分之一。这种尺寸的变化是通过卷积操作中的步长等参数设置实现的,在减少数据量的同时,能够聚焦于更具代表性的特征提取 。

2.代价体(cost volume)构建

第二步是利用提取的特征图和输入的相机参数构建一个3D代价体。以往的工作使用规则网格划分空间,然而对于我们的深度图推断任务,我们在参考相机的视锥上构建代价体。为简化表述,在后续内容中,我们将I_1记为参考图像(Reference Image),记为源图像(Source Image),记为与特征图相对应的相机内参、旋转和平移信息。

在多视图立体视觉(MVS)任务中,构建代价体是关键步骤。传统方法采用规则网格划分空间构建代价体,这种方式在处理大规模场景时存在内存消耗大等问题。而本文提出在参考相机视锥上构建代价体,基于此构建代价体更符合相机成像的几何原理。通过将I_1设为参考图像,其他作为源图像,结合相应的相机参数,可以确定不同图像特征在3D空间中的对应关系,进而构建用于深度图推断的代价体,为后续从代价体中获取深度信息奠定基础。

2.1可微单应性变换(Differentiable Homography)

在二维平面上,单应性变换可以用一个 3×3 的齐次变换矩阵 H 来表示:

设平面上一点 p=[x,y,1]^T 在变换前的齐次坐标,变换后的点p'=[x',y',1]^T,则它们之间的关系可以表示为:

其中 λ 是一个非零的尺度因子

为构建代价体,MVSNet 将所有特征图通过可微单应性变换,映射到参考相机的不同前平行平面上,形成 N 个特征体。其核心在于通过单应性矩阵实现坐标映射。矩阵定义如下:

  • 假设n_1是参考相机的主轴(通常指相机的光轴方向)
  • 其中,K_iK_1分别是第i个相机和参考相机的内参矩阵,内参矩阵包含了相机的内部参数信息,如焦距、主点位置等,这些参数用于将图像平面上的像素坐标转换为相机坐标系中的坐标;
  • R_iR_1分别是第i个相机和参考相机的旋转矩阵,旋转矩阵描述了相机在空间中的旋转姿态,即相机相对于某个固定坐标系的旋转情况;
  • t_it_1分别是第i个相机和参考相机的平移向量,平移向量表示相机在空间中的位置,即相机相对于某个固定点的平移情况;
  • I是3*3的单位矩阵.

前平行平面在计算机视觉和多视图立体视觉(MVS)的相关研究中,通常是指与参考相机的成像平面平行且垂直于相机光轴的一系列平面。

2.2基于方差的代价度量(Variance Metric)

在构建代价体时,需要将N个特征体聚合为一个代价体C。这里的代价度量就是用于完成这个聚合操作,并且要能够衡量多视图之间的相似性,以便后续进行深度推断。为了适应任意数量的输入视图(因为实际应用中输入视图数量可能不同),论文提出了一种基于方差的代价度量M 。计算公式如下:

这个公式本质上是计算每个特征体与平均特征体之间的方差(平均平方差),方差越大说明特征体之间差异越大,在代价体中对应的位置代价就越高,通过这种方式衡量不同视图特征之间的差异,为后续深度推断提供依据 。例如,如果某个位置在不同视图特征体中的差异大,说明在这个位置上视图间的一致性差,深度估计可能存在不确定性,在代价体中就会体现为较高的代价。

2.3代价体正则化

原始代价体可能受噪声污染,因此需要进行正则化处理。MVSNet 借鉴了基于学习的立体和 MVS 方法,应用多尺度三维卷积神经网络(3D CNN)进行代价体正则化。这里的四尺度网络类似于三维版本的 UNet 。UNet 采用编码器 - 解码器结构,编码器逐步缩小特征图尺寸以获取全局信息(聚合大感受野的邻域信息 ),解码器再逐步恢复尺寸并融合不同尺度信息。在三维场景下,这种结构可以在相对较低的内存和计算成本下,有效地处理三维的代价体数据,获取不同尺度下的邻域信息,对代价体进行更好的处理。

为进一步降低计算需求,在第一个 3D 卷积层之后,将 32 通道的代价体减少到 8 通道,减少了数据量。同时,将每个尺度内的卷积层数从 3 层改为 2 层。最后的卷积层输出一个1通道的代价体。在深度方向上应用Softmax操作进行概率归一化。生成的概率体用于逐像素的深度估计和衡量估计的置信度。

3.深度图(depth map)生成

图2.

  • (a)参考图像 该图像是 DTU 数据集 [1] 中扫描编号为 114 的一张参考图像;
  • (b)深度图 深度图中的每个像素值表示场景中对应点的深度,用不同颜色区分不同深度,直观展现场景的三维结构,是深度推断任务的核心输出结果;
  • (c)概率分布 展示了一个内点像素(上半部分)和一个外点像素(下半部分)的概率分布情况。横坐标对应不同的深度值 ,纵坐标代表概率,红色线表示通过soft argmin操作得到的结果。内点像素的概率分布集中在某一深度值附近,说明对该像素深度估计的置信度高;而外点像素的概率分布较为分散,意味着其深度估计不确定性大,难以确定准确深度 ;
  • (d)概率图 将每个像素点在深度推断过程中的概率信息进行可视化呈现。不同颜色代表不同概率值,整体反映场景中各点深度估计的概率情况。从图中可看出,外点像素由于概率分布分散(如 (c) 中所示 ),在概率图中呈现出较低的概率估计,可用于辅助判断深度估计的可靠性,以及后续进行离群点过滤等操作。

3.1初始深度图估计

从概率体P中获取深度图D,最直接的方法是逐像素的 “胜者全得”(winner-take-all )策略,也就是使用argmax操作。该操作选取概率体中每个像素位置概率最大的深度值作为该像素的深度估计。但这种方法存在明显缺陷,一方面,它无法实现亚像素级别的深度估计,得到的深度值只是离散的假设深度值中的一个,精度有限;另一方面,argmax操作是不可微的,在基于深度学习的网络训练中,无法通过反向传播算法来更新网络参数,这就限制了网络的优化和性能提升。

这篇论文采用计算沿深度方向期望值的方式,即对所有深度假设进行概率加权求和。计算公式为:

 

P(d)是在深度d处所有像素的概率估计值,该操作被称为soft argmin操作

 经过上述操作得到的输出深度图(如图 2 (b) 所示 ),其尺寸与二维图像特征图相同。由于在前面的特征提取过程中,特征图在每个维度上相对于输入图像缩小了四倍,所以输出深度图在各维度上也比输入图像缩小了四倍 。

3.2概率图与深度估计质量评估

沿深度方向的概率分布能够体现深度估计的质量情况。多尺度3D CNN虽然在将概率规整为单峰分布上表现出很强的能力,但我们发现,对于那些出现错误匹配的像素而言,它们的概率分布是离散、分散的,无法汇聚到一个峰值上(可参考图2(c) )。也就是说,正确匹配的像素在其真实深度附近的概率会很高且集中,呈现出明显的单峰形态;而错误匹配的像素,其概率在不同深度假设上分布得较为均匀,没有突出的峰值,这表明对这些像素的深度估计存在较大的不确定性。

基于上述的观察结果,对深度估计值d的质量进行了定义,具体是将其定义为真实深度处于该估计值附近一个小范围之内的概率。由于深度假设是沿着相机视锥体进行离散采样的,所以论文中采用了一种简单的方法,即直接计算与估计深度最邻近的四个深度假设的概率总和,以此来衡量深度估计的质量。之所以这样做,是因为在离散采样的体系下,真实深度大概率会在估计深度附近的几个离散取值之中,通过计算这几个临近深度假设的概率和,就能够较为快捷且有效地对深度估计的可靠程度做出评估。

此外,像标准差或熵这类其他的统计度量方式,同样也可以用于衡量深度估计的质量。标准差能够反映概率分布的离散程度,离散程度越小,也就意味着概率分布越集中,相应地深度估计质量可能就越高;熵可以用来度量概率分布的不确定性,熵值越低,则表示不确定性越小,即深度估计更为可靠。然而,在后续所开展的实验中发现,采用这些统计度量方式,对于深度图的过滤操作而言,并没有带来显著的效果提升。此外,论文中所采用的概率总和的计算方式,在对离群点过滤的阈值参数控制方面表现得更为出色,能够更精准地设定合适的阈值,从而有效地筛选出可靠的深度估计值,过滤掉不可靠的离群点 。

3.3深度图细化

由于正则化过程中感受野较大,初始深度图的重建边界可能过度平滑。在 MVSNet 末端应用深度残差学习网络。将初始深度图和调整尺寸后的参考图像拼接,形成 4 通道输入 。先经过三个 32 通道的二维卷积层提取特征,再通过一个单通道卷积层学习深度残差。最后一层不包含BN层和ReLU单元,以学习负残差。

4损失函数

MVSNet 同时考虑初始深度图和细化深度图的损失,使用真实深度图与估计深度图的平均绝对差作为训练损失。由于真实深度图在图像中并非总是完整的,因此只计算具有有效真实标签的像素损失,通过设置权重参数平衡两个损失项。

表示具有有效真实标签的像素集合,是像素 的真实深度值,是初始深度估计值, 是细化后的深度估计值。公式中的 Loss 0 是初始深度估计值与真实深度值之间的L_1 范数(即绝对差),Loss 1 是细化深度估计值与真实深度值之间的 L_1 范数,参数\lambda在实验中设置为 (1.0) 。通过这种方式,损失函数综合考虑了初始深度图和细化深度图与真实深度图的差异,并且通过参数 \lambda来平衡这两部分损失的权重,以实现网络的优化训练。

三、总结

MVSNet算法的整体流程:

输入多张图片,其中第一张是参考图像,其他为源图像。网络会用一套共享参数的卷积神经网络提取特征,得到特征图。将特征图通过可微单应性变换,放到参考相机的不同深度平面上,形成多个特征体。然后用基于方差的度量方法,把这些特征体综合起来,变成一个代价体。用多尺度 3D 卷积神经网络对代价体进行处理。处理完之后,通过 Soft Argmin 操作,从代价体中计算出一个初始的深度图。为了让深度图更准确,将初始深度图与参考图像拼接起来再做卷积学习深度残差,得到一个更精确的细化深度图。通过计算初始深度图和细化深度图与真实深度图(GT)之间的平均绝对差(Loss0 和 Loss1) ,量化网络预测的深度图和实际真实深度图之间的误差程度。在训练过程中,基于计算出的损失,利用反向传播算法,自动调整网络中的权重等参数,使网络预测的深度图尽可能接近真实深度图 ,从而提升 MVSNet 深度推断的准确性和性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值