《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》

1. 摘要和介绍

这篇文章基于深度学习的立体匹配深度估计领域(包括双目和多目(MVS))的一篇综述类文章,发表在2020年的T-PAMI上,该文章中包含了2014年1月到2019年12月期间该领域发表的150多篇文章。

文章的贡献如下:

  • 对算法进行了分类,并对重建过程中各种方法进行了对比分析。
  • 对训练数据、网络架构、性能、训练策略和泛化能力进行分析。
  • 使用公开数据集对一些最新网络进行评估。

2. 分类

基于深度学习的深度估计是学习一个预测器,该预测器可以从立体图像中推断深度图(视差图),使其尽可能的与真实视差图接近。

基于深度学习的深度估计算法分类:

(1)第一类(论文的第四节):基于立体匹配的深度估计

通过明确学习如何匹配输入图像中的像素来模仿传统的立体匹配技术,然后将这种对应关系转换为视差图。整个过程可以分为三个模块:特征提取模块,特征匹配和代价聚合模块,视差/深度估计模块。每个模块都单独训练。

(2)第二类(论文的第五节):端到端的网络

端到端网络可以分为两类:① 早期将深度估计视为回归问题,深度图直接从输入回归,而没有明确匹配视图中的特征,比如DispNetS。② 通过将问题分解为由可微块组成的阶段来模拟传统的立体匹配管道,从而允许端到端的训练。

对比:基于补丁的CNN进行成本量计算的算法(MC-CNN)具有较小的感受野,因此单个立体图像对可以产生数千个训练样本。然而,端到端的方法中,立体图像对仅对应一个样本,端到端网络具有大量参数,因此需要大量数据集进行有效训练。

基于深度学习的立体方法的性能不仅取决于网络架构,还取决于训练它们的数据集(第 3 节)和用于优化其参数的训练策略(第 7 节)。后者包括损失函数的选择和监督模式,可以用3D标注全监督、弱监督或自监督

3. 数据集

目前用于可用于深度估计训练的数据集有:

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第1张图片

其中,ApolloScape数据集是高分辨率的图像,专门用于测试自动驾驶的算法。

4. 基于立体匹配的深度估计

(1)最小化能量函数

在这里插入图片描述
第一项为匹配代价,衡量左图像素点 ( i , j ) (i,j) (i,j)和右图像素点 ( i , j − d x ) (i,j-d_x) i,jdx之间的匹配代价。
第二项为正则项,强制施加左右一致性约束和视差平滑约束。

(2)分为四个模块进行深度估计

  • 特征提取
  • 图像间特征匹配
  • 视差计算
  • 视差细化/后处理

前两个块构成了成本量,第三个块进行成本量的正则化,然后通过最小化方程来找到初始视差图。最后一个块对初始视差图进行细化和后处理。

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第2张图片

下面重点介绍如何使用基于深度学习的方法实现这些单独的块。下图是基于深度学习的立体匹配方法。

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第3张图片

4.1 学习特征提取与匹配

取两个块(patch)作为网络输入,①左图中以像素点 ( i , j ) (i,j) (i,j)为中心的patch,②右图中以像素点 ( i , j − d ) (i,j-d) i,jd为中心的patch,其中,d在 0 , . . . , n d {0,...,n_d} 0,...,nd范围内,通过CNN来计算两个patch的特征向量,然后进行匹配产生一个相似性分数 C ( x , d ) C(x,d) C(x,d)

4.1.1 基本网络架构

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第4张图片

4.1.2 网络架构变体

残差网络

使用残差网络代替标准卷积网络,允许更深的网络,同时加快训练。

扩大感受野

传统扩大感受野的方法有:更大的卷积核和池化核。但是更大的核会导致更高的计算成本,而且传统池化会降低分辨率并可能导致精细细节的丢失,从而导致视差图细节的丢失。

为了在不损失分辨率或增加计算时间的情况下扩大感受野,常用的方法有:

  • 空洞卷积
  • 空间金字塔池化(SPP),如图 2 (d)

学习多尺度特征

使用双流网络(多流网络)提取并融合不同大小 patches 的特征,双流网络实际上是由两个孪生网络并行组成。如图 3 所示。

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第5张图片

减小前向传播的次数

