这篇文章基于深度学习的立体匹配深度估计领域(包括双目和多目(MVS))的一篇综述类文章,发表在2020年的T-PAMI上,该文章中包含了2014年1月到2019年12月期间该领域发表的150多篇文章。
文章的贡献如下:
基于深度学习的深度估计是学习一个预测器,该预测器可以从立体图像中推断深度图(视差图),使其尽可能的与真实视差图接近。
基于深度学习的深度估计算法分类:
(1)第一类(论文的第四节):基于立体匹配的深度估计
通过明确学习如何匹配输入图像中的像素
来模仿传统的立体匹配技术,然后将这种对应关系转换为视差图。整个过程可以分为三个模块:特征提取模块,特征匹配和代价聚合模块,视差/深度估计模块。每个模块都单独训练。
(2)第二类(论文的第五节):端到端的网络
端到端网络可以分为两类:① 早期将深度估计视为回归问题,深度图直接从输入回归
,而没有明确匹配视图中的特征,比如DispNetS。② 通过将问题分解为由可微块组成的阶段来模拟传统的立体匹配管道
,从而允许端到端的训练。
对比:基于补丁的CNN进行成本量计算的算法(MC-CNN)具有较小的感受野,因此单个立体图像对可以产生数千个训练样本。然而,端到端的方法中,立体图像对仅对应一个样本,端到端网络具有大量参数,因此需要大量数据集进行有效训练。
基于深度学习的立体方法的性能不仅取决于网络架构
,还取决于训练它们的数据集
(第 3 节)和用于优化其参数的训练策略
(第 7 节)。后者包括损失函数
的选择和监督模式
,可以用3D标注全监督、弱监督或自监督
。
目前用于可用于深度估计训练的数据集有:
其中,ApolloScape数据集是高分辨率的图像,专门用于测试自动驾驶的算法。
(1)最小化能量函数
第一项为匹配代价,衡量左图像素点 ( i , j ) (i,j) (i,j)和右图像素点 ( i , j − d x ) (i,j-d_x) (i,j−dx)之间的匹配代价。
第二项为正则项,强制施加左右一致性约束和视差平滑约束。
(2)分为四个模块进行深度估计
前两个块构成了成本量,第三个块进行成本量的正则化,然后通过最小化方程来找到初始视差图。最后一个块对初始视差图进行细化和后处理。
下面重点介绍如何使用基于深度学习的方法实现这些单独的块。下图是基于深度学习的立体匹配方法。
取两个块(patch)作为网络输入,①左图中以像素点 ( i , j ) (i,j) (i,j)为中心的patch,②右图中以像素点 ( i , j − d ) (i,j-d) (i,j−d)为中心的patch,其中,d在 0 , . . . , n d {0,...,n_d} 0,...,nd范围内,通过CNN来计算两个patch的特征向量,然后进行匹配产生一个相似性分数 C ( x , d ) C(x,d) C(x,d)。
残差网络
使用残差网络代替标准卷积网络,允许更深的网络,同时加快训练。
扩大感受野
传统扩大感受野的方法有:更大的卷积核和池化核
。但是更大的核会导致更高的计算成本,而且传统池化会降低分辨率并可能导致精细细节的丢失,从而导致视差图细节的丢失。
为了在不损失分辨率或增加计算时间的情况下扩大感受野,常用的方法有:
学习多尺度特征
使用双流网络(多流网络)提取并融合不同大小 patches 的特征,双流网络实际上是由两个孪生网络并行组成。如图 3 所示。
减小前向传播的次数
使用到目前为止描述的方法,从一对立体图像推断原始成本量是使用类似移动窗口的方法执行的,这将需要多次前向传递,每个像素 n d n_d nd 前向传递,其中 n d n_d nd是视差级别的数量。但是,由于相关性是高度可并行化的,因此可以显着减少前向传递的数量。例如,罗等人 [44] 通过使用孪生网络将前向传递的数量减少到每个像素一次传递,其第一个分支在一个像素周围取一个补丁,而第二个分支取一个更大的补丁,覆盖所有可能的视差。输出是左分支的单个 64D 表示,以及右分支的 n d ∗ 64 n_d * 64 nd∗64 表示 。 然后,相关层计算一个长度为 n d n_d nd 的向量,其中它的第 d 个元素是匹配左侧图像上的像素 x 与校正后的右侧图像上的像素 x-d 的成本。
学习相似性而不学习特征
相似性度量使用网络学习而不是使用传统的手工设计的方法,这样特征提取和相似度计算网络可以联合训练,从而统一了特征学习和度量学习步骤。
本节中描述的网络由特征提取块和特征匹配块组成。这两个模块以监督
或弱监督
方式联合训练。
监督训练
现有的监督训练方法使用由正例和负例组成的训练集。每个正(或负)示例是一对由参考块及其来自另一幅图像的匹配块(或不匹配块)组成。训练要么一次取一个正例或负例,并调整相似性 [37]、[38]、[40]、[41],或者在每一步都取一个正例和一个负例,并最大化相似性之间的差异
,因此旨在使正对中的两个补丁比负对中的两个补丁更相似 [39]、[43]、[45]。后一种方案被称为三重对比学习
。
损失函数
训练有监督的立体匹配网络以最小化匹配损失,这是衡量每个训练样本的真实值与预测匹配分数之间差异的函数。它可以使用的损失函数是:
弱监督训练
弱监督技术利用一个或多个立体约束来减少手动标记的数量。目前的方法是多实例学习(MIL)
。该方法的训练集由N个三元组组成,每个三元组由:①在参考图像中的水平线上提取的W个patch;②在右侧图像相应水平线上提取的W个正patch;③在右侧图像的另一条水平线上提取的W个负patch。通过施加五个约束
进行训练:对极约束、视差范围约束、唯一性约束、平滑性约束和排序约束
。基于五个约束设计了三个不同的损失:①MIL 损失;②constractive loss;③constractive-DP 损失。
一旦估计了原始成本量,我们就可以采用 argmin,softargmin 或 亚像素 MAP 近似来估计视差。然而,从图像特征计算的原始成本量可能会受到噪声污染
,例如,由于非朗伯表面、对象遮挡或重复模式的存在。因此,估计的深度图可能有噪声。有几种方法通过使用传统的基于 MRF 的立体框架
进行成本量正则化
来克服这个问题 [39]、[40]、[44]。这些方法中,最常用的的就是 SGM
。
传统的SGM的惩罚系数手动设计,无法自适应于不同的局部结构,因此,SGM-Net
提出使用CNN来学习每个像素处的惩罚系数
。
SGM 方法使用聚合方案来组合来自多个一维扫描线优化的成本,存在两个主要问题
条纹伪影
高内存占用
针对上述两个问题,目前已提出了两种算法:
逐像素随机森林分类器
。学习加权聚合
,其中每个一维扫描线优化的权重是使用使用传统技术 [59] 或深度神经网络计算的置信图定义的。图 4 提供了最先进架构的分类,而表 3 比较了基于该分类的 28 种关键方法。
端到端网络的特征提取模块遵循与图 2 和图 3 中描述的架构相同的架构。然而,不是处理单个补丁而是在单个前向传递中处理整个图像,产生与输入图像相同或更低分辨率的特征图。
特征提取模块使用全卷积 (ConvNet) 网络(如 VGG)
或残差网络(如 ResNets [67])
。还可以通过使用空洞卷积或多尺度方法,在一元特征中捕获和合并更多全局上下文。 例如,PSM-Net
附加了一个空间金字塔池(SPP)模块
,以便在多个尺度上提取和聚合特征。 StereoDRNet
使用 Vortex Pooling
(这是 Atrous Spatial Pyramid Pooling (ASPP)
模块的扩展),来聚合局部和上下文信息。与同等对待聚合特征的 ASPP
模块不同,Vortex Pooling
更关注中心像素附近的特征,这通常提供更多相关的语义信息
。
成本量有 3D 成本量
和 4D 成本量
,或者是二者的混合
。通常,成本量构建时的分辨率低于输入。然后对其进行上采样和过滤,或者用于估计低分辨率初始视差图,然后使用细化模块对视差图进行上采样和细化。
构建
可以通过在预定义视差范围内获取左图像和右图像特征之间的 L1
、L2
或相关距离
来构建 3D 成本量。这些都是手工制作的特征。
3D 成本量的正则化
传统方法
。例如马尔可夫随机场 (MRF)、条件随机场 (CRF) 和半全局匹配 (SGM),通过明确结合深度图的空间约束(例如平滑度)来正则化成本量。最近深度学习网络可用于微调这些方法的参数。2D 卷积
。如图 5(b) 和 (c ) 。使用一系列 2D 卷积层处理 3D 成本量,产生另一个 3D 成本量。2D 卷积在计算上是高效的,然而,它们仅沿空间维度
捕获和聚合上下文,见图 5-(b),而忽略沿视差维度的上下文。姚等人 [92] 通过门控循环单元(GRU)沿深度方向对二维成本图进行顺序正则化,见图 5-(c)。这大大减少了内存消耗,使高分辨率重建可行,同时沿空间和视差维度捕获上下文。3D 卷积
,如图 5(d)。使用一系列3D 卷积层同时沿空间和视差维度正则化。由于其内存要求,该方法首先估计低分辨率视差图,然后使用残差学习逐步改进。构建
4D 成本量保留了特征的维度,4D 成本量背后的原因是让顶级网络学习适当的相似性度量
来比较特征,而不是像第 5.2.1 节那样使用手工制作的特征。与 3D 成本量相比,4D 成本量携带更丰富的信息。但是请注意,通过连接获得的成本量不包含有关特征相似度的信息,因此在后续模块中需要更多参数来学习相似度函数。
4D 成本量的正则化
4D 成本量通过 3D 卷积
进行正则化,利用高度、宽度和视差维度的相关性来生成 3D 成本量。3D 卷积在内存要求和计算时间方面很昂贵,因此其中一个研究问题是解决3D卷积内存占用大和计算复杂度高的问题。
GANet
将正则化块中的大量 3D 卷积层替换为 一个半全局聚合层(SGA)以及一个局部引导聚合层(LGA),既减小了参数量和计算量,又显着提高了具有挑战性的区域(例如遮挡、大型无纹理/反射区域和薄结构)中视差估计的准确性。PSM-Net
首先估计低分辨率 4D 成本量,然后使用堆叠的沙漏 3D 编码器-解码器块
对其进行正则化。每个块返回一个 3D 成本量,然后对其进行上采样并使用附加的 3D 卷积层和 softmax 算子来回归高分辨率视差图。因此,堆叠的沙漏块可以被视为细化模块。PDS
通过将特征压缩成紧凑的描述子来减少内存使用,而不必牺牲准确性。因此,显着减少了内存占用。相关层提供了一种测量特征相似度的有效方法,但它丢失了很多信息,因为它只为每个视差级别生成单通道图。另一方面,通过特征连接获得的 4D 成本量携带更多信息,但对资源要求很高。它们还需要在后续聚合网络中使用更多参数来学习相似度函数。 为了从两者中受益,《Group-wise Correlation Stereo Network》 提出了一种混合方法,它构建了两个成本量: 一个是通过特征串联,但使用两个卷积压缩成 12 个通道。第二个是通过将高维特征图沿特征通道划分为 Ng 组,计算每个组内所有视差级别的相关性,最后连接相关性图形成另一个 4D 体积来构建。与仅通过特征串联构建的 4D 成本量相比,这种方法显着减少了参数,而不会丢失太多信息。
从正则化成本量 C 估计视差图的最简单方法是使用像素级 argmin
,然而,argmin 算子无法产生亚像素精度,并且由于其不可微性而无法使用反向传播进行训练。
另一种方法是soft argmin
:
当分布是单峰和对称时,soft argmin 算子近似于亚像素 MAP 解。当这个假设不满足时,soft argmin 可能产生远离峰值的视差,并可能导致过度平滑。
PDS 引入了亚像素 MAP 近似
,它计算视差周围的加权平均值,最大后验概率为:
与 sof argmin 不同,这种方法允许在运行时改变视差范围,而无需重新训练网络。
前面得到的视差图一般是低分辨率的、不完整的、有噪声的、缺少细节的、边缘模糊的,因此需要后处理步骤。
训练有监督的方法以最小化衡量真实视差和估计视差之间误差的损失函数。它的形式是:
D 是距离的度量,可以是 L2
、L1
、smooth 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变换。后者避免了对大视差的过度拟合。
自监督方法已被提议作为在缺乏足够的真实训练数据的情况下的可能解决方案。这些方法主要依赖于图像重建损失,基本原理是,如果估计的视差图尽可能接近真实视差,则参考图像与重建参考图像之间的差异也会最小化,一般损失函数的形式为:
距离 D 可以是 L1
或 L2
距离。还有论文使用更复杂的距离度量。
手动获取地面实况深度数据极其困难且成本高昂,并且容易产生噪声和不准确。弱监督方法依靠辅助信号来减少人工标记的数量。例如,《Unsupervised adaptation for deep stereo》使用传统方法和置信度估计网络产生稀疏可靠的视差图作为监督信号,以微调深度网络。
一些方法结合了额外的线索和约束来提高视差估计的质量,包括平滑度、左右一致性、最大深度和尺度不变梯度损失。这种线索也可以是辅助信息
的形式,例如用于指导视差估计网络的语义线索
。
用于深度估计的深层架构受到域偏移问题的严重影响,在一个域上训练的深度学习网络(例如,通过使用合成数据)在应用于另一个域(例如真实数据)时会受到影响,从而导致对象边界模糊和不适定区域(例如对象遮挡、重复模式、 和无纹理区域)中的错误。
已经提出了几种策略来解决这个领域偏移问题,它们可以分为两类:
在这两种情况下,自适应可以是离线或在线的。
该类别中的方法通过首先对来自某个域的图像(例如 [22] 中的合成图像)训练网络,然后在来自目标域的图像上对其进行微调来执行域适应。一个主要的困难是从目标域收集立体或多视图图像的准确真实视差。因此无监督可用于解决该问题。
但离线适应技术降低了方法的可用性,因为用户每次接触新领域时都需要训练模型。因此,最近的几篇论文开发了在线适应技术。
此类别中的方法将一个域的数据转换为在样式上与另一个域的数据相似。
除了学习网络参数,我们还可以引入DARTS技术,学习一个最佳的网络架构。
从表 5 中,我们可以区分三种类型的方法:
PSMNet
、DeepPruner (Best) 和 (Fast)
以及 GANet
,需要 1 秒以上来估计一个视差图。它们在运行时还需要 3GB 到 10GB
的内存。因此,这些方法很难在移动平台上部署。AnyNet
和 iResNet
,在大约一秒内生成视差图。HighResNet
,需要不到 0.1 秒。通常,使用 3D 成本量的方法比使用 4D 成本量的方法速度更快,内存要求更低。然而,有两个例外,iResNet
和 DeepPruner
,它们使用 3D 成本卷,但在运行时需要大量内存。
下表 5 是在 640*480
分辨率图像对上的运行结果:
基于立体的深度估计的深度学习方法已经取得了可喜的成果。然而,这个话题仍处于起步阶段,还有待进一步发展。未来有以下方向值得探索:
将对象识别、高级场景理解和低级特征学习相结合
可能是解决这些问题的一种有前途的途径。新型轻量级、随后快速、端到端的深度网络
的研究。现有技术统一离散视差范围。
这会导致多个问题。特别是,虽然在视差空间中重建误差可能很小,但在深度空间中可能会导致米级的误差,尤其是在远距离时。将深度视为一个连续体可能是未来研究的一个有前途的途径。
无监督训练
的方法是一个很有前景的研究方向,同时一个类似于ImageNet的用于深度估计的大型数据集也是未来的一个探索方向。自动学习最佳架构
。我们希望在未来看到更多关于自动学习复杂视差估计架构及其激活函数的研究,这将消除对手动网络设计的需要
。