论文阅读《End-to-End Learning of Geometry and Context for Deep Stereo Regression》

2023-06-08,,

端到端学习几何和背景的深度立体回归

摘要

    本文提出一种新型的深度学习网络,用于从一对矫正过的立体图像回归得到其对应的视差图。我们利用问题(对象)的几何知识,形成一个使用深度特征表示的代价量(cost volume)。我们通过对这一匹配代价卷使用3D卷积来学习结合上下文信息。利用本文提出的一种可微分的soft argmin操作可以对匹配代价卷回归得到视差值,这使得我们可以直接端到端地训练我们的网络达到亚像素级别的精度,而不需要任何后处理和正则化。我们在Scene Flow和 KITTI数据集上对我们的方法进行评估,在KITTI上我们设置了一个新的最先进的benchmark,同时显著快于其他方法。

1.介绍

从立体影像准确估计三维几何是许多计算机视觉应用的核心问题,包括自主车辆和无人机[2]。在本文中,我们特别感兴趣的是计算矫正后立体图像对之间每个像素的视差。为此,立体算法的核心任务是计算两个图像之间每个像素的对应关系。在现实世界中,这是非常具有挑战性的。当前最先进的立体声算法通常在无纹理区域,反射表面,薄结构和重复图案方面存在困难。许多立体算法的目标是通过基于池或梯度的正则化[15,23]减少这些失败。但是,这通常需要在平滑表面和检测详细结构之间进行折中。

相比之下,深度学习模型已经成功地从原始数据学习获得在物体分类[28],检测[17]和语义分割[31,3]的方面直接强大的表示。这些例子表明深度卷积神经网络对理解语义非常有效。 在监督大型训练数据集时,他们擅长分类任务。我们观察到立体算法中一些具有挑战性的问题将从全局语义上下文的知识中受益,而不仅仅依赖于局部几何。例如,对于车辆挡风玻璃的反射表面,如果仅仅依靠反射表面的局部外观来计算几何形状,则立体算法可能是错误的。相反,理解该表面(它属于车辆)的语义背景来推断局部几何是有利的。在本文中,我们展示了如何学习一个可以进行端到端训练的立体匹配回归模型,并且能够理解更广泛的上下文信息。

迄今为止,利用深度学习表示的立体算法主要集中于利用它们生成一元项[48,32]。在深度一元表示法上应用代价匹配在估计像素差异时表现不佳[32,48]。仍然使用传统的正则化和后处理步骤,如半全局块匹配和左右一致性检查[23]。这些正则化步骤受到严重限制,因为它们是手工设计的浅函数,仍然容易受到上述问题的影响。

这篇论文解答了这一问题——我们能否利用我们对于立体几何的理解,借助深度学习的方法来将立体视觉问题规范化?这篇论文的主要贡献是提出了一个端到端的深度学习方法来从一对矫正过的图像来估算每个像素的视差值。我们的结构如图1所示。它通过构建代价量明确地表达了几何特征,同时还利用深度卷积网络表达了语义信息。我们实现这一方法主要遵循以下两个想法:

我们直接从数据中结合上下文信息,使用3D卷积来规则化代价量(包含高度、宽度、视差三个维度)
我们使用完全可微分的柔性argmin函数,允许我们从视差匹配代价卷中回归得到亚像素的视差值

第三节介绍了这个模型并从更多的细节方面介绍了模型的内容。第四节,我们在合成的SceneFlow数据集上评估了我们的模型,并在KITTI2012和KITTI2015数据集上排名第一。最后在4.3节,我们展示了我们的模型能够学习语义和上下文信息的证据。

2.相关工作

从立体图像对计算深度的问题已经研究了相当长的一段时间[5]。Scharstein和Szeliski[39]的一项调查提供了立体匹配算法的分类,如执行匹配成本计算,成本支持聚合,视差计算和优化或差异细化的一些子集。 这个调查还介绍了第一个Middlebury数据集和相关的评估指标,使用结构化光提供基本事实。KITTI数据集[14,35]是LIDAR提供的具有基本真实性的移动车辆收集的较大数据集。这些数据集首先激发了改进立体视觉所有组件的手工技术,其中我们提到了一些值得注意的例子。

匹配成本是潜在相应图像位置的像素差异度量[25],其中绝对误差,平方误差和截断误差是示例。可以使用基于梯度[16]的局部描述符或二进制模式,如CENSUS [45]或BRIEF [7,22]。