使用到目前为止描述的方法,从一对立体图像推断原始成本量是使用类似移动窗口的方法执行的,这将需要多次前向传递,每个像素 n d n_d nd 前向传递,其中 n d n_d nd是视差级别的数量。但是,由于相关性是高度可并行化的,因此可以显着减少前向传递的数量。例如,罗等人 [44] 通过使用孪生网络将前向传递的数量减少到每个像素一次传递,其第一个分支在一个像素周围取一个补丁,而第二个分支取一个更大的补丁,覆盖所有可能的视差。输出是左分支的单个 64D 表示,以及右分支的 n d ∗ 64 n_d * 64 nd64 表示 。 然后,相关层计算一个长度为 n d n_d nd 的向量,其中它的第 d 个元素是匹配左侧图像上的像素 x 与校正后的右侧图像上的像素 x-d 的成本。

学习相似性而不学习特征

相似性度量使用网络学习而不是使用传统的手工设计的方法,这样特征提取和相似度计算网络可以联合训练,从而统一了特征学习和度量学习步骤。

4.1.3 训练策略

本节中描述的网络由特征提取块和特征匹配块组成。这两个模块以监督弱监督方式联合训练。

监督训练

现有的监督训练方法使用由正例和负例组成的训练集。每个正(或负)示例是一对由参考块及其来自另一幅图像的匹配块(或不匹配块)组成。训练要么一次取一个正例或负例,并调整相似性 [37]、[38]、[40]、[41],或者在每一步都取一个正例和一个负例,并最大化相似性之间的差异,因此旨在使正对中的两个补丁比负对中的两个补丁更相似 [39]、[43]、[45]。后一种方案被称为三重对比学习

损失函数

训练有监督的立体匹配网络以最小化匹配损失,这是衡量每个训练样本的真实值与预测匹配分数之间差异的函数。它可以使用的损失函数是:

  • L1距离[40]、[42]、[46]
  • 铰链损失[42]、[46]
  • 交叉熵损失[44]

弱监督训练

弱监督技术利用一个或多个立体约束来减少手动标记的数量。目前的方法是多实例学习(MIL)。该方法的训练集由N个三元组组成,每个三元组由:①在参考图像中的水平线上提取的W个patch;②在右侧图像相应水平线上提取的W个正patch;③在右侧图像的另一条水平线上提取的W个负patch。通过施加五个约束进行训练:对极约束、视差范围约束、唯一性约束、平滑性约束和排序约束。基于五个约束设计了三个不同的损失:①MIL 损失;②constractive loss;③constractive-DP 损失。

4.2 正则化和视差估计

一旦估计了原始成本量,我们就可以采用 argmin,softargmin 或 亚像素 MAP 近似来估计视差。然而,从图像特征计算的原始成本量可能会受到噪声污染,例如,由于非朗伯表面、对象遮挡或重复模式的存在。因此,估计的深度图可能有噪声。有几种方法通过使用传统的基于 MRF 的立体框架进行成本量正则化来克服这个问题 [39]、[40]、[44]。这些方法中,最常用的的就是 SGM

传统的SGM的惩罚系数手动设计,无法自适应于不同的局部结构,因此,SGM-Net 提出使用CNN来学习每个像素处的惩罚系数

SGM 方法使用聚合方案来组合来自多个一维扫描线优化的成本,存在两个主要问题

  • 由扫描线优化方法引起的条纹伪影
  • 高内存占用

针对上述两个问题,目前已提出了两种算法:

  • Schonberger 等人 [57] 将融合步骤重新定义为在图像中每个像素的选择最佳的扫描线,提出了逐像素随机森林分类器
  • Poggi 等人 [58] 学习加权聚合,其中每个一维扫描线优化的权重是使用使用传统技术 [59] 或深度神经网络计算的置信图定义的。

5. 端到端的网络

图 4 提供了最先进架构的分类,而表 3 比较了基于该分类的 28 种关键方法。

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第6张图片
《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第7张图片
《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第8张图片

5.1 特征学习

端到端网络的特征提取模块遵循与图 2 和图 3 中描述的架构相同的架构。然而,不是处理单个补丁而是在单个前向传递中处理整个图像,产生与输入图像相同或更低分辨率的特征图。

