投稿问答最小化  关闭

万维书刊APP下载

基于双目视觉的深度估计综述(顶刊TPAMI)

2022/10/26 11:32:48  阅读:151 发布者:

以下文章来源于自动驾驶之心 ,作者汽车人

摘要

RGB图像估计深度是一个长期存在的不适定问题,计算机视觉、图形和机器学习社区已经探索了几十年。在现有技术中,双目匹配仍然是文献中使用最广泛的技术之一,因为它与人类双目系统有很强的联系。传统算法通过在多个图像中匹配人工设计特征来完成深度估计。尽管进行了大量的研究,但这些传统技术仍然受困于高纹理区域、大面积均匀区域和遮挡的问题。受益于深度学习的快速发展,基于双目深度估计的深度学习算法引起了研究人员越来越多的关注,在2014年至2019年期间在该领域发表了 150 多篇论文。这种新一代方法已经展示了性能的重大飞跃,使自动驾驶和增强现实等应用成为可能。论文对这一不断发展的新研究领域进行了全面调查,总结了最常用的范式,并讨论了它们的优点和局限性。回顾迄今为止所取得的成就,论文还推测基于深度学习的双目匹配在深度估计研究中的未来的发展方向。

论文的主要贡献如下:

据论文称,这是首篇调研基于深度学习的双目深度估计的综述。调研了过去六年在主要会议和期刊上发表的150 多篇论文。

提供最先进的综合分类。首先阐述常见的范式,然后讨论每个范式中方法之间的异同。

对问题的所有方面进行了全面的回顾和深刻的分析,包括训练数据、网络架构及其对重建性能、训练策略和泛化能力的影响。

使用公开可用的数据集和室内图像对一些关键方法的属性和性能进行了比较总结。选择室内图像来测试这些方法在全新场景中的表现。

数据集

下表总结了相关公开数据集。进一步,论文根据这些数据集的大小、空间和深度分辨率、深度注释类型以及现有算法面临的域差距(或偏移)问题来讨论这些数据集。

1)数据集大小:由于数据标注比较困难,出现在2016年之前的第一个数据集规模较小。一个例子是两个KITTI数据集 [15][21],包含了200个双目对及其对应的视差GT。它们已被广泛用于训练和测试基于patch的相关双目匹配算法,这些算法具有较小的感受野。因此,单个双目对可以产生数千个训练样本。然而,在端到端结构中,一个双目对只对应一个样本。端到端网络参数量很大,一般需要大量数据才能有效训练。虽然收集大型图像数据集非常容易,例如,通过使用 NYU2 [17]ETH3D [25]SUN3D [19] ETH3D [25] 中的视频序列,但使用3D标签进行标注却非常耗时。最近的工作,例如 ApolloScape [34] A2D2 [35],使用 LIDAR 来获取密集的3D标注。还有一些特定于深度估计的策略。包括人工合成和渲染来自各种(随机)视点、姿态和照明条件的 3D CAD 模型的 2D/2.5D 视图。这些方法已经用于生成FlyingThings3DMonkaa等相关数据集。

2)空间和深度分辨率:视差/深度信息可以是与输入图像相同或更低分辨率的map形式,也可以是参考图像中某些位置的稀疏深度值的形式。大多数现有数据集的空间分辨率都很低。然而,近年来研究人员越来越关注高分辨率图像的双目匹配。一个例子是 Yang 等人的 HR-VS HRRS。然而,该数据集仅包含 800 对双目图像,对于端到端训练来说相对较小。其他数据集,如 ApolloScape [34] A2D2 [35] 的分辨率很高(3130×960),ApolloScape包含超过 100 小时的双目驾驶视频,专门用于测试自动驾驶算法。

3euclidean versus Ordinal Depth:一些论文(例如 MegaDepth [28])不是用精确的(即欧几里得)深度值标注图像,而使用有序深度标注,即像素与像素越近、越远或具有相同的深度。ordinal标注比euclidean标注更简单、快捷。事实上,它可以使用传统的双目匹配算法准确的计算得到,因为Ordinal 深度对深度估计中的不准确性不太敏感。

4)域差距:虽然人为地增加训练数据集可以丰富现有数据集,但由于真实数据和合成数据之间的域差距可能会导致应用于真实环境时的准确性降低。论文后续会展开讨论。

基于双目匹配的深度估计

基于双目的深度重建方法使用个RGB图像并生成视差图,以最小化下述能量函数:

传统上,这个问题可以使用四个模块[11]来解决,即:

特征提取;

跨图像的特征匹配;

视差计算;

视差细化及后处理。

本节重点介绍如何使用基于深度学习的方法实现这些模块,下表总结了最先进的相关算法。

特征提取和匹配学习

早期相关算法使用可学习的特征[37][38][39][42]替换了人工设计的特征(下图模块A)。它们需要两个patch,左图以像素为中心,右图以像素为中心,使用 CNN 计算它们对应的特征向量,之后进行匹配(下图模块B)以输出相似度分数,相似度可以使用标准的相似度度量(如L1L2和相关性度量),或使用上游网络学习得到的度量进行计算。这两个组件可以单独或者联合训练。