不是像基于面片的匹配成本一样聚集相邻像素,而是在假定它们更可能来自相同表面和视差的假设下,对图像内容的了解可以更大程度地合并具有相似外观的相邻像素。这些技术的调查由Tombari等人提供[43]。局部匹配成本也可以在全局框架内进行优化,通常将结合局部数据项和成对平滑项的能量函数最小化。全局优化可以使用图形切割[27]或置信传播[26]来完成,这可以扩展到倾斜表面[6]。全局优化的一个有名的有效逼近是Hirschmüller[24]的半全局匹配(SGM),其中动态规划优化了多方向上能量函数的路径形式。

除了为比较立体算法提供基础之外,来自这些数据集的地面实况深度数据提供了使用机器学习以各种方式改进立体算法的机会。 Zhang和Seitz [52]交替优化了视差和马尔科夫随机场正则化参数。Scharstein和Pal [38]学习条件随机场(CRF)参数,Li和Huttenlocher[29]用结构化支持向量机训练非参数CRF模型。 学习也可以用来估计一个传统的立体匹配算法的置信度,如海斯勒等人的随机森林方法。[19]。 Park和Yoon [37]表明,这种置信度测量可以改善SGM的结果。

深卷积神经网络可以训练以匹配图像块[46]。 Zbontar和Le-Cun[47,49]展示了一个深度网络,用于匹配9X9个图像块,然后是非学习成本聚合和正则化,以产生最先进的结果。

Luo等人提出了一个显着更快的网络计算局部匹配成本作为使用连体网络[33]多标签视差分类。 Chen等人的多尺度嵌入模型 [9]也提供了良好的局部匹配分数。另外值得注意的是Flynn等人的DeepStereo工作。 [12],它结合一个单独的条件色彩模型学习代价量,以预测多视点立体设置新颖的观点。

Mayer等人创建了一个大型的合成数据集来训练网络的视差估计(以及光流)[34],改善了最先进的技术。作为网络的一种变形,沿视差线提出了一种1-D相关性,这是对立体代价量的乘法近似。另外,这个量与单个图像的卷积特征串联,并且通过一系列进一步的卷积而成功。相比之下,我们的工作并没有在计算代价量时破坏特征维度,而是使用3-D卷积来合并上下文。

虽然这项工作的重点是双目立体视觉,值得注意的是,深卷积网络的表示能力也能够从一个单一的单目图像进行深度估计[10]。 Liu等人将深度学习与连续的CRF相结合。[30]。 而不是用标记的基本真实数据监督训练,可以使用无标记的立体图像对训练一个单眼模型[13]。

在我们的工作中,我们没有应用后处理或正则化。我们的网络可以通过形成完全可微分的代价量来明确地推断几何。我们的网络通过3-D卷积架构学习将数据的上下文结合起来。 我们不学习概率分布,成本函数或分类结果。 相反,我们的网络能够从立体图像对直接回归视差的亚像素估计。

3.学习端到端的视差回归

我们不必手动设计立体匹配算法的任何一步,而是学习使用深度学习从图像对到视差图的端到端映射。我们希望直接从数据中学习更优化的功能。此外,这种方法有望降低大部分工程设计的复杂性。但是,我们的目的不是天真地将机器学习架构作为一个黑盒来建立立体模型。 相反,我们主张使用几十年来多视角几何研究的见解[20]来指导架构设计。因此,我们通过开发代表传统立体管道中每个主要组件的可微层来形成我们的模型[39]。这使我们能够学习整个模型的端到端,同时利用我们对立体声问题的几何知识。

我们的架构,GC-Net(几何和上下文网络)如图1所示,表1中有更详细的逐层定义。

在本节的其余部分中,我们将详细讨论每个组件。之后,在第4.1节中,我们将为调整设计决策提供定量结果。

3.1 一元特征(网络提取的特征)

首先,我们学习了一个深度表示来计算立体匹配的成本。与其使用原始像素强度计算立体匹配成本,不如使用特征表示。其目的是比较一个描述符,该描述符对光度外观的模糊性更健壮,并且可以合并本地上下文。

在我们的模型中,我们通过大量的2-D卷积运算学习了深度表示。每个卷积层之后是归一化层和矫正非线性。 为了减少计算需求,我们最初应用一个步长为2的5X5卷积滤波器对输入进行下采样。 在这个层之后,我们追加了8个残差块[21],每个块包含两个3X3个卷积滤波器。我们的最终模型架构如表1所示。我们通过将左右立体图像通过这些图层来形成一元特征。我们共享左右塔之间的参数以更有效地学习相应的特征。

3.2 代价量(Cost Volume)