特征提取模块使用全卷积 (ConvNet) 网络(如 VGG)残差网络(如 ResNets [67])。还可以通过使用空洞卷积或多尺度方法,在一元特征中捕获和合并更多全局上下文。 例如,PSM-Net 附加了一个空间金字塔池(SPP)模块,以便在多个尺度上提取和聚合特征。 StereoDRNet 使用 Vortex Pooling (这是 Atrous Spatial Pyramid Pooling (ASPP) 模块的扩展),来聚合局部和上下文信息。与同等对待聚合特征的 ASPP 模块不同,Vortex Pooling更关注中心像素附近的特征,这通常提供更多相关的语义信息

5.2 成本量构建

成本量有 3D 成本量4D 成本量,或者是二者的混合。通常,成本量构建时的分辨率低于输入。然后对其进行上采样和过滤,或者用于估计低分辨率初始视差图,然后使用细化模块对视差图进行上采样和细化。

5.2.1 3D 成本量

构建

可以通过在预定义视差范围内获取左图像和右图像特征之间的 L1L2相关距离来构建 3D 成本量。这些都是手工制作的特征。

3D 成本量的正则化

  • 传统方法。例如马尔可夫随机场 (MRF)、条件随机场 (CRF) 和半全局匹配 (SGM),通过明确结合深度图的空间约束(例如平滑度)来正则化成本量。最近深度学习网络可用于微调这些方法的参数。
  • 2D 卷积。如图 5(b) 和 (c ) 。使用一系列 2D 卷积层处理 3D 成本量,产生另一个 3D 成本量。2D 卷积在计算上是高效的,然而,它们仅沿空间维度捕获和聚合上下文,见图 5-(b),而忽略沿视差维度的上下文。姚等人 [92] 通过门控循环单元(GRU)沿深度方向对二维成本图进行顺序正则化,见图 5-(c)。这大大减少了内存消耗,使高分辨率重建可行,同时沿空间和视差维度捕获上下文。
  • 3D 卷积,如图 5(d)。使用一系列3D 卷积层同时沿空间和视差维度正则化。由于其内存要求,该方法首先估计低分辨率视差图,然后使用残差学习逐步改进。

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第9张图片

5.2.2 4D 成本量

构建

4D 成本量保留了特征的维度,4D 成本量背后的原因是让顶级网络学习适当的相似性度量来比较特征,而不是像第 5.2.1 节那样使用手工制作的特征。与 3D 成本量相比,4D 成本量携带更丰富的信息。但是请注意,通过连接获得的成本量不包含有关特征相似度的信息,因此在后续模块中需要更多参数来学习相似度函数。

4D 成本量的正则化

4D 成本量通过 3D 卷积进行正则化,利用高度、宽度和视差维度的相关性来生成 3D 成本量。3D 卷积在内存要求和计算时间方面很昂贵,因此其中一个研究问题是解决3D卷积内存占用大和计算复杂度高的问题。

  • 减少 3D 卷积层的数量。GANet 将正则化块中的大量 3D 卷积层替换为 一个半全局聚合层(SGA)以及一个局部引导聚合层(LGA),既减小了参数量和计算量,又显着提高了具有挑战性的区域(例如遮挡、大型无纹理/反射区域和薄结构)中视差估计的准确性。
  • 渐进式方法。PSM-Net 首先估计低分辨率 4D 成本量,然后使用堆叠的沙漏 3D 编码器-解码器块对其进行正则化。每个块返回一个 3D 成本量,然后对其进行上采样并使用附加的 3D 卷积层和 softmax 算子来回归高分辨率视差图。因此,堆叠的沙漏块可以被视为细化模块。
  • 4D 成本体积压缩。PDS 通过将特征压缩成紧凑的描述子来减少内存使用,而不必牺牲准确性。因此,显着减少了内存占用。

5.2.3 混合 3D-4D 成本量

相关层提供了一种测量特征相似度的有效方法,但它丢失了很多信息,因为它只为每个视差级别生成单通道图。另一方面,通过特征连接获得的 4D 成本量携带更多信息,但对资源要求很高。它们还需要在后续聚合网络中使用更多参数来学习相似度函数。 为了从两者中受益,《Group-wise Correlation Stereo Network》 提出了一种混合方法,它构建了两个成本量: 一个是通过特征串联,但使用两个卷积压缩成 12 个通道。第二个是通过将高维特征图沿特征通道划分为 Ng 组,计算每个组内所有视差级别的相关性,最后连接相关性图形成另一个 4D 体积来构建。与仅通过特征串联构建的 4D 成本量相比,这种方法显着减少了参数,而不会丢失太多信息。