基础网络结构

[37][38][39][42] 中介绍的基本网络架构如下图a所示,由两个CNN编码分支组成,用于充当描述符计算模块。[42]使用由四个卷积层组成的编码器,见下图a。除最后一层外,每一层后面都有一个ReLU层。Komodakis [37]Han [38]等人使用类似的结构,但添加了:

除了最后一层 ,使用max-pooling降采样,如上图所示。与 [39][42] 相比,网络允许更大的分辨率输入和更大的视点变化。

特征提取分支 [37]的末尾增加空间金字塔池化(SPP)模块,以便网络处理任意大小的patch,同时输出固定大小的特征,如下图c所示。SPP将卷积层输出的特征处理为固定大小,且无需更改网络结构或重新训练。

之后将学习到的特征送到下游模块,输出相似度分数。该模块可以用标准的相似度度量进行计算(L2距离、余弦距离等)。使用L2距离的优点在于可以用一层 2D [51] 1D [22] 卷积操作来实现,又被称为相关层。相关层不需要训练,且已在文献[22][39][41][42][44] 中广泛使用。使用决策网络而不是人工设计的度量可以从数据中学习合适的相似性度量,其比相关层更准确,但速度要慢得多。

网络结构变体

基线网络结构近年来已有多种变体。如:

使用残差网络[46]改进训练:Shaked等人[46]使用具有多级加权残差连接的残差模块,以训练大模型。它的特殊性在于网络自己学习如何调整添加的跳跃连接的贡献。这种架构被证明优于[39]

扩大网络的感受野而不损失分辨率或计算效率[48][49][52]:学习特征的规模由输入patch的大小、网络的感受野、卷积核大小和池化操作来决定。虽然增加卷积核的大小允许网络捕获像素之间更多的全局交互,但会导致计算量增加。此外,池化层在降低分辨率的同时会导致局部细节信息的损失,这对密集估计任务并不友好。为了扩大感受野且不损失分辨率或增加计算量,空洞卷积[52]应运而生。也有一些方法使用SPP模块[48][49],如上图de所示。

处理多尺度特征[37][40]:目前为止的方法都可以通过使用多流网络来扩展以学习多个尺度的特征,每个patch大小的[37][40] 一个流,如下图所示。Komodakis [37] 提出了一个双流网络,本质上由两个孪生网络组成,如下图a所示。第一个孪生网络,称为central high-resolution stream,输入是以像素为中心的两个32×32大小的patch。第二个网络称为surround lowresolution stream,输入是两个64×64大小的patch,但下采样至32×32。之后将两个流的输出连接起来并输入至下游决策网络并返回匹配分数。类似的方法还有[40],见下图b。多流架构的主要优点是可以在单个前向传递中计算多个尺度的特征。但是需要每个尺度一个流,这对两个以上的尺度输入比较困难。

减少前向路径的数量[37][44]:上述相关算法都是使用类似移动窗口的方法推理raw cost volume,这需要多次前向推理。不过相关性是高度可并行化的,因此可以通过并行推理减少前向的次数。Luo等人[44]使用孪生网络减少前向次数。其他的算法如[37]

通过学习相似性而不显式学习特征简化训练步骤[37]:特征提取和相似度计算网络的联合训练统一了特征学习和度量学习步骤。Zagoruyko[37] 提出了另一种没有直接特征概念的结构。算法将左右patch打包在一起送入卷积和ReLU组成的双通道网络,之后接全连接层。网络不计算特征,而是直接输出patch对之间的相似性。[37]的实验表明者共结构也很容易训练,但推理比较耗时。

训练方式

本节中描述的网络由特征提取模块和特征匹配模块组成。由于目标是学习如何匹配patch,因此这两个模块以监督方式或弱监督方式联合训练。

监督训练

现有监督学习方法使用正负样本组成训练集。正样本为patch和另一图像的匹配patch组成,负样本则是非匹配的patch组成。训练时要么一次选择一个样本(正样本负样本都可),并适应相似性[37][38][40][41],或者在每一步都选择一个正样本和一个负样本,并最大化两者相似性间的差异,后者旨在使来自正样本的两个patch比来自负样本的两个patch更相似[39][43][45],也被成为三元对比学习(Triplet Contrastive learning)。

尽管监督学习的效果很好,但神经网络模型的复杂性需要大量的标注训练集,这对实际应用来说成本很高。即使有这么大的数据集可用,一般也包含噪声 [53]。不过可以通过随机扰动 [39] 或合成数据 [22][54] 增加训练集来缓解。

损失函数

常见的损失函数有L1距离、hinge损失[42][46]和交叉熵损失[44]

弱监督学习