我们利用深度一元特征通过形成一个代价量来计算立体匹配的代价。虽然一个简单的方法可能简单地连接左右特征映射,但是通过形成一个代价量,我们能够以保留我们对立体视觉几何知识的方式来约束模型。对于每个立体图像,我们形成维度为(height  × width ×(max disparity + 1)× feature size)的代价量。我们通过在每个视差水平上将每个一元特征与来自相对的立体图像的相应的一元组进行连接,并将其包装到四维体积中来实现。(对于某一个特征,匹配代价卷就是一个三维的方块,第一层是视差为0时的特征图,第二层是视差为1时的特征图,以此类推共有最大视差+1层,长和宽分别是特征图的尺寸,假设一共提取了10个特征,则有10个这样的三维方块)

至关重要的是,我们在这步操作中保留了特征的维度,不像先前许多方法使用点乘方式来降低特征维度。这使得我们可以结合上下文信息并作用于一元特征上。我们发现通过级联特征图构成代价量效果要优于削减特征或者使用距离度量函数的方法。我们的直觉是通过保持一元特征,网络能够学习到一个绝对的表征(因为不是去度量距离这种间接的方式)并把它带入到代价量中。这赋予了该结构学习语义信息的能力。相反,使用距离度量方法限制了网络只能学习特征之间的相关性表征,而不能将绝对的特征表征带入到代价量中。

3.3 学习上下文信息

得到视差代价量,我们希望学习到一个规则化函数,其能够包含上下文信息并能优化我们的视差估计结果。即使是用深度特征表征的方式,各个一元元素之间的匹配代价也不可能是完美的。例如在像素强度均一的区域(如天空),任何基于固定的局部环境的特征匹配代价曲线都会是平坦的。我们发现像这样的区域将导致在视差维度上出现多种模式的匹配代价曲线。因此我们希望去学习规则并改善代价量。

我们打算使用三维卷积操作来进行滤波和改善表征。3D卷积能够从高度、宽度和视差三个维度提取特征表征。因为我们对每个一元特征都记算了代价曲线,所以我们可以从这些表征中训练卷积核。在4.1节中,我们展示了3D卷积核对于学习上下文信息和有效改善立体匹配效果的重要性。

三维卷积的难点在于附加维度对train和inference的计算时间是一个负担。设计用于稠密预测任务的深度编码器 - 解码器任务通过对子采样特征图进行编码,然后在解码器中进行上采样来解决其计算负担[3]。我们将这个想法扩展到三个维度。通过以步幅2对输入进行子采样,我们也将三维成本体积尺寸减小八分之一。我们用四个子采样级别组成我们的三维正则化网络。由于已经对unaries进行了因子为2的子采样,所以这些特征相当于被以32的总因子进行子采样。这使得我们能够在广泛的视野中明确地利用上下文。我们对每个编码层都使用了两个连续的3*3*3卷积。为了以输入的分辨率得到稠密的预测图,我们在解码器中使用了3D反卷积对匹配代价卷进行上采样。

下采样能够有效的扩大每个特征的感受野并减少计算量。然而,他也减少了损失的分辨率上的空间精确性和细节信息。由于这个原因,我们在上采样之前都加上了高分辨率的特征图。这种残差层能够保持更高频率的信息,进而上采样得到的特征可以提供视野宽阔且信息完整的特征图。

最后,我们应用了一个单独的3D反卷积,步长为2,输出为单一特征图。这对于得到与输入维度相同的稠密预测图是至关重要的,因为一元特征图被下采样缩小了一倍。最终的结果是得到了一个规则化的尺寸为H*W*D的代价量。

3.4可微分的ArgMin

通常,立体图像算法会从匹配的代价量产生最终代价量。从这个量来看,我们可以通过在代价量视差维度上进行argmin操作来估计视差。但是,这个操作有两个问题:

•它是离散的并且不能产生亚像素视差估计,

•不可微分,因此无法使用反向传播进行训练。

为了克服这些限制,我们定义了一个完全可微并且能够回归平滑视差估计的softargmin。它既是完全可微的,又能回归得到一个光滑的视差估计值。首先,我们通过将预测的匹配代价值Cd(对于每个视差d)取负数,把匹配代价量转换为可能性量(probability cost)(匹配代价越高,可能性越低)。我们利用softmax操作σ(⋅)对可能性量在视差维度上进行正则化。然后对每个视差值d进行加权求和,权重就是他对应的可能性。图形显示如图2,数学定义如下:

这一操作是完全可微的,并允许我们训练,回归得到视差估计值。我们注意到这一相似的函数最初是用作一种柔性注意机制[4]。在这里,我们展示了如何将它应用到立体匹配的回归问题上。

