一、论文简述
1. 第一作者:Qingtian Zhu
2. 发表年份:2021
3. 发表期刊:CVPR
4. 关键词:MVS、深度学习、综述
5. 核心思想:读到的第一篇深度MVS的综述,总结的很好,内容涵盖了2021年前的研究进展,值得学习。
6. 论文下载:
https://arxiv.org/pdf/2106.15328.pdf
二、论文翻译
摘要
三维重建由于其在自动驾驶、机器人技术、虚拟现实等领域的广泛应用,近年来受到越来越多的关注。深度学习作为人工智能的主导技术,已成功地应用于解决计算机视觉的各种问题。然而,由于其具有的独挑挑战和不同的机制,三维重建的深度学习仍然处于起步阶段。为了激发未来的研究,本文综述了多视图立体图像(MVS)的深度学习方法的研究进展,MVS也是基于图像的三维重建的关键技术之一。本文还展示了几个公开可用的数据集的比较结果,具有深刻的观察和鼓舞人心的未来研究方向。
1. 简介
随着3D采集技术的快速发展,深度传感器成本变得越来越低并且技术可靠,例如激光雷达。这些传感器已被广泛用于实时任务,以获得周围环境的大致估计,例如在同步定位和建图(SLAM)中。然而,由于边缘设备的硬件和功率的限制,深度传感器得到的深度图通常是稀疏的,因此为了计算效率而放弃了更精细的细节。另一套机制是从一系列图像重建3D模型。在这种情况下,深度值通过匹配2D图像计算,整个重建是离线完成的。如果获得的图像比通过深度传感器获取的深度地图更经济且可用,那么基于图像的3D重建是对于时间不敏感的任务的更好选择。此外,图像实际上包含了深度传感器无法捕捉到的信息,比如纹理和光线。这些线索对于重建精致细致的3D模型至关重要。
Multi-view Stereo (MVS)是一种计算量大的基于图像的三维重建方法。任务最普遍的定义如下。给定一系列图像,这些图像分别具有校准后的的相机参数,MVS的目标是估计每个图像的深度图,然后重建场景的稠密点云。以往的大多数尝试[26, 27](Mvsnet、R-Mvsnet)都采用了这一定义。在许多计算机视觉任务中深度学习已经显示出了有效性。对于双目立体视觉,[18]将深度空间离散化,将立体视觉任务转化为分类问题。平面扫描算法[4]将这种模式扩展到多图像匹配,其模式更适合于深度CNN去解决。
重申一下,本文研究了基于学习的MVS方法,该方法通过平面扫描算法构建匹配成代价体,并生成每个视图的深度图作为中间表示,以此重建密集的3D点云。在一次扫描中,每个图像轮流作为参考图像来估计深度图,其他N−1个相邻图像作为源图像。总共N张图像输入网络,生成一张深度图和相应的置信度图。然后对所有图像进行深度图滤波和融合,得到稠密点云,机制如图1所示。
图1. 典型MVS机制的输入、中间输出和最终输出。参考图像(a)及其N−1个相邻图像是网络的输入,并相应地生成其深度图(b)和置信度图(c)。对所有图像的深度图进行滤波并融合,得到重建的稠密点云(d)。
2. 背景
MVS是基于图像的三维重建机制的关键组成部分。本节介绍背景知识。第2.1节介绍了预先提出的运动结构(SfM)作为相机校准的来源。第2.2节解释了如何在基于学习的MVS方法中构建代价体,这是使CNN能够预测深度的关键步骤。获得深度图后的后处理,包括深度滤波和融合,将在第2.3节中介绍。第2.4节列出了几个有名的开源的MVS数据集,第2.5节列出了用于评估的指标。第2.6节介绍了用于基于学习的MVS的损失函数。为说明问题,本研究仅涵盖使用平面扫描算法的基于学习的MVS方法。
2.1. SfM
MVS需要校准的相机参数来获得图像的相邻关系,相机参数通常是通过SfM算法获得。SfM通常分为增量型和全局型。一般来说,增量机制解决了局部优化问题,并将新的相机加入已知轨迹中。因此,增量方法较慢,但更鲁棒和准确。全局SfM的可扩展性更强,通常可以收敛到一个相当好的解,但更容易受到异常值的影响。
至于MVS,相机标定是指对于每一张图像,由SfM获得相机外部矩阵T,相机内部矩阵K,深度范围[dmin,dmax]。对于大多数MVS方法,COLMAP[20]提供了足够好的相机估计。
2.2. 平面扫描
平面扫描立体几何[4]的主要原理是,对于每个深度,源图像都投影到参考图像截锥体的正面平行平面上,投影图像相似度高的深度假设更可靠。大多数基于学习的MVS方法依靠平面扫描算法生成代价体,而这种方式也是深受双目立体视觉的启发。在基于学习的双目立体视觉方法中,没有直接回归深度值,而是估计表示两个视图之间像素距离的视差的值。利用极线几何知识,深度值可以从估计的视差值计算出来。此外,由于视差值的单位是像素,所以这个任务就变成了一个分类任务,每个类代表一个离散化的视差。这种常见的做法有两个潜在的优点。首先,现在深度的估计与尺度无关,因为单位是像素,而不是米或其他实际距离的测量。其次,CNNs被认为在分类方面比回归更好,因此这有助于产生更可靠的结果。这种离散化依赖于平面扫描算法。
平面扫描算法的核心是深度假设的验证。平面扫描算法通过假设的深度将像素投影到空间后,认为如果空间中的一个假设点被不同的相机以相似的光度拍到,那么这个点很可能是一个真实点,也就是说深度假设(z值)是成立的。在这种情况下,我们可以将深度区间划分为离散化的值,并用这些值进行假设。通过在所有假设中选择最有效的深度来估计最终深度。说到实现,还存在两个问题。一是在不同的图像中匹配像素,或者在视图之间建立单应关系;二是测量光度的相似度。需要注意的是,考虑到单一像素的RGB颜色对匹配来说不够鲁棒,光度通常由从原始图像中提取的特征图取代。
对于一对矫正的双目图像,由于两张图像的主光轴总是平行的,我们只需要通过视差假设将一个视图转移到另一个视图。对于MVS来说,事情变得有点复杂,因为相机分布在没有极线限制的空间上。在深度假设d处,我们首先利用深度d将源图像的所有像素投影到空间中,然后通过参考相机对这些点进行反向形变。因此,第i个源图像与参考图像之间的单应性为
其中K0和T0是参考图像的相机内参和外参。
光度相似度的测量方法各不相同。对于双目立体视觉,[5,17](Flownet、scene flow)引入相关层计算特征向量的内积;GC-Net[13]将特征向量连接在一起。对于MVS,相机数目大于两个,主要有两种选择。MVSNet[26]对所有特征向量应用方差;DPSNet[11]成对地连接特征,并通过平均所有N−1个体获得最终的特征。
值得注意的是,深度空间的划分是产生较好结果的关键问题,这将在后面的第2.6节中讨论。
举个例子重申一下,假设图像分辨率为H × W,总深度假设个数为D,假设像素特征向量的维数为F, MVS方法从图像特征中构建H × W × D × F的代价体,然后通过神经网络对该代价体进行正则化,得到深度图。
2.3. 深度滤波与融合
假设所有深度图都通过MVS方法获得,下一步是过滤和融合深度图得到稠密的点云。由于基于图像的3D重建与尺度无关,因此估计的深度值实际上是像素在该相机坐标系中的z值。因此深度图的融合是相当简单的,我们所需要做的就是通过相机将所有像素投影到3D空间。图像坐标与世界坐标的转换为
其中Px和Pw分别表示在图像坐标和世界坐标中的像素坐标。
然而,并不是所有的像素都适合保存在最后的点云中,例如低置信度的像素和无限远处的像素,如天空。为了克服这一问题,深度图在融合前进行了过滤。由于基于学习的MVS方法采用分类方式,每个深度图与相应的置信度图一起生成。因此,自然而然可以设置阈值来过滤低置信度的深度值。此外,深度值可以在相邻视图之间交叉检查。该滤波策略基于重投影误差,常用在SfM中的BA中。
图3. 通过测量重投影误差来检查相邻视图之间的几何一致性的示例。
以PVA-MVSNet[29]中的策略为例,如图3所示,将图像Ii中的像素P通过估计深度Di(P)映射到其相邻视图Ij,得到一个新的像素P'。由于Ij也有它的深度图,因此我们可以得到Dj(P')。反之,我们可以用深度Dj(P')将P'投影到Ii处的P''。Ii中P''的深度估计记为Di(P'')。深度过滤的约束条件是
其中,τ1和τ2为阈值。对于PVA-MVSNet[29],在至少3个相邻视图下满足这些约束的像素被认为是有效的。值得注意的是,深度滤波和融合方法在论文中经常被发现,尽管它们可能对获得良好的结果非常重要。
值得注意的是,深度滤波和融合方法在论文中经常被发现,尽管它们可能对获得良好的结果非常重要。
It is worth noting that depth filtering and fusion methods are often uncovered in papers though they might be of great importance to obtain good results.
这段话没整明白,懂得帮忙解释下。
2.4. 数据集
表1是已发布的MVS数据集的简要摘要。注意,对于MVS训练,深度是必需的,而评估是基于点云的。表面重建需要渲染l来自点云的深度图,深度融合需要评估重建质量。此外,如果一个数据集不包含真实的相机标定,或者使用开源软件获得真实的标定,那么它可能不适合训练,因为平面扫描对相机标定中的噪声很敏感。
表1. MVS的公共数据集概述。 对于在线基准的数据集,测试集的真实值(不包括相机参数)没有发布。
DTU。DTU数据集[1]是在控制良好的实验室条件下收集的室内MVS数据集,具有精确的相机轨迹。它包含在7种不同光照条件下的49个视图的128个扫描,并分为79个训练扫描,18个验证扫描和22个评估扫描。将每张图像作为参考,总共有27097个训练样本。DTU数据集官方提供真实的点云,而不是深度图,这意味着需要表面重建来生成网格模型和渲染深度图。通常采用筛选泊松曲面重建算法[12]。
Tanks and Temples。坦克和寺庙[14]是一个大规模的在线基准测试,在更复杂的真实室内和室外场景中获得。它包含一个中级集和一个高级集。不同的场景有不同的尺度、表面反射和曝光条件。坦克和寺庙的评估是通过在其官方网站上上传重建点来进行的。请注意,坦克和寺庙不提供真实的相机参数。具有真实的点云的训练集可用,通常用于本地离线验证。
ETH3D。ETH3D[22]是SLAM和立体视觉任务的综合基准。考虑到MVS,它包含25个高分辨率场景和10个低分辨率场景。ETH3D被广泛认为是最困难的MVS任务,因为它包含许多低纹理区域,如白墙和反射地板。传统的基于广播有效深度值的MVS方法在这种情况下表现更好。
BlendedMVS。BlendedMVS数据集[28]是最近发布的用于MVS训练的大型合成数据集,包含各种场景,如城市、雕塑和鞋子等,由超过17k张的高分辨率图像组成,由重建模型渲染,并被分割为106个训练场景和7个验证场景。该数据集是通过虚拟相机获得的,其提供的相机标定足够可靠,可以用于MVS训练。
2.5. 评价指标
如表1所示,大多数数据集提供点云作为真实值,而不是深度图,评估指标通常基于重建的稠密点云的质量。由于点云实际上是具有排列不变性的无序点,因此在进行比较之前,重建的点云需要通过逐视图的相机参数与真实点云对齐。
绝对误差。基准测试采用基于点云的指标进行排名,但基于深度的指标仍然可用于网络训练的验证。绝对误差是测量深度图质量的常用方法,常见的做法是使用多个阈值来体现网络更全面的性能,例如2-px、4-px、6-px和8-px的绝对误差。
精度/准确度。精度/准确度是对预测点与真实点云中可以匹配的百分比的测量。考虑预测点云中的一个点Pp,如果在真实点云中Pg中被认为有很好的匹配:
其中λ是由数据集指定的与场景相关的参数。λ在更大的场景中被设置为更大的值。距离的定义与倒角距离相同。精度/准确度是预测点云中满足要求的点数除以预测点云中总点数。请注意,在一些数据集中,精度/准确度不是按比例(百分比)衡量的,而是用平均或中位数绝对距离代替。
召回率/完整性。召回率/完整性衡量的是在预测的点云中真实点能被匹配的百分比。而计算只是简单地交换真实值和预测值。在预测的点云Pp中,对于真实点云中的点Pg如果被认为有很好的匹配:
召回率/完整性是真实点云中满足要求的点的数量除以真实点云中的总点数。与精度/准确性类似,召回率/完整性有时用平均或中位数绝对距离来衡量。
F-Score。前面提到的两个指标衡量预测点云的准确性和完整性。然而,由于不同的MVS方法使用不同的先验假设,单独的这些指标不能呈现整体性能。较强的假设通常会导致较高的准确性,但较低的完整性。要进行公平的比较,这两种测量都是必要的。如果只报告精度/准确性,它将倾向于只包括高确定性估计点的MVS算法。另一方面,如果只报告召回率/完整性,则会倾向于包含所有内容的MVS算法,而不管点质量如何。因此,引入了一个综合度量。F-Score是精度和召回率的调和平均值。调和平均值对极小的值很敏感,而且更容易受到较小值的影响,也就是说,F-score不鼓励不平衡的结果。但是,在大多数情况下,由于真实值的限制,F-score仍然存在不公平的问题。由于点云的表示是非结构化且整体稀疏的,这一问题一直没有得到解决。
2.6. 损失函数
基于学习的MVS的损失函数可以分为回归函数和分类函数。简单概括一下,对于代价体H × W × D × F,代价体正则化后生成概率体H × W × D。不同的损失函数对应于确定最终预测的不同的方法。
如果最终的真值预测由argmax操作确定。它已经变成了一个纯粹的分类任务,交叉熵损失自然适合作为损失函数,其中真实深度图也以同样的平面扫描和one-hot编码方式进行离散化。交叉熵损失函数表示为
其中G(d)为真实one-hot分布,即深度,P(d)为预测分布。分类损失函数的一个重要优点实际上是对深度划分不敏感,这意味着深度划分可以是任意的,而不一定是均匀的。RMVSNet、D2HC-RMVSNet[27,24]使用交叉熵作为它们的损失函数。
有些方法采用回归的模式来确定预测,而不是计算深度的数学期望。在这种情况下,采用L1损失作为损失函数。这种做法有助于预测更平滑的深度图。MVSNet[26]以及后来的从粗到细的方法都采用了这种模式。损失记为
其中d0表示真实深度图,Ex[·]表示分布的期望。然而,当且仅当空间的划分是均匀的,数学期望是有效的。为了提高可扩展性,R-MVSNet[27]采用了深度平面假设与真实深度值成反比的逆深度采样策略。在这种情况下,平面扫描在远距离的区域更好的,但回归损失函数不再有效。
实验结果表明,分类损失函数有助于预测准确的深度值,因为所有低于最大概率的候选数据都被压缩了。然而,这通常会导致深度值的不连续。而回归模型则认为数学期望是一种可微的argmax方法,它有助于预测平滑的深度图,但在边缘上失去了清晰度。
3. 方法
本节将介绍基于学习的MVS网络,该网络为进一步的后处理生成深度图。典型的MVS网络主要包括三个部分,即特征提取网络(第3.1节)、代价体构建网络(第3.2节)和代价体正则化网络
(3.3节)。表2是典型的基于学习的概述MVS方法。
表2. 基于平面扫描算法的典型学习MVS方法综述。
3.1. 特征提取
MVS的特征提取目前还没有得到研究,大多数方法都是采用常见的CNN主干方法来提取特征,如ResNet[9]和U-Net[19]。对于特征提取,基于学习的主要新颖之处为将具有空洞卷积的多尺度特征应用到聚合特征,例如:D2HC-RMVSNet[24]。
我们可以比较不同计算机视觉任务的特征提取。对于每个图像都被分配一个标签的图像分类,全局特征更重要,因为需要对整个图像的整体感知。对于目标检测,局部性比全局上下文更重要。至于立体匹配,与MVS类似,最佳匹配为半全局[10]。对于纹理信息丰富的高频区域,我们期望一个更局部的感受野;而那些弱纹理区域应该在更大范围内匹配。
3.2. 代价体构建
进行平面扫描以构建代价体,其细节已在第2.2节中介绍。由于代价体的构建可以是成对的,因此会出现另一个过程,将所有N−1个代价体聚合为一个。DPSNet[11]通过简单地加法聚合所有代价体,其基本原则是所有视图都被同等考虑。实际上,遮挡在MVS系统中很常见,它通常会导致无效匹配。因此,输入视图数量的增加将导致更糟糕的预测。通过这种方式,更接近参考视图的视图应该具有更高的优先级,因为它不太可能受到遮挡。
为解决这一问题,PVA-MVSNet[29]应用门控卷积[30]自适应地聚合代价体。视图聚合倾向于给遮挡区域较小的权重,权重图根据代价体本身产生。这种做法实际上遵循了自注意力的方式。Vis-MVSNet通过检查概率分布的不确定性或置信度,显式地引入了一种用于代价体度量方法,视为可见性。
3.3. 代价体正则化
不同的MVS网络之间的主要区别在于代价体正则化的方式,将在以下章节进行了分类并介绍。本文所涉及的三种正则化方案如图4所示。
图4. 典型代价正则化方案说明。(a)3D CNN正则化简单地应用3D CNN来聚合所有维度的空间上下文;(b) RNN正则化对每个深度假设进行类似于时间节点的建模,并采用具有共享权重的2D CNN来聚合H和W的上下文;(c)在由粗到细正则化中,根据更粗的预测构建更细的代价体,并在不同阶段使用3D CNN。
3.3.1 3D CNN
3D CNN是代价体正则化的直接选择。从字面上看,3D CNN由三维卷积操作组成,其卷积核是三维的,并且在代价体的所有维度之间移动。MVSNet[26]采用3D U-Net正则化代价体。与2D U-Net[19]类似,3D U-Net包含一个编码器,用于对3D卷积进行下采样,以及一个解码器,用于逐渐恢复原始特征分辨率。MVSNet[26] 使用3D U-Net进行代价体正则化,也是第一个利用深度学习MVS方法。
代价体正则化的目的是聚合特征,并根据聚合特征预测相对有效的深度值。因此,3D CNN是一种通用的方法,因为它能够在所有维度上聚合局部和全局特征。然而,CNN运行在规则网格上的,一个潜在的假设是空间的划分是均匀的。对于已完成的案例,统一划分不足以预测可靠的深度值。此外,3D CNN的计算成本高,消耗大量内存,限制了D的取值。更细致的(大的D)和合适的(不均匀的)划分对于获得高质量的深度图通常是至关重要的。
3.3.2 RNN
使用3D CNN进行代价体正则化的主要缺点之一是消耗大量的内存。为了减少所需的内存,一些方法尝试[27,24]用沿着D维进行连续2D CNN替换3D CNN。这样,GPU内存中总是会有一个代价片正在处理,RNN用于连接所有深度假设,传递在D维度上的上下文信息。
使用循环正则化的一个很大的优点是它提高了MVS方法的可扩展性,因为空间的划分可以更精细,因此可以重建更远的物体。但由于RNN的并行性比CNN差,因此该方案以运行效率换取空间。
3.3.3从粗到细
以从粗到细的模式进行预测是减少大量内存消耗的另一种解决方案。从字面上看,该网络先预测粗糙的深度图,然后在之前的基础上产生更精细的结果。粗糙预测通常基于低分辨率的下采样图像,而精细预测则基于高分辨率图像。该实践采用编码器-解码器架构,其中低分辨率特征图包含更多低频成分,而高分辨率特征图中高频成分更多。利用粗预测的方法各不相同。Cas-MVSNet[8]通过对特征图进行形变,使其在之前的粗预测周围具有较小的深度范围内重新生成代价体。k+1阶段级联形变根据式1,设置设d = d(k) +∆(k+1),其单应性为
其中,k为阶段数,d(k)为第k阶段的估计深度值,∆(k+1)为当前阶段待确定的残差深度。
UCS-Net[3]从粗糙预测中获得不确定性,以帮助改善预测。请注意,RNN和从粗到细的正则化方法都允许更精细的深度划分,但它们专注于不同的情况。RNN正则化允许更大的D,因此可以有更多的假设深度平面;从粗到细的正则化为了更精细的预测使深度区间的自适应细分,实现构建精细细节的能力。
4. 讨论
4.1. 结果与分析
表3和表4是典型的基于学习的MVS方法的量化结果。Furu [6], Gipuma[7]和COLMAP[21]为非学习方法,供比较。
表3. DTU评估集[1]的定量结果(越低越好)。Acc代表准确性,Comp代表完整性。请注意,DTU数据集测量的是点云之间的绝对倒角距离,而不是用于评估的百分比。Furu [6], Gipuma[7]和COLMAP[21]为列出的非学习方法进行比较。
表4. 在Tanks and Temples基准[14]上典型的基于学习的MVS方法的定量结果。评价指标为F-score
(越高越好)。L.H.代表灯塔,P.G.代表游乐场。COLMAP[21]是一个用于比较的非学习基线。
对于DTU数据集,显然是基于学习的MVS方法在完整性方面优于传统方法,而非学习方法Gipuma[7]精度最好。一个直观的见解是,深度学习可以采用数据驱动的统计模式来预测完整的深度值,而传统方法依赖于更严格的约束,因此由于几何一致性较差,这些区域会被忽略。在基于学习的方法中,从粗到细的方法比其他方法表现得更好。考虑到DTU是一个具有精细细节的理想室内数据集,从粗到细的方法能够区分细微的深度差异。
而对于范围较大的Tanks and Temples,采用RNN正则化方案的方法表现出优势,如D2HC-RMVSNet[24]和AARMVSNet[23]。对于光照和尺度可以变化的真实场景,重建相对完整的点云比重建精确的点云更为重要。因此,RNN正则化允许更多数量的D和逆深度采样,在预测完整场景方面更好。
DTU和Tanks and Temples之间的性能差距可以从正则化的角度来解释。3D CNN(包括从粗到细的正则化模式)是一种更强的正则化,因为它在所有维度上聚集了空间上下文信息,而对于RNNs, D维的约束被放宽了。放宽实现了更好的泛化性和鲁棒性,但需要更多的时间进行预测。
4.2. 未研究的主题
到目前为止,基于学习的MVS仍然是计算机视觉的一个小众领域,许多知名且广泛使用的商业软件仍然使用传统的非学习算法。基于学习的MVS算法一个非常典型的问题是在低纹理区域缺乏有效的深度值,这就是为什么ETH3D的SOTA方法仍然是非学习方法。一些方法尝试使用不同的先验信息,如表面法线[15,16]来克服平面区域。但这些尝试高度依赖于后处理,仍然不能端到端。
一个未研究的主题是什么样的特征提取器适合于MVS,如第3.1节所述。MVS依赖于一个相对难处理的感受野的大小。
评价指标不合理。由于MVS是基于图像的三维重建的一个步骤,其最终目的是构建网格模型,点云是中间表示。如果一个好的曲面重建算法能够正确估计人脸,那么在MVS重建过程中缺少点是可以接受的。
一些研究人员注意到深度图和点云之间的差距,并希望构建一个统一的训练和评估框架。例如,将深度融合合并到端到端训练中,以便直接从点云计算损失。阻碍这样做的一个主要问题是如何使几何一致性检查可微。一些工作已经做了尝试,例如Point-MVSNet[2],但结果还不够令人满意。
另一个任务是将多模态信息编码为MVS网络,例如语义。通过这种方式,可以单独处理一些具有挑战性的区域,例如省略带有天空语义标签的点,并在标记为地面的区域内插入点。还需要一个合适的数据集。
最后但并非最不重要的是,可用数据集的数量和数据的多样性也相当有限。
5. 结论
本文介绍了基于学习的MVS算法的后处理、平面扫描、相关数据集和网络模块等几个方面。并给出了比较结果和观察结果。一般来说,基于深度学习的MVS仍处于开发阶段,与其他计算机视觉任务相比,社区相当小。