弱监督学习用一个或多个双目约束来减少标注数据的规模。Tulyakov[50]等将多实例学习 (Multi Instance Learning lossMIL) 与双目约束和粗标签相结合训练网络。与监督学习不同,训练集有N个三元组成,每个三元组包含:1)在参考图像的水平线上提取的W个参考patch2)从右侧图像的对应水平线上提取的W个正patch3)从右侧图像另一条水平线上提取的负patch。通过上述方法从双目图像对中构建训练集。

[50]具体利用五个约束进行训练:极线约束、视差范围约束、唯一性约束、连续性(平滑)约束和顺序约束。之后定义了三个使用这些约束的损失函数,即:

MIL损失:利用极线约束和视差范围约束;

对比损失:给MIL方法添加唯一性约束;

constractive-DP使用上述五个约束,基于动态规划寻找最佳匹配。

该方法已被应用于训练一个深度孪生神经网络,该网络输入两个patch并预测相似性,实验结果表明其性能优于MC-CNN-fst [39],而MC-CNN-fst是全监督训练的模型。

正则化和视差估计

由图像特征计算得到的raw cost volume可能受噪声污染,如物体遮挡等。直接计算深度可能不准,因此需要使用正则化来缓解[39][40][44]。在这些方法中将initial cost volume s送入全局[11]或半全局[55]匹配器中计算视差图。半全局匹配在准确性和计算要求之间提供了较好的这种。用到的平滑项定义如下:

为了解决这个优化问题,SGM 能量被分解为多个能量,每个能量沿着路径 s 定义。视差通过下式得到

Seki[56]提出了SGM-Net,比[39]中的手动调整方法获得了更好的惩罚。

SGM 方法使用聚合方案来组合来自多个1D扫描线优化的costs,存在两个主要问题:1)该算法的核心扫描线优化方法引起的条纹伪影可能导致结果不准确,2)内存占用太高。因此Schonberger[57]将融合步骤重新定义为在图像中每个像素的所有扫描线优化建议中选择最佳的任务。他们使用逐像素随机森林分类器解决了这个任务。其他方法如[58][59]

端到端方法

近期的工作使用端到端的范式解决双目匹配问题。可以分为两大类,早期的算法如FlowNetSimple [51] DispNetS [22],使用单个编码器解码器结构,将左右图像concat在一起形成6D volume,并回归视差图。因为不需要显式进行特征匹配,所以速度很快。但是需要大量的训练数据。第二类算法通过将问题拆为为多个阶段来模仿传统的双目匹配范式,每个阶段都是可导的,整体上可以端到端训练。上图总结了相关算法的分类情况。下表比较了基于此分类的28种算法。

特征学习

特征学习网络不是处理单个patch,而是在前向时处理整个图像,生成与输入图像相同或分辨率更低的特征图。目前主要有两种策略实现跨图像的特征匹配:

N个图像N个分支:每个分支都会生成一个特征图,用于表示输入图像 [22][60][61][62][63][64][65]。算法假设输入图像已被校正,因此沿水平方向进行搜索。

N个视差级别N个分支:每个分支处理一对patch,一个是参考patch,另一个是右图重投影到相应深度平面上的patch[66]。每个分支都会生成一个特征图,特征图表征patch之间的相似性。虽然这些算法无法校正图像,但假设相机的内外参是已知的。此外,如果不更新网络结构并重新训练,就无法改变视差级别的数量。

两种策略都使用全卷积网络提取特征。也可以结合空洞卷积或多尺度方法丰富全局上下文信息,如PSM-Net[64]、使用Vortex Pooling [70][69]、和MLCUA [65]等。

cost volume重建

特征计算后,下一步是匹配分数(matching scores)。这些分数将以cost volume的形式输入到下游网络进行正则化和视差估计。cost volume可是3维(第三维的视差层级)、4维(第三维是特征维度、第四维是视差层级)或混合的方式。一般来说,cost volume的分辨率比输入低,例如1/8大小,之后逐步上采样并细化,或者直接估计低分辨率视差图,之后对视差图进行上采样和细化。

3D Cost Volumes

Construction:可以通过在预定义的视差范围内获取左右图像特征间的L1L2或相关性距离来构建3D  cost volume,相关算法有 [22][69][72] [73][75][78][82][88]FlowNetCorr [51]。基于相关性的差异可以使用无需训练的卷积层来实现(卷积核参数由网络的第二个分支计算的特征得到)。FlowNetCorr [51] 等光流估计网络使用 2D 相关性。视差估计网络,例如 [22][68]iResNet [63]DispNet3 [83]EdgeStereo [80]HD3 [88] [76][82],使用 1D 相关性。

Regularization of 3D cost volumes:得到cost volume后,可以估计初始视差图,参见[72]和下图a。但由于不可避免的噪声,一般会使用正则化模块进行细化,即在估计初始视差图之前利用空间或视差维度上的上下文信息来细化cost volume,主要有以下三种正则化方法:

使用传统方法:早起算法使用传统技术,如马尔可夫随机场 (MRF)、条件随机场 (CRF) 和半全局匹配 (SGM),通过显式结合深度图的空间约束(例如平滑度)来正则化cost volume。最近的一些论文表明,CNN可用来微调这些方法的参数,如hybrid CNN-CRF [74]、结合RCNNCRF [89]、重新设计RNN形成的CRF模块 [90][91]等。这些方法是通用的,可用于正则化3D cost volume