然而,相比于argmin操作,他的输出受到所有值的影响。这使他对于多状态分布(multi-modal distribution)很敏感,因为输出没有取得最大可能性。他会估算一个各个状态的加权平均值。为了克服这一问题,我们依赖网络规则化来生成单峰的视差可能性分布图。网络也可以对匹配代价进行预分频来控制规则化的post-softmax可能性的峰值度(图2)。我们明确地在最后一个卷积层中放弃了批量规则化,使得网络能够从数据中学到这些。

图2. 柔性argmin操作的图像描述。按照视差值画出代价曲线并输出一个argmin的估计值,通过对每个视差的softmax可能性与视差值乘积求和。(a)说明当曲线是单峰的时候,可以精确的捕捉到真实的argmin;(b)说明当数据是双峰的并且一个尖锐一个平坦时,估计值出错;(c)说明如果网络对代价曲线进行预分频(pre-scale),这种错误可以避免,因为softmax的可能性趋向于更加极端,以产生一个单峰的结果

3.5 Loss

我们从随机的初始化参数开始端到端地训练整个网络。我们利用真实的深度数据进行有监督的学习。由于雷达标记的真实值(例如KITTI数据集[14,35])可能是稀疏的。所以,我们对每个标记像素的损失值取了平均值。我们用每个像素n真实视差值dn和模型预测视差值d^n之间的绝对值差来训练网络。这个有监督的回归损失函数定义如下:

在后面的章节里,我们将展示把我们的模型规范化为回归问题使得我们能够以亚像素级别的精度进行回归,并且要优于分类的方式。除此之外,规范化为回归问题使得他有可能采用基于光度二次投影误差(photometric reprojection error)的无监督学习。

4 实验

在这一节中,我们对两个数据集(Scene Flow [36]和KITTI [14,35])提供定性和定量的结果。首先,在4.1节中,我们试验了我们模型的不同变体,并使用场景流数据集证明了我们的一些设计选择[36]。在第4.2节中,我们介绍了KITTI数据集方法的结果,并设定了一个新的最先进的基准。最后,我们在4.3节中测量模型的学习能力。
        我们使用TensorFlow架构搭建我们的网络,所有模型采用RMSProp的优化方式和恒定的学习率0.001。我们训练的批尺寸为1张随机切割为256*512大小的图像。在训练之前我们对所有图像进行了归一化处理,使每个像素的强度值在-1到1之间。我们在SceneFlow数据集上训练大约15万个周期,使用一个NVIDIA Titan-X 显卡大概需要两天时间。对于KITTI 数据集,我们对先前在SceneFlow上训练得到的网络进行优化训练5万次。在SceneFlow数据集上我们采用F=32,H=540,W=960,D=192,在KITTI数据集上,采用F=32,H=388,W=1240,D=192分别作为特征尺寸,图像高度,图像宽度和最大视差。

4.1 模型设计分析

表2.SceneFlow数据集上的试验结果 
  

在表2中,我们采用消融学习来比较几种不同模型变种来确定我们的设计选择。我们希望评估这篇文章中核心思想的重要性;使用回归损失代替分类损失和利用3D卷积来规则化匹配代价卷。我们使用Scene Flow数据集[36]进行这些实验,其中包含35454个训练和4370个测试图像。 我们使用这个数据集有两个原因。首先,我们从合成场景中知道完美的,密集的真实视差,消除了由于错误标签而产生的任何差异。其次,数据集足够大,可以在不过度拟合的情况下训练模型。相比之下,KITTI数据集只包含200个训练图像,我们观察到该模型容易过度拟合这个非常小的数据集。有了数以万计的培训图像,在评估种我们不必考虑过拟合。

表2中的第一个实验表明3D滤波器的表现明显比只学习一元特征要好。我们比较了完整网络(如表1中所展示的)与只使用一元特征的模型(丢弃所有的3D卷积层,19-36层)和丢弃分层3D卷积的模型(丢弃21-36层)。我们观察到3D滤波器能够很好的规则化和平滑输出,同时保持输出视差图的清晰度和准确性。我们发现分层3D模型要比普通的通过聚合一个较大环境信息的3D卷积模型表现要好,并且没有明显增加计算要求。

  表2中的第二个实验比较了回归损失函数与基础的硬性或柔性分类函数。硬性分类函数训练网络对匹配代价卷中的视差进行分类,根据采用“one-hot”编码的交叉熵损失函数计算的可能性结果。柔性分类函数按照以正确视差值为中心的高斯分布来平滑编码。在表2中,我们发现回归的方式优于硬性和柔性分类方法。尤其引人注目的是在像素准确性度量上和一个像素误差范围内误匹配率上,因为回归损失函数使得网络可以按照亚像素级别的精度预测视差值。 

