https://arxiv.org/pdf/2006.02535.pdf
A Survey on Deep Learning Techniques for Stereo-based Depth Estimation
发表在TPAMI上
从RGB图像估计深度是一个长期存在的不适定问题,计算机视觉、图形学和机器学习界已经研究了几十年。在现有的技术中,由于立体匹配与人类双目系统的紧密联系,立体匹配仍然是文献中使用最广泛的技术之一。传统上,基于立体的深度估计是通过匹配多幅图像的手工特征来实现的。尽管进行了大量的研究,但这些传统技术仍然存在高纹理区域、大均匀区域和遮挡。受其在解决各种2D和3D视觉问题方面日益成功的推动,基于立体的深度估计的深度学习吸引了社区越来越多的兴趣,2014年至2019年间,该领域发表了150多篇论文。这一新一代方法在性能上实现了重大飞跃,实现了自动驾驶和增强现实等应用。在本文中,我们将对这一不断发展的新研究领域进行全面调查,总结最常用的管道,并讨论其优点和局限性。回顾到目前为止所取得的成就,我们还推测了基于深度学习的立体深度估计研究的未来。
一幅或多幅RGB图像的深度估计是一个长期存在的不适定问题,在机器人技术、自动驾驶、对象识别和场景理解、3D建模和动画、增强现实、工业控制和医疗诊断等领域有着广泛的应用。这个问题已经被广泛研究了几十年。在文献中提出的所有技术中,由于立体匹配与人类双目系统的紧密联系,立体匹配传统上是最受探索的技术。
第一代基于立体的深度估计方法通常依赖于使用精确校准的相机拍摄的多幅图像中的匹配像素。虽然这些技术可以取得很好的效果,但它们在许多方面仍然有限。例如,在处理遮挡、无特征区域或具有重复图案的高纹理区域时,它们不适用。有趣的是,作为人类,我们善于利用先验知识解决此类不适定的反问题。例如,我们可以很容易地推断出物体的大致尺寸、它们的相对位置,甚至它们与我们眼睛的大致相对距离。我们之所以能够做到这一点,是因为之前看到的所有物体和场景都使我们能够建立先验知识,并开发3D世界的心理模型。第二代方法试图通过将问题描述为学习任务来利用这些先验知识。计算机视觉中深度学习技术[1]的出现,加上大型训练数据集的可用性不断增加,导致了第三代能够恢复丢失维度的方法。尽管这些方法是最新的,但在与计算机视觉和图形学相关的各种任务中,它们已经显示出令人兴奋和有希望的结果。
在这篇文章中,我们提供了一个全面和结构化的审查,最近的进展立体图像为基础的深度估计使用深度学习技术。这些方法使用两个或多个由空间分布的RGB摄像机拍摄的图像1。我们收集了150多篇论文,这些论文于2014年1月至2019年12月发表在领先的计算机视觉、计算机图形学和机器学习会议和期刊上。我们的目标是帮助读者在这个新兴的领域中导航,这个领域在过去几年中获得了巨大的发展势头。本文的主要贡献如下:;
•据我们所知,这是第一篇使用深度学习技术调查基于立体的深度估计的文章。我们对过去六年在主要会议和期刊上发表的150多篇论文进行了全面综述。
•我们提供了最先进的综合分类法。我们首先描述常见的管道,然后讨论每个管道中方法的异同。
•我们对问题的所有方面进行了全面回顾和深入分析,包括训练数据、网络架构及其对重建性能、训练策略和泛化能力的影响。
•我们使用公开的数据集和内部图像,对一些关键方法的特性和性能进行了比较总结。选择后者是为了测试这些方法在全新场景中的表现。本文的其余部分组织如下;第2节阐述了这个问题并制定了分类法。第3节概述了用于训练和测试基于立体的深度重建算法的各种数据集。第4节重点介绍了使用深度学习架构来学习如何匹配图像中的像素的作品。第5节回顾了用于立体匹配的端到端方法,而第6节讨论了如何将这些方法扩展到多视图立体情况。第7节重点介绍了训练程序,包括损失函数的选择和监督程度。第8节讨论了关键方法的性能。最后,第9节讨论了未来可能的研究方向,第10节总结了本文的主要贡献。
2范围和分类
设I={Ik,k=1,…,n}是n的集合≥ 1同一3D场景的RGB图像,使用内部和外部参数可能已知或未知的摄像头拍摄。目标是估计一个或多个深度图,这些深度图可以来自与输入[2]、[3]、[4]、[5]相同的视点,也可以来自新的任意视点[6]、[7]、[8]、[9]、[10]。本文主要研究基于立体的深度估计的深度学习方法,即在立体匹配的情况下n=2,在多视图立体(MVS)的情况下n>2。单目和基于视频的深度估计方法超出了本文的范围,需要单独调查。
基于学习的深度重建可以总结为学习一个预测器fθ的过程,该预测器fθ可以从一组图像I中推断出一个尽可能接近未知深度图D的深度图Dˆ。换句话说,我们寻求找到一个函数fθ,使得L(I)=D(fθ(I),D)最小化。这里,θ是一组参数,d(·,·)是真实深度图d和重建深度图fθ(I)之间距离的特定度量。重建目标L也称为损失函数。
我们可以区分两大类方法。第一节(第4节)中的方法模仿传统的立体匹配技术[11],通过明确学习如何匹配或对应输入图像中的像素。然后,可以将这种对应转换为光流或视差图,然后将其转换为参考图像中每个像素处的深度。预测器f由三个模块组成:特征提取模块、特征匹配和成本聚合模块以及视差/深度估计模块。每个模块都独立于其他模块进行训练。
第二类方法(第5节)使用可端到端训练的管道解决立体匹配问题。已经提出了两类主要的方法。早期的方法将深度估计表述为一个回归问题。换句话说,深度图直接从输入中回归,而无需在视图中明确匹配特征。虽然这些方法在运行时简单且快速,但它们需要大量的训练数据,这是很难获得的。第二类中的方法模仿传统的立体匹配管道,将问题分解为由可微块组成的阶段,从而允许端到端训练。虽然大量文献集中在两两立体方法上,但有几篇论文也讨论了多视角立体的情况,这些将在第6节中进行综述。
在所有方法中,可以使用细化模块[2]、[3]、[12]、[13]和/或渐进重建策略进一步细化估计的深度图,其中每次新图像可用时都会细化重建。
最后,基于深度学习的立体方法的性能不仅取决于网络结构,还取决于它们所训练的数据集(第3节)和用于优化其参数的训练程序(第7节)。后者包括损失函数和监督模式的选择,可以使用三维标注、弱监督或自监督进行完全监督。我们将在后续章节中讨论所有这些方面。
3个数据集
表1总结了一些用于训练和测试基于深度学习的深度估计算法的数据集。下面,我们将根据这些数据集的大小、空间和深度分辨率、它们提供的深度标注类型,以及许多基于深度学习的算法所面临的领域差距(或移位)问题来讨论这些数据集。
[if !supportLists](1) [endif]数据集大小。
2016年之前出现的第一批数据集规模较小,因为难以创建真值3D标注。一个例子是两个KITTI数据集[15],[21],其中包含200个立体匹配对及其相应的视差真值。它们已被广泛用于训练和测试基于patch 的CNN,用于立体匹配算法(见第4节),该算法具有较小的感受野。因此,单个立体匹配对可以产生数千个训练样本。然而,在端到端架构(第5节和第6节)中,立体匹配对只对应于一个样本。端到端网络有大量的参数,因此需要大量的数据集来进行有效的训练。虽然收集大型图像数据集非常容易,例如,通过使用NYU2[17]、ETH3D[25]、SUN3D[19]和ETH3D[25]中的视频序列,用3D标签对其进行标注非常耗时。最近的工作,例如AppoloScape[34]和A2D2[35],使用激光雷达获取密集的3D标注。
文献中广泛使用了数据增强策略,例如对可用的图像应用几何变换和光度变换。然而,还有一些其他策略是特定于深度估计的。这包括从各种(随机)视点、姿势和光照条件,从3D CAD模型、2D和2.5D视图中人工合成和渲染。还可以在真实图像的顶部覆盖渲染的3D模型。该方法已用于生成[22]的FlyingThings3D、Monkaa和Driving数据集,以及用于对全方位图像的MVS进行基准测试的OmniThings和OmniHouse数据集[30],[31]。Huang等人[27]遵循了类似的想法,但使用视频游戏中的场景生成MVS Synth,这是一个写实的合成数据集,为基于学习的多视点立体算法而准备。
主要的挑战是,生成包含各种真实世界外观和运动的大量合成数据并非易事[36]。因此,许多作品通过在没有3D监控的情况下训练深层网络,克服了对真值深度信息的需求,见第7.1节。其他人使用传统的深度估计和运动结构(SfM)技术生成3D标注。例如,Li等人[28]使用现代结构运动和多视图立体(MVS)方法,结合多视图互联网照片集,创建了大规模超深度数据集,通过更大的训练数据集大小提高了深度估计精度。该数据集还自动增加了使用语义分割生成的顺序深度关系。
(2) 空间和深度分辨率。
视差/深度信息可以是与输入图像具有相同或更低分辨率的图形式,也可以是参考图像中某些位置的稀疏深度值形式。大多数现有数据集的空间分辨率较低。然而,近年来,人们越来越关注高分辨率图像的立体匹配。高分辨率数据集的一个例子是Yang等人[32]的HR-VS和HRRS,其中每个分辨率为1918×2424的RGB对都用相同分辨率的深度图进行标注。然而,数据集仅包含800对立体图像,这对于端到端训练来说相对较小。其他数据集,如ApolloScape[34]和A2D2[35]包含3130×960量级的高分辨率图像,以及超过100个小时的立体驾驶视频(以ApolloScape为例),专门设计用于测试自动驾驶算法。
(3) 欧几里得深度vs.序数深度。
有些论文(例如MegaDepth[28])没有用精确的深度值(即欧几里德深度值)手动标注图像,而是提供顺序标注,即像素x1与像素x2更近、更远或处于相同深度。序数标注比欧几里德标注更简单,实现速度更快。事实上,由于序数深度对深度估计的不精确性不太敏感,因此使用传统的立体匹配算法可以准确地获得深度
(4) 域名缺口。
虽然人工扩充训练数据集可以丰富现有的训练数据集,但真实数据和合成数据之间的条件差异导致的领域转移可能会导致在应用于真实环境时的精确度较低。在第7.3节中,我们将讨论文献中如何解决这个领域转移问题。
4立体匹配深度
基于立体的深度重建方法获取n=2个RGB图像,并生成一个视差图D,该图使形式的能量函数最小化:
这里,x和y是图像像素,Nx是x邻域内的一组像素。Eqn的第一项。(1) 是匹配成本。当使用校正立体对时,C(x,dx)测量将左图像的像素x=(i,j)与像素y=(i,j)匹配的成本− 右图像的dx)。在这种情况下,dx=D(x)∈ [dmin,dmax]是像素x处的视差。然后可以通过三角测量推断深度。当视差范围被划分为nd视差级别时,C变成大小为W×H×nd的3D成本体积。在更一般的多视图立体匹配情况下,即n≥ 2,成本C(x,dx)测量深度dx的参考图像上x的逆似然。Eqn的第二项。(1) 是一个正则化术语,用于施加约束,例如平滑度和左右一致性。
传统上,这个问题是通过使用四个构建块的流水线来解决的[11],见图1:(1)特征提取,(2)跨图像的特征匹配,(3)视差计算,(4)视差细化和后处理。前两个区块构成cost volumes C。第三个区块将cost volumes 正则化,然后通过最小化等式N进行查找。(1) ,这是对视差图的初步估计。最后一个块对初始视差图进行细化和后处理。
本节重点介绍如何使用基于深度学习的方法实现这些单独的模块。表2总结了最先进的方法。
4.1学习特征提取和匹配
立体匹配的早期深度学习技术取代了手工制作的功能(图A)具有习得的特征[37]、[38]、[39]、[42]。他们使用两个patch ,一个以左图上的像素x=(i,j)为中心,另一个以像素y=(i,j)为中心− d) 在右图上(带d)∈ {0,…,nd}),使用CNN计算它们相应的特征向量,然后对它们进行匹配(图?的块B),使用标准相似性度量,如L1、L2和相关度量,或使用顶级网络学习的度量,生成相似性得分C(x,d)。这两个组成部分可以单独或联合进行训练。
4.1.1基本网络架构
[if !supportLists][37]、 [endif][38]、[39]、[42]中介绍的基本网络架构如图2-(a)所示,由两个CNN编码分支组成,它们充当描述符计算模块。第一个分支在左图的像素x=(i,j)周围获取一个patch ,并输出一个表征该patch 的特征向量。第二个分支在像素y=(i,j)周围取一个patch − d) ,d在哪里∈ [dmin,dmax]是一个候选人差异。Zbontar和LeCun[39]以及后来的Zbontar等人[42]使用由四个卷积层组成的编码器,见图2-(a)。除最后一层外,每一层后面都有一个ReLU单元。Zagoruyko和Komodakis[37]以及Han等人[38]使用了类似的架构,但增加了:
•除最后一层外,每层之后的最大池和子采样,见图2-(b)。因此,与[39]、[42]相比,该网络能够解释更大的patch 大小和更大的视点变化。
•每个特征提取分支末端的空间金字塔池(SPP)模块[37],以便网络可以处理任意大小的patch ,同时生成固定大小的特征,见图2-(c)。它的作用是通过空间池将最后一个卷积层的特征聚合到一个固定大小的特征网格中。该模块的设计方式是,池区域的大小随输入的大小而变化,以确保输出特征网格的大小与输入patch 或图像的大小无关。因此,该网络能够处理任意大小的patch /图像,并在不改变其结构或重新训练的情况下计算相同维度的特征向量。
然后将学习到的特征反馈给top模块,该模块返回相似性分数。它可以实现为标准的相似性度量,例如L2距离、余弦距离和(标准化的)相关距离(或内积),如[39],[42]中的MC CNN fast(MC CNN fst)架构。L2距离上的相关的主要优点是,它可以使用一层2D[51]或1D[22]卷积运算来实现,称为相关层。相关层不需要训练,因为滤波器实际上是由网络的第二个分支计算的特征。因此,相关层在文献[22]、[39]、[41]、[42]、[44]中被广泛使用。
最近的工作没有使用手工制作的相似性度量,而是使用由完全连接(FC)层[37]、[38]、[42]、[46]、[49]组成的决策网络,可以实现为1×1卷积、完全卷积层[47]或卷积层,然后是完全连接层。决策网络与特征提取模块联合训练,以评估两个图像块之间的相似性。Han等人[38]使用由三个完全连接的层和一个softmax组成的顶层网络。Zagoruyko和Komodakis[37]使用两个线性全连接层(每个层有512个隐藏单元),由一个ReLU激活层隔开,而Zbontar等人[42]的MC CNN acrt网络使用最多五个全连接层。在所有情况下,由特征编码模块的两个分支计算的特征首先被连接,然后被馈送到顶层网络。另一方面,Hartmann等人[47]在将多个patch 的特征输入决策网络之前,使用均值池对它们进行聚合。通过合并而不是连接进行聚合的主要优点是,前者可以处理任意数量的patch ,而无需改变网络的架构或对其进行重新训练。因此,它适用于计算多路径相似性。
使用决策网络而不是手工制作的相似性度量,可以从数据中学习适当的相似性度量,而不是一开始就强加一个。它比使用相关层更精确,但速度要慢得多。
4.1.2网络架构变体
自引入以来,基线架构以多种方式进行了扩展,以便:(1)使用残差网络(ResNet)[46]改进训练;(2)在不损失分辨率或计算效率的情况下扩大网络的接收范围[48],[49],[52],(3)处理多尺度特征[37],[40],(4)减少向前传球的次数[37],[44],(5)通过学习相似性而不明确学习特征来简化训练过程[37]。
4.1.2.1 ConvNet与ResNet的对比:
Zbontar等人[39]、[42]和Han等人[38]在特征提取块中使用标准卷积层,Shaked和Wolf[46]添加了具有多级加权残差连接的残差块,以便于训练非常深的网络。其特殊性在于,网络自行学习如何调整添加的跳过连接的贡献。经证明,这种架构优于Zbontar等人[39]的基本网络。
4.1.2.2扩大网络的接收范围:
学习特征的规模由(1)输入块的大小,(2)网络的感受野,以及(3)每个层中使用的卷积滤波器和池操作的内核大小来定义。虽然增加内核大小可以捕获图像像素之间更多的全局交互,但这会导致较高的计算成本。此外,在[39]、[42]中使用的传统合并会降低分辨率,并可能导致精细细节的丢失,这不适用于密集的对应关系估计。
为了在不损失分辨率或增加计算时间的情况下扩大感受野,一些技术,例如[52],使用扩展卷积,即大卷积滤波器,但带有孔,因此计算效率高。其他技术,例如[48]、[49],使用放置在网络中不同位置的空间金字塔池(SPP)模块,见图2-(c-e)。例如,Park等人[48]引入FW-CNN进行立体匹配,在决策网络的末端附加了一个SPP模块,见图2-(d)。因此,感受野可以扩大。然而,对于参考图像中的每个像素,需要计算完全连接的层和池操作的nd次,其中nd是视差水平的数量。为了避免这种情况,Ye等人[49]将SPP模块放在每个特征计算分支的末尾,见图。2-(c)和(e)。这样,每个patch 只计算一次。此外,Ye等人[49]将多个具有不同窗口大小的一步池应用于不同的层,然后连接它们的输出以生成特征图,见图2-(e)。
4.1.2.3学习多尺度特征:
到目前为止所描述的方法可以通过使用多流网络(每个斑块大小一个流)[37],[40]来扩展,以在多个尺度上学习特征,见图3。Zagoruyko和Komodakis[37]提出了一种双流网络,它本质上是由两个暹罗网络组成的网络,在输出端由一个顶部网络组合而成,见图3-(a)。第一个暹罗网络称为中央高分辨率流,接收以感兴趣像素为中心的两个32×32patch 。第二个网络称为环绕低分辨率流,接收两个64×64patch 作为输入,但向下采样到32×32。然后将两个流的输出连接起来,并馈送到顶级决策网络,该网络返回匹配分数。Chen等人[40]使用了一种类似的方法,但在将两个流计算出的特征输入顶级决策网络之前,它不是将它们聚合在一起,而是在每个流上附加一个顶级网络,以产生匹配分数。然后通过投票将这两个分数相加,见图3-(b)。
多流架构的主要优点是,它可以在一次向前传递中计算多个尺度的特征。然而,它要求每个刻度有一条流,如果需要两个以上的刻度,这是不实际的。
4.1.2.4减少向前传球的次数:
使用到目前为止描述的方法,从一对立体图像推断原始cost volumes 是使用类似于移动窗口的方法来执行的,该方法将需要多个前向过程,每像素nd个前向过程,其中nd是视差水平的数量。然而,由于相关性是高度可并行的,向前传递的次数可以显著减少。例如,Luo等人[44]通过使用连体网络将前向传递的次数减少到每像素一次,该网络的第一个分支在像素周围取一个patch ,而第二个分支则取一个更大的patch ,扩展到所有可能的差异。左分支的输出是单个64D表示,右分支的输出是nd×64。然后,相关层计算长度为nd的向量,其中−th元素是将左侧图像上的像素x与像素x匹配的成本− 在校正后的右图上显示d。
Zagoruyko和Komodakis[37]表明,两个特征提取子网络的输出只需要每像素计算一次,而不需要为考虑中的每个视差重新计算。这可以通过传播全分辨率图像而不是小patch ,在单个正向过程中对整个图像完成。此外,通过将完全连接的层替换为1×1内核的卷积层,可以在单个正向过程中计算由精确架构(即MC CNNAccr)中的完全连接层组成的顶层网络的输出。然而,它仍然需要为考虑中的每个差距向前传球一次。
4.1.2.5无特征学习的相似性学习:
特征提取和相似度计算网络的联合训练统一了特征学习和度量学习步骤。Zagoruyko和Komodakis[37]提出了另一种没有直接功能概念的架构,见图2-(f)。在这种架构中,左、右patch 被打包在一起,并共同馈送到一个双通道网络中,该网络由卷积层和ReLU层以及一组完全连接的层组成。该网络不计算特征,而是直接输出输入patch 对之间的相似性。Zagoruyko和Komodakis[37]表明,这种结构很容易训练。然而,由于整个网络需要每像素运行nd次,因此在运行时成本很高。
4.1.3训练程序
本节描述的网络由特征提取块和特征匹配块组成。由于目标是学习如何匹配patch ,这两个模块将以有监督的方式(第4.1.3.1节)或弱监督的方式(第4.1.3.2节)联合训练。
4.1.3.1监督训练:
现有的监督训练方法使用由正面和负面示例组成的训练集。每个正(分别为负)示例是一对,由另一幅图像中的参考patch 及其匹配patch (分别为非匹配patch )组成。训练要么一次举一个正面或负面的例子,并调整相似性[37]、[38]、[40]、[41],要么在每一步都举一个正面和负面的例子,并最大化相似性之间的差异,因此,旨在使正对的两个patch 比负对的两个patch 更相似[39]、[43]、[45]。后一种模式被称为三重对比学习。
Zbontar等人[39],[42]使用KITTI2012[15]或Middlebury[20]数据集的基本真相差异。对于每个已知的视差,该方法提取一个负对和一个正对作为训练示例。因此,该方法能够从KITTI2012[15]中提取2500多万个训练样本,从Middlebury数据集[20]中提取3800多万个训练样本。Chen等人[40]、Zagoruyku和Komodakis[37]以及Han等人[38]也使用了这种方法。通过使用数据增强技术,可以进一步增加训练数据量,例如翻转patch 并在不同方向上旋转它们。
虽然有监督的学习工作很好,神经网络模型的复杂性需要非常大的标记训练集,这是硬的或昂贵的收集实际应用(例如,考虑Mars景观的立体重建)。即使有如此大的数据集,真值通常也会从深度传感器中产生,并且通常包含降低监督学习有效性的噪声[53]。这可以通过使用随机扰动[39]或合成数据[22]、[54]增加训练集来缓解。然而,合成过程是手工制作的,没有考虑到特定于立体匹配系统和目标场景的规律性。
损失函数。
训练有监督的立体匹配网络以最小化匹配损失,匹配损失是测量每个训练样本的真值和预测匹配分数之间差异的函数。可以使用(1)L1距离[40]、[42]、[46]、(2)铰链损失[42]、[46]或(3)交叉熵损失[44]来定义。
4.1.3.2弱监督学习:
弱监督技术利用一个或多个立体约束来减少手动标记的数量。Tulyakov等人〔50〕考虑多实例学习(MIL)结合立体匹配约束和关于场景的粗略信息来训练与地面实况不可用的数据集的立体匹配网络。与监督技术不同,监督技术需要成对的匹配和非匹配patch ,训练集由N个三元组组成。每个三元组包括:(1)在参考图像的水平线上提取的W个参考patch ,(2)从右侧图像的相应水平线上提取的W个正patch ,以及(3)从右侧图像的另一水平线上提取的W个负patch ,即与参考patch 不匹配的patch 。因此,训练集可以从立体对中自动构建,而无需手动标记。
然后利用五个约束对该方法进行训练:极线约束、视差范围约束、唯一性约束、连续性(平滑度)约束和顺序约束。然后,他们定义了使用这些约束的不同子集的三种损失,即:
•多实例学习(MIL)损失,使用极线和视差范围约束。从这两个约束条件中,我们知道每个非遮挡参考斑块在已知的索引间隔内都有一个匹配的正斑块,但没有一个匹配的负斑块。因此,对于每个参考patch ,最佳参考正匹配的相似性应大于最佳参考负匹配的相似性。
•Construction 损失,增加了MIL方法的唯一性约束。它告诉我们匹配的阳性斑块是唯一的。因此,对于每个patch ,最佳匹配的相似性应该大于次优匹配的相似性。
•Construction DP使用所有约束,但使用动态规划找到最佳匹配。
该方法已被用于训练一个以两个patch 为输入并预测相似性度量的深层暹罗神经网络。标准数据集的基准测试表明,性能与MC CNN fst[39]上公布的结果一样好或更好,后者使用相同的网络架构,但使用完全标记的数据进行训练。
4.2正则化和视差估计
一旦估计了原始cost volumes ,就可以通过去掉等式n的正则化项来估计差异。(1) ,或相当于图1的块C,并采用argmin、softargmin或亚像素图近似值(图1的块D)。然而,根据图像特征计算的原始cost volumes 可能会受到噪声污染,例如,由于非朗伯曲面、对象遮挡或重复模式的存在。因此,估计的深度图可能会有噪声。因此,一些方法通过使用传统的基于MRF的立体框架进行成本-体积正则化来克服这个问题[39],[40],[44]。在这些方法中,初始cost volumes C被输入到全局[11]或半全局[55]匹配器以计算视差图。半全局匹配在精度和计算要求之间提供了良好的折衷。在这种方法中,方程n的光滑项。(1) 定义如下:
其中dxy=dx−dy、α1和α2是选择的正权重,因此α2>α1,δ是Kronecker delta函数,当括号中的条件满足时,它给出1,否则为0。为了解决这个优化问题,SGM能量被分解成多个能量E,每个能量沿着路径s定义。能量被单独最小化,然后聚合。x处的差异是使用赢家通吃策略计算的,该策略包括所有方向的总成本:
该方法需要设置方程n的两个参数α1和α2。(2). Seki等人[56]没有手动设置它们,而是提出了SGM网络,这是一种经过训练的神经网络,可以在每个图像像素处提供这些参数。与[39]中的手动调整方法相比,它们获得了更好的惩罚。
SGM方法使用聚合方案组合多个一维扫描线优化的成本,存在两个主要问题:(1)作为该算法核心的扫描线优化方法导致的条纹伪影可能导致不准确的结果,(2)高分辨率图像或资源受限的设备可能会导致高内存占用。因此,Schonberger等人[57]将融合步骤重新定义为在图像中每个像素的所有扫描线优化方案中选择最佳方案的任务。他们使用每像素随机森林分类器来解决这个问题。
Poggi等人[58]学习加权聚合,其中每个1D扫描线优化的权重是使用使用传统技术[59]或深度神经网络计算的置信图定义的,见第5.5节。
5立体匹配的端到端深度
最近的工作使用端到端训练的管道来解决立体匹配问题。已经提出了两类主要的方法。早期的方法,例如FlowNetSimple[51]和DispNetS[22],使用单个编码器-解码器,将左右图像堆叠成一个6D体积,并回归视差图。这些方法不需要显式的特征匹配模块,运行时速度很快。然而,它们需要大量的训练数据,这是很难获得的。第二类中的方法模拟传统的立体匹配管道,将问题分为几个阶段,每个阶段由可微块组成,从而允许端到端训练。下面,我们将详细回顾这些技术。图4提供了最先进的分类法,而表3比较了基于这种分类法的28种关键方法。
5.1特征学习
特征学习网络遵循与图中描述的结构相同的结构。2和3。但是,不是处理单个patch ,而是在一个正向过程中处理整个图像,生成与输入图像相同或更低分辨率的特征图。已使用两种策略在图像中启用匹配功能:
(1) 由n个分支组成的多分支网络,其中n是输入图像的数量。每个分支生成一个特征映射,描述其输入图像的特征[22]、[60]、[61]、[62]、[63]、[64]、[65]。这些技术假设输入图像已被校正,因此对相应的搜索仅限于沿水平扫描线进行。
(2) 由nd分支组成的多分支网络,其中nd是视差级别的数量。第d分支机构,1≤ D≤ nd,处理两个图像的堆栈,如图2-(f)所示;第一个图像是参考图像。第二幅是右图,但被重新投影到第d个深度平面[66]。每个分支生成一个相似性特征映射,该映射描述了参考图像和重新投影到给定深度平面上的右图像之间的相似性。虽然这些技术不会对图像进行校正,但它们假定摄像机的内在和外在参数是已知的。此外,如果不更新网络架构并对其进行再训练,就无法改变差异级别的数量。
在这两种方法中,特征提取模块使用完全卷积(ConvNet)网络(如VGG)或残差网络(如resnet)[67]。后者有助于训练非常深入的人际网络[68]。它们还可以通过使用扩展卷积(第4.1.2.2节)或多尺度方法,在一元特征中捕获并合并更多全局上下文。例如,Chang和Chen[64]的PSM网络附加了一个空间金字塔池(SPP)模块,以便在多个尺度上提取和聚合特征。Nie等人[65]使用称为多级上下文超级聚合(MLCUA)的多级上下文聚合模式扩展了PSMNet。它通过层内和层间特征的组合,将所有卷积特征封装成一种更具区别性的表示。它将最浅、最小尺度的特征与更深、更大尺度的特征结合在一起,只使用浅跳连接。与PSM Net[64]相比,这提高了性能,而不会显著增加网络中的参数数量。
5.2Cost volume
一旦计算出特征,下一步就是计算匹配分数,它将以cost volumes 的形式反馈给顶级网络,用于正则化和视差估计。cost volumes 可以是三维的(3D),其中第三维度是差异水平(第5.2.1节),四维的(4D),其中第三维度是特征维度,第四维度是差异水平(第5.2.2节),或者混合使用,以受益于3D和4Dcost volumes 的特性(第5.2.3节)。一般来说,cost volumes的分辨率较低,例如,在1/8处,比输入[72],[73]低。然后对其进行放大和细化,或按原样估计低分辨率视差图,然后使用细化模块对其进行放大和细化。
5.2.1 3Dcost volumes
5.2.1.1构造:通过获取左图像特征和右图像特征之间的L1、L2或相关距离(在预定义的视差范围内),可以简单地构建3Dcost volumes ,请参见[22]、[72]、[73]、[74]、[80]、[81]、[83]和[51]的FlowNetCorr。基于相关性的差异的优点是,它们可以使用不需要训练的卷积层来实现(其滤波器是由网络的第二个分支计算的特征)。FlowNetCorr[51]等流量估计网络使用2D相关性。视差估计网络,例如[22]、[68]、iResNet[63]、DispNet3[75]、EdgeStereo[76]、HD3[80]和[83]、[84],使用1D相关性。
5.2.1.2 3Dcost volumes 的规范化:
一旦计算了成本体积,就可以使用argmin、softargmin或成本体积深度维度上的亚像素图近似来估计初始视差图,例如参见[73]和图5-(a)。这相当于去掉等式n的正则化项。(1). 然而,一般来说,原始cost volumes 受到噪声污染(例如,由于非朗伯曲面、对象遮挡和重复模式的存在)。正则化模块的目标是在估计初始视差图之前,利用空间和/或视差维度上的上下文来细化cost volumes 。
(1) 使用传统方法进行正则化。早期的论文使用传统的技术,例如马尔可夫随机场(MRF)、条件随机场(CRF)和半全局匹配(SGM),通过显式地结合深度图的空间约束(例如平滑度)来调整cost volumes 。最近的论文表明,深度学习网络可以用来微调这些方法的参数。例如,Knobelreiter等人[71]提出了一种混合CNN-CRF。CNN计算Eqn的匹配项。(1) ,成为CRF模块的一元术语。CRF的成对项由使用另一个CNN计算的边权重参数化。与之前的方法相比,经过端到端训练的CNN-CRF管道可以使用更少的参数(从而更好地利用训练数据)实现具有竞争力的性能。
Zheng等人[89]提供了一种将CRF建模为分段任务的递归神经网络(RNN)的方法,以便可以对整个管道进行端到端的训练。与分段、深度估计不同,深度样本的数量(对应的是分段任务中的语义标签)预计会因不同的场景而不同。因此,薛等人[90]重新设计了RNN形成的CRF模块,使模型参数与深度样本数量无关。Paschalidou等人[91]将MRF中的推理表述为可微函数,因此允许使用反向传播进行端到端训练。请注意,Zheng等人[89]和Paschalidou等人[91]专注于多视角立体视觉(第6节)。然而,他们的方法是通用的,可以用于调整使用成对立体网络获得的3D成本。
[if !supportLists](2) [endif]使用2D卷积进行正则化(2DConvNet),图。5-(b)和(c)。另一种方法是使用一系列二维卷积层处理三维cost volumes ,产生另一个三维cost volumes [22]、[51]、[62]、[63]。二维卷积在计算上是高效的。然而,它们只捕获并聚合空间维度上的上下文,见图5-(b),而忽略视差维度上的上下文。Yao等人[92]通过选通循环单元(GRU)沿深度方向对2D成本图进行顺序正则化,见图5-(c)。这大大减少了内存消耗,例如,从[93]中的15.4GB减少到5GB左右,使高分辨率重建成为可能,同时沿空间和视差维度捕获上下文。
(3) 使用3D卷积进行正则化(3DConvNet),图5-(d)。Khamis等人[72]使用L2距离计算初始3Dcost volumes ,并使用3D卷积在空间和视差维度上对其进行正则化,见图5-(d)。由于其内存需求,该方法首先估计低分辨率视差图,然后使用剩余学习逐步改进。Zhang等人[73]遵循相同的方法,但细化块从分别在上采样视差和输入图像上运行的单独卷积层开始,然后合并特征以产生残差。Chabra等人[81]观察到,成本-体积正则化步骤使用了大部分计算资源。然后,他们提出了一个正则化模块,该模块在宽度、高度和视差维度中使用3D扩展卷积,以减少计算时间,同时捕获更广泛的上下文。
5.2.2 4Dcost volumes
5.2.2.1Construction :
4D保留特征尺寸的成本体积[32]、[61]、[64]、[65]、[70]、[79]。4Dcost volumes 背后的理性是让顶级网络学习适当的相似性度量,以比较功能,而不是像第5.2.1节那样使用手工制作的功能。
4Dcost volumes 可以通过预先定义的差异范围内的特征差异[32]来构建,这导致cost volumes 大小为H×W×2nd×c,或者通过连接由网络的不同分支计算的特征[61]、[64]、[65]、[70]、[79]。使用这种方法,Kendall等人[61]构建了一个尺寸为H×W×(nd+1)×c(c这里是特征的尺寸)的4D体积。Zhong等人[70]采用相同的方法,但以交错方式连接特征。也就是说,如果fL是左图像的特征映射,fR是右图像的特征映射,那么最终的特征体积是以这样的方式组合的,即其2i−第个切片保存左侧要素地图,而(2i+1)−th切片持有正确的特征图,但差异d=i。这导致4Dcost volumes 是Kendall等人[61]cost volumes 的两倍。为了捕获cost volumes 中的多尺度背景,Chang和Chen[64]为每个输入图像生成一个特征金字塔,将它们向上采样到相同的维度,然后通过串联构建单个4Dcost volumes 。Wu等人[79]从多尺度特征(四尺度)构建多尺度4Dcost volumes 。
与3Dcost volumes相比,4Dcost volumes包含更丰富的信息。然而,请注意,通过串联获得的体积不包含有关特征相似性的信息,因此在后续模块中需要更多参数来学习相似性函数。
5.2.2.2 4Dcost volumes 的规范化:
4Dcost volumes 通过3D卷积进行正则化,3D卷积利用高度、宽度和视差维度的相关性生成3Dcost volumes 。Kendall等人[61]使用带有3D卷积和跳过连接的U-net编码器-解码器。Zhong等人[70]使用了类似的方法,但添加了从收缩到正则化网络扩展部分的剩余连接。为了在不增加大量额外计算负担的情况下考虑大的上下文,Kendall等人[61]采用四级子抽样的方式分层调整cost volumes ,允许在大范围内明确利用上下文。Muliscale 4Dcost volumes[79]使用3D多成本聚合模块聚合为单个3Dcost volumes,该模块以成对方式从最小的卷开始运行。每个体积都经过编码器-解码器处理,上采样到金字塔中的下一个分辨率,然后使用3D特征融合模块进行融合。
此外,半全局匹配(SGM)技术已被用于规范化4Dcost volumes ,其中其参数使用卷积网络估计。特别是,Yu等人[77]使用由3D卷积和上卷积组成的编码器-解码器处理初始4Dcost volumes ,并产生另一个3Dcost volumes 。随后的聚合步骤使用端到端两个流网络执行:第一个流生成三个成本聚合建议Ci,每个树维度一个,即高度、宽度和视差。第二个流是用于选择最佳方案的指导流。它使用2D卷积生成三个制导(置信度)地图。最终3Dcost volumes 是三个方案的加权和,即maxi(Ci∗ Wi)。
3D卷积在内存需求和计算时间方面非常昂贵。因此,继Kendall等人[61]的开创性工作之后,后续工作的重点是(1)减少3D卷积层的数量[85],(2)逐步细化成本体积和差异图[64],[88],以及(3)压缩4D成本体积[78]。下面,我们将讨论这些方法。
(1) 减少三维卷积层的数量。Zhang等人[85]介绍了GANet,它用(1)两个3D卷积层,(2)半全局聚合层(SGA)和(3)局部引导聚合层(LGA)替换正则化块中的大量3D卷积层。SGA是半全局匹配(SGM)的可微近似。与SGM不同,在SGA中,用户定义的参数是可学习的。此外,它们被添加为匹配成本项的惩罚系数/权重。因此,它们具有适应性,在不同的位置更灵活地适应不同的情况。另一方面,LGA层附加在末端,旨在细化薄结构和对象边缘。SGA和LGA层用于替换昂贵的3D卷积,捕获局部和整体图像成本依赖关系。在遮挡、大的无纹理/反射区域和薄结构等具有挑战性的区域,它们显著提高了视差估计的准确性。
(2) 渐进式方法。一些技术避免使用昂贵的3D卷积直接调整高分辨率4D成本体积。相反,它们以渐进的方式运作。例如,Chang和Chen[64]介绍了PSM Net,它首先估计低分辨率4D成本体积,然后使用堆叠的沙漏3D编码器-解码器块对其进行正则化。每个块返回一个3Dcost volumes ,然后对其进行上采样,并使用附加的3D卷积层和softmax操作符对高分辨率视差图进行回归。因此,可以将堆叠的沙漏块视为细化模块。
Wang等人[88]使用一个称为AnyNet的三阶段视差估计网络,该网络以从粗到细的方式构建cost volumes 。第一阶段以低分辨率特征图作为输入,构建低分辨率4D代价体,然后通过在小视差范围内搜索,使用3D卷积来估计低分辨率视差图。然后对前一级的预测进行上采样,并使用相同的视差估计网络在更高的尺度上扭曲输入特征,以估计视差残差。好处是双重的;首先,在较高分辨率下,网络只学习预测残差,这降低了计算成本。第二,这种方法是渐进的,人们可以选择返回中间差异,以准确性换取速度。
(3) 4Dcost volumes压缩。Tulyakov等人[78]通过将特征压缩成紧凑的匹配签名,减少了内存使用,而不必牺牲准确性。因此,内存占用显著减少。更重要的是,它允许网络处理任意数量的多视图图像,并在运行时改变输入的数量,而无需重新训练网络。
5.2.3混合3D-4Dcost volumes
相关层提供了一种有效的方法来测量特征相似性,但它会丢失很多信息,因为它只为每个差异级别生成一个通道图。另一方面,通过特征串联获得的4Dcost volumes 携带更多信息,但需要资源。它们还需要在随后的聚合网络中使用更多参数来学习相似性函数。为了从两者中获益,郭等人[86]提出了一种混合方法,该方法构建了两个cost volumes ;一个特征串接,但使用两个卷积压缩成12个通道。第二种方法是沿着特征通道将高维特征图分成Ng组,计算各组在所有视差水平上的相关性,最后将相关图连接起来,形成另一个4D体积。然后将这两个体积组合在一起,并传递给三维正则化模块,该模块由四个三维卷积层和三个堆叠的三维沙漏网络组成。与仅通过特征拼接构建的4Dcost volumes相比,这种方法可以显著减少参数,而不会丢失太多信息,如完整相关性。
5.3视差计算
从正则化代价体积C估计视差图的最简单方法是使用像素级的argmin,即dx=arg mind C(x,d)(或者如果体积C编码似然度,则等效为arg max)。然而,agrmin/argmax运算符无法产生亚像素精度,并且由于其不可微性,无法使用反向传播进行训练。另一种方法是视差上的可微软argmin/max[61]、[66]、[72]、[73]:
当分布为单峰对称分布时,soft argmin算子近似亚像素图解[78]。如果未满足此假设,softargmin将混合模式,并可能产生远离所有模式的解决方案,并可能导致过度平滑。Chen等人[87]观察到,在边界像素处,估计的差异遵循多峰分布,情况尤其如此。为了解决这些问题,Chen等人[87]仅对以最大概率模式为中心的窗口应用加权平均操作,而不是对整个视差范围使用全波段加权平均。
Tulyakov等人[78]引入了亚像素图近似,它以最大后验概率计算视差周围的加权平均值,如下所示:
其中δ是在[78]中设置为4的元参数,σ(C(x,d))是像素x具有视差d的概率,并且ˆd=arg max d C(x,d)。亚像素图仅用于推断。Tulyakov等人[78]还表明,与softargmin/max不同,这种方法允许在运行时改变视差范围,而无需重新训练网络。
5.4变种
到目前为止,描述的管道推断出的视差图可能具有低分辨率(沿宽度、高度和视差维度)、不完整、嘈杂、缺少精细细节,并且存在过度平滑的问题,尤其是在对象边界处。因此,引入了许多变体来(1)提高分辨率(第5.4.1节),(2)提高处理时间,尤其是在运行时(第5.4.3节),以及(3)执行视差补全和去噪(第5.4.2节)。
5.4.1学习推断高分辨率视差图
直接回归包含精细细节的高分辨率深度图,例如,通过添加进一步的上卷积层来提高cost volumes ,将需要大量参数,因此计算成本高且难以训练。因此,由于内存限制或速度限制,最先进的方法难以处理高分辨率图像。这可以通过使用自下而上或自上而下的技术来解决。
自底向上的技术以滑动窗口的方式运行。他们使用小patch ,估计整个patch 或patch 中心像素的精细视差。Lee等人[94]采用了拆分合并的方法。将输入图像分割为多个区域,并估计每个区域的深度。然后使用在傅里叶域中运行的融合网络合并估计值,以便可以处理具有不同裁剪率的深度图。虽然滑动窗口和拆分合并方法都降低了内存需求,但它们需要多次前向传递,因此不适合实时应用。此外,这些方法不捕获全局上下文,这可能会限制它们的性能。
另一方面,自上而下的技术以分层的方式对视差图估计进行操作。他们首先估计低分辨率视差图,然后将其上采样到所需的分辨率,例如使用双线性上采样,然后使用残差学习对其进行进一步处理,以恢复小细节和薄结构[72],[73],[81]。这个过程也可以通过级联许多这样的细化块来逐步运行,每个块细化前一个块的估计值[62],[72]。与上采样成本不同,细化视差图在计算上是高效的,因为它只需要二维卷积。现有的方法主要不同于附加到上采样视差图以进行细化的附加信息的类型。例如:
•Khamis等人[72]将上采样的视差图与原始参考图像连接起来。
•Liang等人[63]将cost volumes 和重建误差附加到初始视差图中,定义为左图像和右图像之间的差异,但使用估计的视差图扭曲到左图像。
•Chabra等人[81]在一侧拍摄左图像和重建误差,以及左视差和几何误差图,定义为估计的左视差和右视差之间的差异,但扭曲到左视图上。这些是使用一层卷积进行独立过滤,然后进行批量标准化。将两个流的结果连接起来,然后使用一系列卷积层进行进一步处理,以生成细化的视差图
这些方法提高了空间分辨率,但没有提高视差分辨率。为了提高空间分辨率和深度分辨率,同时对高分辨率图像进行操作,Yang等人[32]建议在从粗到细的层次结构上逐步搜索对应关系。该方法构建了一个由四个4Dcost volumes组成的金字塔,每个cost volumes的空间和深度分辨率都在增加。每个体积通过六个3D卷积块进行过滤,并使用体积金字塔池块(空间金字塔池到特征体积的扩展)进行进一步处理,以生成能够捕获足够全局上下文以进行高分辨率输入的特征。然后(1)使用另一个conv3D块处理输出,以生成3Dcost volumes ,从中可以直接回归差异。这允许报告根据当前比例计算的ondemand差异,或(2)三线性上采样到更高的空间和差异分辨率,以便可以与金字塔中的下一个4D体积融合。为了最大限度地减少内存需求,该方法在金字塔的最后一卷和最后第二卷中沿着差异维度大步移动。使用多尺度损耗对网络进行端到端训练。这种分层设计还允许通过限制中间粗略结果,随时按需报告差异,允许准确预测低延迟(30ms)的近距离结构。
该方法与Kendall等人[61]的方法有一些相似之处,后者构建分层4D特征体,并使用3D卷积从粗到细进行处理。然而,Kendall等人[61]的方法被用于利用具有广泛视野的上下文,而Yang等人[32]则将粗到细的原则应用于高分辨率输入和随时按需处理。
5.4.2学习完成和去噪
原始差异可能会有噪音且不完整,尤其是在物体边界附近,物体之间的深度涂抹仍然是一个挑战。已经开发了几种用于去噪和补全的技术。其中一些是特别的,即对噪声和不完整的初始估计进行后处理,以生成干净完整的深度图。其他方法解决了缺少用于完成和去噪的训练数据的问题。其他人提出了更适合这项任务的新的深度表示,特别是用于解决对象之间的深度涂抹。
特殊方法使用变分方法[51]、[95]、全连接CRF(DenseCRF)[27]、[96]、层次CRF[2]和由置信图引导的扩散过程[40]处理最初估计的差异a。它们鼓励空间上相近且颜色相似的像素进行更接近的视差预测。Liu等人也对其进行了探索[5]。然而,与Li等人[2]不同,Liu等人[5]使用CNN将CRF能量降至最低。卷积空间传播网络(CSPN)[98],[99]实现了各向异性扩散过程,特别适合深度完井,因为它们使用深度CNN预测扩散张量。然后将其应用于初始图,以获得优化的图。
基于深度学习的深度补全和去噪的主要挑战之一是缺乏标记的训练数据,即成对的噪声、不完整的深度图及其相应的干净深度图。为了解决这个问题,Jeon和Lee[29]提出了一种成对深度图像数据集生成方法,该方法使用密集3D曲面重建和过滤方法来去除低质量对。他们还提出了基于多尺度拉普拉斯金字塔的神经网络和结构保持损失函数,以从粗到细尺度逐步减少噪声和孔洞。该方法首先以最粗的尺度预测干净的完整深度图像,其分辨率为原始分辨率的四分之一。然后,通过金字塔对预测的深度图进行逐步上采样,以预测半幅和原始大小的图像。在粗略的层次上,该方法捕获全局上下文,而在更精细的层次上,它捕获局部信息。此外,在下采样期间提取的特征通过跳过连接传递到上采样金字塔,以防止在上采样期间丢失输入深度图像中的原始细节。
Imran等人[100]提出了一种称为深度系数(DC)的新深度表示法,以解决对象之间的深度涂抹问题,而不是在网络架构、损失函数或训练数据集上操作。这种表示使卷积更容易避免对象间深度混合。该表示使用与目标深度图大小相同的多通道图像,每个通道表示固定深度。深度值以大小为b的偶数步数增加(该方法使用80个箱子)存储箱数量的选择权衡了内存和精度。由给定像素处的所有这些值组成的向量定义了该像素的深度系数。对于每个像素,这些系数被约束为非负且和为1。这种深度表示为CNN避免深度混合提供了一种更简单的方法。首先,CNN可以根据需要学会避免在不同通道中混合深度。其次,由于卷积同时适用于所有通道,因此深度依赖性,如遮挡效应,可以通过神经网络建模和学习。然而,主要的限制是深度范围需要提前设置,并且在运行时不能在不重新训练网络的情况下进行更改。Imran等人[100]还表明,标准均方误差(MSE)损失函数可以促进深度混合,因此建议使用交叉熵损失来估计深度系数。
5.4.3实时处理学习
目标是设计高效的立体算法,不仅能产生可靠和准确的估计,而且能实时运行。例如,在PSMNet[64]中,cost volumes构建和聚合需要超过250ms(在nVidia Titan Xp GPU上)。这使得实时应用程序不可行。为了加快这个过程,Khamis等人[72]首先估计一个低分辨率的视差图,然后对其进行分层细化。Yin等人[80]采用固定的、从粗到细的过程,以迭代方式找到匹配项。Chabra等人[81]在过滤cost volumes 时,在宽度、高度和视差通道中使用3D放大卷积。Duggal等人[83]将深度学习与PatchMatch[101]相结合,自适应地删减潜在的较大搜索空间,显著加快推理速度。基于PatchMatch的剪枝器模块能够预测每个像素的置信范围,并构建一个需要更少操作的稀疏cost volumes。这也允许模型只关注高可能性区域,并节省计算和内存。为了实现端到端训练,Duggal等人[83]将PatchMatch展开为RNN,其中每个展开步骤相当于算法的一次迭代。这种方法实现了与最新技术相当的性能,例如[64],[68],同时将KITTI2015数据集中的每幅图像的计算时间从600毫秒减少到60毫秒。
5.5学习置信图
对于自动驾驶和医疗成像等应用而言,检测并随后补救故障案例的能力非常重要。因此,很多研究都致力于估计置信度或不确定性图,然后通过去除潜在误差,然后从可靠的相邻像素中替换它们来稀疏估计的差异。视差图也可以合并到视差细化管道中,以指导细化过程[74]、[102]、[103]。例如,Seki等人[102]将置信度映射合并到半全局匹配(SGM)模块中,用于密集视差估计。Gidaris等人[103]使用置信度图来检测错误的估计值,用相邻区域的差异代替它们,然后使用优化网络来优化差异。另一方面,Jie等人[74]估计了两个置信度图,每个置信度图对应一个输入图像,将它们与其相关的cost volumes 连接起来,并将它们用作3D卷积LSTM的输入,以便在后续步骤中选择性地聚焦左右不匹配的区域。
传统的置信度估计方法主要基于匹配cost volumes 分析的假设和启发,有关早期方法的回顾和评估,请参见[59]。最近的技术基于监督学习[104]、[105]、[106]、[107]、[108]、[109]。它们直接从视差空间以特别的方式或以集成的方式估计置信度图,以便它们可以与视差/深度估计一起进行端到端的训练。Poggi等人[110]提供了定量评估。下面,我们将讨论其中一些技术。
5.5.1左右一致性检查的置信度
左右一致性是衡量差异估计置信度最常用的标准之一。其思想是估计两个视差图,一个来自左图像(Dlef t),另一个来自右图像(Dright)。然后,可以通过将Dlef t和Dright之间的像素差重新扭曲到左边的图像上,并将它们转换为概率来计算误差图[63]。该测量适用于检测遮挡,即在一个视图中可见但在另一个视图中不可见的区域。
还可以使用由完全卷积层组成的深或浅网络来学习左右一致性[74],[102]。Seki等人[102]提出了一种基于patch 的置信度预测(PBCP)网络,该网络需要两个视差图,一个从左图像估计,另一个从右图像估计。PBCP使用双通道网络。第一个通道强制执行左右一致性,而第二个通道强制执行本地一致性。该网络以分类器的方式进行训练。它每像素输出一个标签,指示估计的视差是否正确。Jie等人[74]没有将左右一致性检查视为一个孤立的后处理步骤,而是使用左右比较回归(LRCR)模型,将其与视差估计联合执行。它由两个并行卷积LSTM网络[111]组成,产生两个误差映射;一个用于左视差,另一个用于右视差。然后将这两个误差图与其相关的cost volumes 连接起来,并将其用作三维卷积LSTM的输入,以便在下一步中选择性地聚焦于左右不匹配的区域。
5.5.2单个原始视差图的置信度
左右一致性检查估计两个视差图,因此在运行时成本很高。Shaked和Wolf[46]通过二进制交叉熵损失训练一个由两个完全连接的层组成的网络,以仅从参考图像预测估计的视差的正确性。Poggi和Mattoccia[107]将置信度估计作为一个回归问题,并使用在小patch 上训练的CNN解决它。对于每个像素,该方法提取像素周围的方形patch ,并将其转发给经过训练的CNN,以区分对应于正确和错误视差分配的模式。它是一个单通道网络,设计用于9×9图像块。Zhang等人[73]使用了一个类似的置信图估计网络,称为失效网络。其关键思想是利用左视差和右视差之间的像素误差来训练网络预测置信度。在运行时,网络只需要左视差。最后,Poggi和Mattoccia[112]表明,通过在置信度估计中加强局部一致性,可以改进使用以前算法估计的置信度图。
5.5.3匹配密度的置信图
传统的深度网络将激活和输出表示为确定性点估计。Gast和Roth[113]探讨了用概率输出层代替确定性输出的可能性。更进一步,它们用发行版取代所有中间激活。因此,网络可用于估计匹配概率密度,以下称为匹配密度,然后可在运行时将其转换为不确定性(或置信度)。估计匹配密度的主要挑战是计算时间。为了便于处理,加斯特和罗斯[113]假设了参数分布。Yin等人[80]放松了这一假设,提出了一种金字塔结构,以使计算成本可持续,并允许在运行时估计置信度。
5.5.4局部与全局推理
一些技术,例如Seki等人[102],通过强制实现局部一致性来进行局部推理。Tosi等人[114]引入LGCNet以超越局部推理。输入参考图像及其视差图被转发到本地网络,例如C-CNN[107],以及全局网络,例如具有大接收场的编码器/解码器架构。将两个网络的输出和初始视差与参考图像连接,用三个独立的卷积塔进一步处理,其输出用三个1×1卷积层连接和处理,最终推断出置信图。
5.5.5组合多个估计器
一些论文结合了多种算法的估计,以获得更好的精度。Haeusler等人[104]给一个随机森林提供了23个置信度图,使用传统技术进行估计,与池中的任何置信度图相比,产生了更好的精度。Batsos等人[109]遵循了类似的想法,但结合了四种基本立体匹配器的优点和缺点,以便为后续的优化和正则化步骤生成健壮的匹配体积。Poggi和Mattoccia[58]训练了一个集成回归树分类器。这些方法独立于差异估计模块,并依赖于cost volumes 的可用性。