使用2D卷积:另一种方法是使用2D卷积处理3D cost volume,进而产生另一个3D cost volume[22][51][62][63]2D卷积计算十分高效,但只能沿空间维度捕获和聚合上下文信息,见下图b,这就忽略了视察维度上的信息。Yao [92]使用门控循环单元 (GRU) 沿深度方向依次正则化 2D cost maps,如下图c所示。这种方法极大的减少了内存小号,相比[93]15.4 GB减少到5 GB,使得高分辨率重建变得可行,同时沿空间和视差维度捕获上下文。

使用3D卷积:Khamis[75] 使用L2距离来计算初始 3Dcost volume,并使用3D卷积在空间和视差维度上对其进行正则化,见下图d。由于内存开销的原因,该方法首先估计低分辨率视差图,然后使用残差学习逐步改进。其他方法如[72][69][73]

4D Cost Volumes

Construction4D cost volumes保留了特征 [32][61][64][65][77][86] 的维度。其成功的原因在于让下游网络学习适当的相似性度量来比较特征,而不是使用人工设计的特征。

4D cost volumes可以通过预定义的视差范围内的特征差异构建 [32]cost volume的大小为,或者由网络不同分支计算的特征 [61][64][ 65][77][86] concat得到。使用这种方法,Kendall[61]构建了大小为的4D volume。其他相关算法如[77][64][86]

3D cost volumes相比,4D包含了更丰富的信息。但值得注意的是,通过concat获得的cost volumes不包含有关特征相似性的信息,因此在后续模块中需要更多参数来学习相似度函数。

Regularization of 4D cost volumes4D cost volumes使用3D卷积进行正则化,利用高度、宽度和视差维度的相关性生成3D cost volumes[61] 使用3D卷积和带跳跃连接的U-net编解码器。[77]进一步引入了残差连接。其他相关算法如[86]

此外,半全局匹配技术已被用于正则化4D cost volumes,其使用CNN估计其参数。例如,Yu[79]使用3D卷积和上采样组成的编码器-解码器处理初始4D cost volume,并输出另一个3D cost volume。之后使用端到端的双流网络进行聚合。3D卷积的内存开销和耗时比较大。因此一些工作尝试如下几种方法提升效率:

减少3D卷积层的数量:Zhang[87]提出GANet,其将正则化模块中大量的3D卷积层替换为1)两个3D卷积层、2)半全局聚合层(semi-global aggregation layerSGA)和3)局部引导聚合层(local guided aggregation layerLGA)。同SGM不同的是,SGA的参数是可学习的。此外,它们被当成匹配cost的惩罚系数。因此,它们在不同的位置适应不同的情况并且更加灵活。另一方面,LGA 层添加在最后,旨在细化thin structures和物体边缘。SGALGA替换了3D卷积,可以捕获局部和全图的cost dependencies。两者显著提高了难例区域(如遮挡、大的无纹理/反射区域等)的视差估计的准确性。

逐步细化cost volume和视差图:一些方法使用逐步优化的方式替换3D卷积。如PSM-Net [64],其首先估计低分辨率下的4D cost volume,然后使用堆叠的hourglass 3D encoder-decoder模块对其进行正则化。每个模块返回一个3D cost volume,然后接上采样、3D卷积和softmax回归高分辨率视差图。整体上是一个逐层细化的过程。

压缩4D Cost VolumeTulyakov[81]通过将特征压缩成compact matching signatures来减少内存开销,且不牺牲准确性。更重要的是,其允许网络输入任意数量的多视图图像,推理时输入数量可以改变而无需重新训练。

混合3D-4D Cost Volumes

相关层提供了一种评测特征相似性的有效方法,但它会丢失很多信息,因为其只为每个视差层级生成一个单通道图。另一方面,通过特征concat获得的4D cost volumes包含更多的信息,但对资源要求很高,并且还需要在后续聚合网络中使用更多参数来学习相似度函数。为了结合两者的优点,Guo[85]等提出一种混合方法,构建了两个cost volumes:一个通过特征concat,但使用两个卷积层压缩成12个通道;第二个通过将高维特征图沿特征通道划分为组,计算每个组内的所有视差层级的相关性,最后将相关性图组合为另一个4D volume。之后将两个cost volumes组合在一起并送入一个3D正则化模块中,该模块由四个3D卷积和3个堆叠的3D hourglass网络组成。与仅通过特征concat构建的4D cost volumes相比,这种方法显著减少了参数,而不会丢失太多信息。

视差计算

从正则化后的cost volume 估计视差图,最简单的方法是使用逐像素,例如(也可以使用)。然而argmin/argmax算子无法输出亚像素的精度,并且由于不可导而无法反向传播训练。另一种方法是视差上可导的soft argmin/max[61][66][72][75]