5.3 视差计算

从正则化成本量 C 估计视差图的最简单方法是使用像素级 argmin,然而,argmin 算子无法产生亚像素精度,并且由于其不可微性而无法使用反向传播进行训练。

另一种方法是soft argmin

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第10张图片
当分布是单峰和对称时,soft argmin 算子近似于亚像素 MAP 解。当这个假设不满足时,soft argmin 可能产生远离峰值的视差,并可能导致过度平滑。

PDS 引入了亚像素 MAP 近似,它计算视差周围的加权平均值,最大后验概率为:

在这里插入图片描述
与 sof argmin 不同,这种方法允许在运行时改变视差范围,而无需重新训练网络。

5.4 变体

前面得到的视差图一般是低分辨率的、不完整的、有噪声的、缺少细节的、边缘模糊的,因此需要后处理步骤。

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第11张图片

5.5 学习置信图

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第12张图片

7. 训练端到端立体方法

7.1 监督方法

7.1.1 3D 监督方法

训练有监督的方法以最小化衡量真实视差和估计视差之间误差的损失函数。它的形式是:

在这里插入图片描述
D 是距离的度量,可以是 L2L1smooth L1使用双参数鲁棒函数近似的smooth L1。C(x)是 x 处估计视差的置信度。H(x) 是重边函数,如果 x > = 0 x>=0 x>=0 H ( x ) = 1 H(x) = 1 H(x)=1,否则 H ( x ) = 0 H(x) = 0 H(x)=0 Φ ( ∗ ) \Phi(*) Φ()是单位映射或log变换。后者避免了对大视差的过度拟合。

7.1.2 自监督方法

自监督方法已被提议作为在缺乏足够的真实训练数据的情况下的可能解决方案。这些方法主要依赖于图像重建损失,基本原理是,如果估计的视差图尽可能接近真实视差,则参考图像与重建参考图像之间的差异也会最小化,一般损失函数的形式为:

在这里插入图片描述
映射函数 Φ ( ∗ ) \Phi(*) Φ()可以是:

  • 单位映射。此时的损失称为光度损失或图像重建损失。
  • 到特征空间的映射。即 Φ ( I r e f ) = f \Phi(I_{ref})=f Φ(Iref)=f,其中 f 是学习到的特征图。
  • 图像的梯度。即 Φ ( I r e f ) = I r e f 的 梯 度 \Phi(I_{ref})=I_{ref}的梯度 Φ(Iref)=Iref,与光度损失相比,它对光照和采集条件的变化不太敏感。

距离 D 可以是 L1L2 距离。还有论文使用更复杂的距离度量。

7.1.3 弱监督方法

手动获取地面实况深度数据极其困难且成本高昂,并且容易产生噪声和不准确。弱监督方法依靠辅助信号来减少人工标记的数量。例如,《Unsupervised adaptation for deep stereo》使用传统方法和置信度估计网络产生稀疏可靠的视差图作为监督信号,以微调深度网络。

7.2 加入额外的线索

一些方法结合了额外的线索和约束来提高视差估计的质量,包括平滑度、左右一致性、最大深度和尺度不变梯度损失。这种线索也可以是辅助信息的形式,例如用于指导视差估计网络的语义线索

  • 平滑度。通常,可以假设相邻像素具有相似的视差值。
    《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第13张图片
  • 左右一致性。通过扭曲变换将重建视差图,通过最小化重建视差与原始视差的差异施加一致性约束。
    在这里插入图片描述
  • 最大深度启发式
    在这里插入图片描述
  • 尺度不变的梯度损失。这种损失惩罚了相邻像素之间的相对深度误差。这种损失会刺激网络比较每个像素的局部邻域内的深度值。它强调深度的不连续性,刺激锐利的边缘,并增加均匀区域内的平滑度。

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第14张图片

  • 结合语义线索。一些论文结合了额外的线索,如分割和边缘,以指导视差估计。将语义特征附加到成本量可以改善精细细节的重建,尤其是在对象边界附近。

7.3 领域适应和迁移学习