图3. 在SceneFlow数据集上训练时的真实误差 
  

从图3中我们可以观察到分类损失函数收敛的更快,但回归损失函数表现最好。

4.2 KITTI排行榜

在表3中,我们评估了我们的模型在KITTI 2012和2015立体数据集上的性能[14,35]。 这些包括从测试车辆收集的具有挑战性和多样性的道路场景图像。用于训练和评估的基本实景深度图是从LIDAR数据中获得的。 KITTI是基准立体匹配算法的重要数据集。缺点是它只包含200个训练图像,这妨碍了学习算法。 为此,我们在大型合成数据集“场景流”[36]上预先训练我们的模型。 这有助于防止我们的模型过度拟合非常小的KITTI训练数据集。 我们拥有40个图像对作为我们的验证集。

表3a和3b分别比较了我们的方法GC-Net(几何和上下文网络)和KITTI 2012和2015数据集上的其他方法2。 我们的方法以显着的差距达到了KITTI基准测试的最先进的结果。 KITTI 2015年和2012年分别提高了9%和22%。我们的方法也比大多数常常需要繁琐的后处理的竞争方法快得多。在图4中,我们展示了我们的方法在KITTI 2012,KITTI 2015和场景流程上的定性结果。

我们的方法胜过以前的深度学习基于patch的方法[48,32],这些方法产生噪声一元电位,无法用亚像素精度进行预测。出于这个原因,这些算法不使用端到端的学习,通常后处理一元输出与SGM正则化[11]产生最终的视差图。

最接近我们体系结构的方法是DispNetC [34],它是在SceneFlow上预先训练的端到端回归网络。但是,我们的方法在所有测试像素上比的该结构显着优秀。 DispNetC使用沿视差线的一维相关层作为立体成本体积的近似值。相比之下,我们的架构更明确地利用几何,通过使用3-D卷积和软argmin层来制定全部成本体积,从而导致性能的提高。

4.3 模型特点

在本节中,我们提供证据,证明我们的模型可以使用更广泛的上下文信息推理局部几何。在图5中,我们展示了与预测像素视差有关的模型显着性的一些示例。显着性图[41]显示了输出相对于每个输入像素的灵敏度。 我们使用[51]中的方法,将预测的视差作为系统地遮挡输入图像的函数。我们通过点的视差来抵消每个立体图像中的遮挡。

这些结果表明,给定点的视差预测依赖于广泛的上下文视野。例如,汽车前部的视差取决于汽车的输入像素和下面的路面。这表明我们的模型能够推理更广泛的背景,而不是像以前的深度学习贴片相似立体方法那样简单的9X9局部贴片[50,32]。

图5:显示模型对所选输出像素(由白十字表示)的有效接受场的显着图可视化。这表明,我们的架构能够学习如何消除立体视差,以超越当地的几何形状和外观的大视野和重要的场景背景知识。 例如,在右边的例子中,我们观察到模型考虑来自车辆和周围路面的上下文信息来估计差异。

5 结论

我们提出了一种新颖的立体视觉端到端深度学习架构。它不需要任何额外的后处理或正则化就能够学会回归得到视差。我们证明了我们的方法在KITTI数据集上的功效,设置了一个新的最先进的基准。

我们展示了如何使用三维卷积有效地学习视差代价量中的上下文。我们展示了如何使用soft argmin层将其表示为回归模型。这使我们能够将视差作为一个回归问题学习,而不是分类,提高性能并提高亚像素的准确性。我们证明,我们的模型学习纳入更广泛的上下文信息。

对于未来的工作,我们感兴趣的是探索一个更明确的语义表示来改善我们的视差估计,并在贝叶斯卷积神经网络的不确定条件下进行推理。

图像的上采样和下采样,插值方法:

https://blog.csdn.net/stf1065716904/article/details/78450997

翻译参考:

https://blog.csdn.net/lvhao92/article/details/72627386(含Keras代码)

https://blog.csdn.net/qq_38906523/article/details/79625073

https://blog.csdn.net/qq_36104364/article/details/80277824

论文阅读《End-to-End Learning of Geometry and Context for Deep Stereo Regression》的相关教程结束。

《论文阅读《End-to-End Learning of Geometry and Context for Deep Stereo Regression》.doc》

下载本文的Word格式文档,以方便收藏与打印。