当分布是单峰和对称[81]时,soft argmin算子逼近亚像素MAP方法。如果不满足此假设,soft argmin会产生混淆且可能生成远离所有模式的解并导致过度平滑。Chen[84] 观察到,在估计的视差符合多模态分布的边界像素处尤其如此。为了解决这些问题,[84]仅在以最大概率的模态为中心的窗口上应用加权平均操作,而不是在整个视差范围上使用全频带加权平均。

Tulyakov[81]提出了亚像素MAP近似,其计算视差周围的加权平均值,最大后验概率为:

这种方法允许在推理时更改视差范围,而无需重新训练网络。

变体

上述算法得到的视差图可能有低分辨率(沿宽度、高度和视差维度)、不完整、嘈杂、缺少精细细节以及过度平滑等问题,尤其是在目标边界处。因此,下面介绍一些网络变体,主要用于:

提升分辨率;

提升运行效率,尤其是推理时;

视差补全和去噪。

推理高分辨率视差图

直接回归精细、高分辨率深度图的计算成本很高且难训练。由于内存和速度上的限制,目前主要使用bottom-uptop-down的方式实现。

Bottom-up

自底向上的方法以类似滑动窗口的方法运行。输入较小的patch并估计patch中心像素或整个patch的精细视差。Lee[94]遵循拆分和合并的方法,输入图像被拆分成多个区域,并估计各自的深度。之后使用融合网络合并结果,该网络在傅里叶域(Fourier domain)中运行,以便处理不同裁剪比率的深度图。虽然这类方法减少了内存需求,但需要多次前向运行,因此实时性可能较差。另外,这些方法无法捕获全局上下文信息,在一定程度上性能会受限。

Top-down

自顶向下的方法以分层的方式估计视差图。其首先估计一个低分辨率的视差图,然后逐步上采样至输出分辨率。例如使用双线性插值并结合残差学习来恢复局部细节和thin structures[69][72][75]。这个过程也可以通过细化模块的级联来逐步优化,每个模块都会细化上个模块的估计结果[62][75]。与直接上采样cost volumes不同,视差图细化可以高效计算,因为只需要3D卷积。相关算法还有[75][63][69]

上述的算法提高了空间分辨率,但没有提高视差分辨率。为了优化空间和深度分辨率,同时处理高分辨率图像,[32]提出了在从coarse-to-fine的层次结构中逐步搜索对应关系。还有一些类似的方法如[61]

补全和去噪

原始视差可能带噪声且不完整,尤其是在物体边缘附近存在深度拖尾问题。目前,已经有一些工作尝试去噪和深度不全。其中一些是任务特定的(ad-hoc),即通过后处理步骤实现。其他方法解决了缺乏用于补全和去噪的训练数据的问题。也有一些工作提出了更适合此任务的新的深度表示,特别是用来解决目标之间的深度拖尾问题。

Ad-hoc使用变分方法[51][95]、全连接CRF DenseCRF[27][96]、分层 CRF [2]等优化初始视差估计图。这些方法鼓励空间相近且颜色相近的像素应有更接近的视差预测。还有一些其他的相关工作如[5][98][99]

基于深度学习的深度补全和去噪的主要挑战之一是缺乏标注训练数据,即成对的嘈杂、不完整的深度图及其对应的干净深度图。为了解决这个问题,[29] 提出了一种成对深度图像数据集生成方法,该方法使用密集3D表面重建方法来去除低质量图像对。他们还提出了一个基于多尺度拉普拉斯金字塔的神经网络和结构保持损失函数,以逐步减少从粗到细的噪声和孔洞。另外,还有一些损失函数或训练数据集的方法,例如[100]提出新的深度表示,名为Depth Coefficients来解决目标之间的深度拖尾问题。

实时处理

目标是设计高效的双目算法,不仅可以输出准确的深度估计,而且可以实时运行。例如,在 PSMNet [64] 中,cost volume的构建和聚合需要超过250毫秒(Titan-Xp GPU)。这种耗时无法满足实时要求。为了加速,Khamis[75]首先估计一个低分辨率的视差图,然后对其进行分层细化。Yin[88] 采用固定的、从粗到细的过程来迭代地进行匹配。[69] 在过滤cost volume时,在宽度、高度和视差通道中使用 3D 空洞卷积。与SOTA cost filtering相比,计算量减少一半。相关算法还有[82][101][64][68]等。

置信度图学习

检测并随后修复失败案例的能力对于自动驾驶和医学成像等应用非常重要。因此,许多研究都致力于估计置信度图或不确定性图,然后通过消除潜在的错误并利用高置信的相邻像素将其替换掉,进而优化视差结果。视差图也可以合并到视差细化的pipeline中,以指导细化过程[78][102][103]Seki[102]将置信度图合并到半全局匹配模块中以进行密集视差估计。Gidaris[103]使用置信度图来检测不正确的估计,用相邻区域的视差替换它们,然后使用细化网络细化视差。相关算法还有[78][104][105][106][107][108][109][110]等。

基于左右视差一致性