用于深度估计的深层架构受到域偏移问题的严重影响,在一个域上训练的深度学习网络(例如,通过使用合成数据)在应用于另一个域(例如真实数据)时会受到影响,从而导致对象边界模糊和不适定区域(例如对象遮挡、重复模式、 和无纹理区域)中的错误。

已经提出了几种策略来解决这个领域偏移问题,它们可以分为两类:

  • 微调自适应
  • 数据转换自适应

在这两种情况下,自适应可以是离线或在线的。

7.3.1 微调自适应

该类别中的方法通过首先对来自某个域的图像(例如 [22] 中的合成图像)训练网络,然后在来自目标域的图像上对其进行微调来执行域适应。一个主要的困难是从目标域收集立体或多视图图像的准确真实视差。因此无监督可用于解决该问题。

但离线适应技术降低了方法的可用性,因为用户每次接触新领域时都需要训练模型。因此,最近的几篇论文开发了在线适应技术。

7.3.2 数据转换自适应

此类别中的方法将一个域的数据转换为在样式上与另一个域的数据相似。

7.4 学习网络架构

除了学习网络参数,我们还可以引入DARTS技术,学习一个最佳的网络架构。

总结
《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第15张图片

8. 讨论与比较

8.1 评估协议

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第16张图片

8.1 计算时间和内存占用

从表 5 中,我们可以区分三种类型的方法:

  • 慢速方法,例如 PSMNetDeepPruner (Best) 和 (Fast) 以及 GANet,需要 1 秒以上来估计一个视差图。它们在运行时还需要 3GB 到 10GB 的内存。因此,这些方法很难在移动平台上部署。
  • 平均速度方法,例如 AnyNetiResNet,在大约一秒内生成视差图。
  • 快速方法,例如 HighResNet ,需要不到 0.1 秒。

通常,使用 3D 成本量的方法比使用 4D 成本量的方法速度更快,内存要求更低。然而,有两个例外,iResNetDeepPruner ,它们使用 3D 成本卷,但在运行时需要大量内存。

下表 5 是在 640*480 分辨率图像对上的运行结果:

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第17张图片

8.2 重建误差

《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第18张图片
《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第19张图片

视差图重建结果显示:
《A Survey on Deep Learning Techniques for Stereo-based Depth Estimation》_第20张图片

9. 未来研究方向

基于立体的深度估计的深度学习方法已经取得了可喜的成果。然而,这个话题仍处于起步阶段,还有待进一步发展。未来有以下方向值得探索:

  • 相机参数。相机标定问题。
  • 光照条件和复杂的材料特性。糟糕的照明条件和复杂的材料特性仍然是大多数当前方法的挑战,例如参见图 11-(b)。将对象识别、高级场景理解和低级特征学习相结合可能是解决这些问题的一种有前途的途径。
  • (3) 空间和深度分辨率。大多数当前技术不处理高分辨率输入图像并且通常产生低分辨率视差图,使得这些方法无法重建薄结构,例如植被和头发,以及距离相机较远的结构。尽管细化模块可以提高估计深度图的分辨率,但与输入图像的分辨率相比,增益仍然很小。目前有使用全分辨率输入图像的方法,但尚有很大的提升空间。
  • 实时处理。大多数深度学习深度估计方法使用 3D 卷积进行正则化成本量,它们在内存要求和处理时间方面很昂贵。我们希望在未来看到更多关于可以在边缘设备上运行的新型轻量级、随后快速、端到端的深度网络的研究。
  • 视差范围。现有技术统一离散视差范围。这会导致多个问题。特别是,虽然在视差空间中重建误差可能很小,但在深度空间中可能会导致米级的误差,尤其是在远距离时。将深度视为一个连续体可能是未来研究的一个有前途的途径。
  • 泛化能力。现有端到端网络在大型数据集上进行训练的效果很好,但是难以在一个新的数据集上表现良好。目前,无监督训练的方法是一个很有前景的研究方向,同时一个类似于ImageNet的用于深度估计的大型数据集也是未来的一个探索方向。
  • 从数据中自动学习网络架构、激活函数和参数。大多数现有研究都集中在设计新颖的网络架构和新颖的训练方法以优化其参数。 直到最近,一些论文才开始关注自动学习最佳架构。我们希望在未来看到更多关于自动学习复杂视差估计架构及其激活函数的研究,这将消除对手动网络设计的需要

你可能感兴趣的:(基于深度学习的深度估计,深度学习的立体匹配)