左右一致性是衡量视差估计置信度最常用的标准之一。思想是估计两个视差图,分别来自左右图像。然后可以通过获取左右图像间的像素级差异来计算误差图,但会扭曲回左图,并将它们转换为概率 [63]。该方法适用于遮挡检测,即在一个视图中可见但在另一个视图中不可见的区域。左右一致性也可以使用由全卷积层 [78][102]网络来学习。

基于单一原始视差图

左右一致性检查估计两个视差图,计算成本比较高。Shaked Wolf [46] 通过二元交叉熵损失训练一个由两个全连接层组成的网络,并仅根据参考图像预测估计视差的正确性。[107] 将置信度估计作为一个回归问题,并在patch上训练CNN来得到置信度图。相关算法还有[72][112]

基于匹配密度

传统的深度网络将激活和输出表示为确定性点估计。Gast Roth [113] 探索了用概率输出层替换确定性输出的可能性。更进一步,他们用分布替换所有中间激活。因此,网络可用于估计匹配概率密度,以下称为匹配密度,然后可以在运行时将其转换为不确定性(或置信度)。相关算法还有[88]

多目立体

多目立体方法遵循与双目相同的范式。早期的工作侧重于计算多个patch之间的相似性,但这种方式在处理高分辨率图像时的计算成本过高。

在单个前向过程中估计深度图的技术在将多视图信息输入网络并聚合的方式上有所不同。论文将其分为如下两种:

Volumetric Representations

Plane-Sweep Volume Representations

唯一例外的是Hou[115],其对输入图像的潜在表示进行时间融合,即需要时间序列的图像。上表对13SOTA方法进行了分类和比较。

Volumetric Representations

MVS重建的主要问题之一是如何以有效的方式匹配多个图像的特征。成对双目方法对图像进行校正,以便将对应搜索限制在horizontal epipolar lines上。由于图像之间的视角差异很大,这对于 MVS 是不可能的。目前场景几何的Volumetric Representations[60][116]已被应用于解决该问题。然后通过从所需视点进行投影来生成深度图。对于给定的输入图像和相机参数,来自视点的光线投射通过每个图像像素,与该射线相交的体素被分配颜色 [116] 或该像素的学习特征 [60]。现有方法的不同之处在于融合多视图信息的方式:

融合特征网格:Kar[60]使用RNN递归地融合反投影 3D 特征网格,如下图c所示。生成的 3D 网格使用编码器-解码器进行正则化,为了避免依赖图像的顺序,在训练期间随机排列输入图像。

融合成对Cost VolumesChoi[117]使用加权和(weighted sum)融合从每对图像计算的cost volumes,权重来自cost volume计算得到的 confidence map

融合重建的表面:Ji[116]使用 3D CNN 处理每对体积网格,该CNN对体素是否为表面点进行分类。为了处理高分辨率的体积网格,[116]将整个3D空间划分为小的Colored Voxel Cubes (CVCs),并以cube-by-cube的方式回归表面。通过这种方式减小了内存开销,但同时增加了耗时。相关算法还有[91]。在性能方面,[116]需要4小时才能完整重建,而[91]Titan X上只需要25分钟。最后,与执行早期融合的方法相比,在重建后进行融合的误差更大。

Plane-Sweep Volume Representations

这些方法直接从输入估计深度图,而不使用 3D 几何的中间volumetric representations。因此,它们的计算效率更高。该类方法要解决的主要挑战是如何在单次前向中有效地匹配多个视图的特征。这是通过使用Plane-Sweep Volumes[27][66][90][93][118][119] 来完成的,这些方法将输入图像 [27][66][118] 或其学习特征 [90][93][119] 反向投影到不同深度值的平面中,形成估计深度图的 PSV。现有方法在使用特征提取和特征匹配模块处理 PSV 的方式上有所不同。如上图bd所示的方法。

最后,请注意 Won [30]也使用了特征反投影。[30] 用于从宽基线多视图双目设置实现全向深度估计。该方法使用spherical mapsspherical cost volumes

训练端到端双目算法

训练过程旨在找到最小化损失函数的网络参数。损失函数包含数据项和正则化项的总和,评测真值和估计视差的差异。监督信息的类型定义了监督的程度,可以分为全监督、自监督或弱监督。一些方法使用辅助信息来实现正则化,以提高模型的性能。还有一项挑战是模型的泛化能力,本节也会展开讨论。

监督学习

3D监督算法

目的是最小化下述损失函数,该损失函数评测GT和预测结果间的误差,形式如下:

一些论文限制上式损失的大小,仅覆盖有效像素或感兴趣区域,例如前景或可见像素[123],以避免异输出。例如[93]将损失分为两部分,一个在初始视差上,另一个在细化视差上。总损失定义为两个损失的加权和。

自监督算法

最初用于光流估计 [124][125] 的自监督方法可在缺乏训练数据时使用。这些方法主要依靠图像重建损失,利用投影几何,以及空间和时间相干性。基本原理是,如果估计的视差图尽可能地接近真值,则参考图像与其他图像间的差异也应最小,但未使用估计的深度图投影到参考图像上。一般的损失函数形式如下:

映射函数可以是:

本征映射(identity[68][77][126][127]。在这种情况下,上式称为光度或图像重建损失;

到特征空间[68]的映射,,是学习得到的特征图;

图像的梯度,,与光度损失相比,它对照明和采集条件的变化不太敏感。

距离可以是L1L2距离。一些论文 [77] 还使用更复杂的指标,例如patch间的结构差异 [128]

虽然基于双目的监督方法不需要3D GT标签,但它们依赖于训练期间校准双目对的可用性。

弱监督算法

弱监督算法使用弱标签训练网络以减少对标注真值的需求。例如,[129]使用传统双目匹配技术作为监督信息,以对深度估计网络进行微调。由于此类深度数据可能是稀疏的、嘈杂的并且容易出错,因此他们提出了一种置信度引导的损失来惩罚被认为不可靠的GT 深度值。相关算法还有[130][131]

结合其他线索

一些工作使用了额外的线索和约束以提高视差估计的质量。这些线索可以是辅助信息的形式,下面进行介绍。

平滑度:通常,可以假设相邻像素具有相似的视差值。这种平滑约束可以通过最小化来强制执行[77]

一致性:[77]引入了循环一致性损失。[133]引入左右一致性项,它是循环一致性的线性近似,该损失试图使左视图视差图等于投影的右视图视差图,如下所示:

Maximum-Depth Heuristic:可能有多个warping函数可以实现类似的warping损失,尤其是对于无纹理区域。为了在这些区域进行正则化,[77]使用最大深度启发式(MDH[134]定义为所有深度/视差的总和:

尺度不变梯度损失:定义如下。该损失会惩罚相邻像素之间的相对深度误差。这种损失刺激网络比较每个像素的局部邻域内的深度值。它强调深度的不连续性,刺激尖锐边缘,并增加均匀区域内的平滑度。

结合语义线索:一些论文结合了额外的线索,如法线 [135]、分割 [68] 和边缘 [80] ,以优化视差估计。这些线索可以在一开始就提供,例如,使用 [80] 中的单独方法估计,或者与视差图联合估计。Qi [135]等提出了一种机制,使用深度图来细化法线估计的质量,使用法线图来细化深度估计的质量。算法基于双流网络实现:使用初始深度估计进行法线图细化的depth-to-normal网络,以及使用估计的法线图进行深度细化的normal-to-depth网络。相关算法还有[68][86][136]。总而言之,将语义特征附加到cost volume上可以改善局部细节的重建,尤其是在目边界附近。

域适应和迁移学习

基于深度学习的深度估计算法受到域偏移问题的严重影响。例如,室内环境训练的模型应用于室外,合成数据到真实数据,如下图所示。因此,在一个域上训练的模型应用于另一个域时会受到影响,导致目标边界模糊和不适定区域中的错误,例如目标遮挡、重复模式、 和无纹理区域。这些被称为generalization glitches [137]

目前的相关算法可以分为两类:微调适应和数据转换适应,适应都可以是离线或在线的形式。

Adaptation by Fine-Tuning

此类方法首先在源域上训练模型,之后在目标域上微调。主要困难在于从目标域收集双目或多视图图像的深度真值。依靠传感器(例如激光雷达)来获取监督数据在实际应用中是不可能的。因此,最近的工作,例如[129][137][138] 依赖现成的双目算法以无监督的方式获得视差/深度的标签,以及SOTA的置信度测量方法来确定双目算法预测的正确性。后者在[129][138] 中用于区分可靠和不可靠的视差结果,选择可靠的结果微调模型,例如[22]。相关算法还有[137][76][142][143]等。

Adaptation by Data Transformation

另一种方法是数据转换,即将一个域的数据转换为与另一个域的数据相似的形式。例如[145]提出了一种两阶段的方法,第一阶段使用合成数据训练深度估计模型。第二阶段用于将合成图像的风格迁移到真实世界上。通过上述方法,真实图像首先进行风格迁移,与合成数据风格相匹配,之后输入由合成数据训练得到的网络。虽然这些方法已用于单目深度估计,但它们适用于(多目)双目匹配方法。相关算法还有[146][147]等。

网络结构学习

大多数深度估计的网络都是人工设计的,但如果最优网络结构及其参数也可以从数据中学习呢。[149] 展示了如何使用和扩展现有的 AutoML 技术 [150] 以有效优化大规模类U-Net 编码器-解码器结构,以实现基于双目的深度估计。传统的 AutoML 技术具有极高的计算需求,限制了它们对小规模分类任务的使用。相关算法还有[151][83]等。

讨论和对比

计算时间和内存开销

5对相关算法进行了总结,并可以区分出三种类型:

慢速方法:例如 PSMNet [64]DeepPruner (Best) (Fast) [82] 以及 GANet [87],需要超过1秒的时间来估计一个视差图。它们在运行时还需要3 GB 10 GB的内存。因此,这些方法很难在边缘平台上部署。

均速方法:例如 AnyNet [73] iResNet [63],在大约一秒内生成视差图。

快速方法:例如 HighResNet [32],需要不到 0.1秒。

通常,使用 3D cost volumes的方法比使用 4D cost volumes的方法更快且内存需求更少。然而,有两个例外:iResNet [63] DeepPruner [82],它们使用 3D cost volumes,但在运行时需要大量内存。虽然iResNet处理640×480的图像不超过1秒。但由于使用 2D 卷积来正则化cost volumeDeepPruner [82] 需要超过3秒。论文还观察到 HighResNet [32],它使用4D cost volumes,但采用分层方法来按需产生视差,在耗时上非常高效,只需要 37 ms。请注意,由于其内存效率,AnyNet [73] 可以在移动设备上运行。

重建准确性

论文进一步报告了由 141 张看起来或多或少像 KITTI2012 图像的图像组成的基线子集(以下称为基线)和另一个由 33 张具有挑战性照明条件的图像组成的子集(以下称为挑战)的结果。在这里,论文专注于方法之间的相对比较。

论文观察到这些方法在两个子集上的表现几乎相同。然而,与 KITTI2012 KITTI2015 等标准数据集上报告的误差相比,重建误差大于 8 个像素。这表明,当训练和测试之间存在明显的域差距时,重建精度可能会受到显著影响。

进一步,论文还在下图的Bad-n曲线上观察到相同的趋势,在所有方法中,超过25%的像素具有大于5像素的重建误差。Bad-n 曲线表明,前景像素(即与汽车对应的像素)的误差较大,超过 55%的像素误差大于3像素(背景像素为 35%)。有趣的是,上表和下图表明大多数方法都实现了相似的重建精度。在所有方法中,不到 25% 的像素误差小于1像素。这表明实现亚像素精度仍然是未来研究的重要挑战。

就视差估计的视觉质量而言,参见下图,论文观察到大多数方法都能够恢复树木的整体形状,但无法重建细节,尤其是树叶。在平坦区域和目标边界周围,重建误差很高。此外,高反射材料和较差的照明条件仍然是这些方法的一大挑战,如下图b所示。

未来研究方向

基于双目的深度估计的深度学习方法取得了可喜的成果。然而,这个领域仍处于起步阶段,还有待进一步发展。下面介绍一些当前存在的问题和未来的研究方向。

相机参数:本文调查的大多数算法都需要校正图像。多视图双目技术使用Plane-Sweep Volumes 或反向投影图像/特征。图像校正和 PSV 都需要已知的相机参数,这在野外比较困难。许多论文试图通过联合优化相机参数和 3D 场景的几何形状来解决单目深度估计和 3D 形状重建的问题 [153]

照明条件和复杂的材料属性:恶劣的光照条件和复杂的材料特性仍然是大多数当前方法的挑战。结合目标识别、高级场景理解和低级特征学习困难是解学这些问题的途径。

空间和深度分辨率:大多数算法不处理高分辨率输入图像,并且通常输出低空间和深度分辨率的深度图。深度分辨率特别有限,使得这些方法无法重建thin structures,例如植被和头发,以及远离相机的目标。尽管细化模块可以提高估计深度图的分辨率,但与输入图像的分辨率相比,增益仍然很小。最近已经使用分层技术解决了这个问题[32]。在这些方法中,可以实时生成低分辨率深度图,因此可以在移动平台上使用,而高分辨率图需要更多的计算时间。实时生成高空间和深度分辨率的准确结果仍然是未来研究的挑战。

实时处理:大多数用于视差估计的深度学习方法使用3D4D cost volumes,并使用2D3D卷积进行正则化。内存开销和耗时都很高,未来可以研究在边缘设备上运行的新型轻量级以及快速的端到端深度网络。

视差范围:现有算法统一离散化视差范围。这会导致多个问题。特别是,尽管在视差空间中的重建误差可能很小,但它会导致深度空间中的米级误差,尤其是在远距离处。缓解这种情况的一种方法是在对数空间中均匀地区分视差和深度。此外,改变视差范围需要重新训练网络。将深度视为一个连续变量可能是未来的研究方向。

训练:深度学习方法严重依赖标注数据,对于深度/视差重建来说十分昂贵。并且方法的性能及其泛化能力可能会受到显著影响。现有算法通过设计无监督损失函数、域适应和迁移学习策略来缓解这个问题。

从数据中自动学习网络结构、激活函数和参数:大多数现有研究都集中在设计新颖的网络结构和新颖的训练方法以优化其参数。直到最近,一些论文才开始关注自动学习最优架构。早期的尝试如 [149]专注于简单的结构。未来可以研究关于自动学习复杂视差估计结构及其激活函数的算法,例如使用神经进化理论 [154][155]等,这将消除对人工网络设计的需求。

参考

[1] A Survey on Deep Learning Techniques for Stereo-Based Depth Estimation

转自:arXiv每日学术速递”微信公众号

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com