【论文简述及翻译】GC-Net:End-to-End Learning of Geometry and Context for Deep Stereo Regression(ICCV 2017)

一、论文简述

1. 第一作者:Alex Kendall

2. 发表年份:2017

3. 发表期刊:ICCV

4. 关键词:端到端训练、连接体、3D聚合、回归

5. 探索动机:目前的立体算法主要利用深度学习表示生成一元项。在估计像素视差时,在深度一元表示上应用代价匹配表现不是很好,而传统的正则化和后处理过程,仍然容易受到复杂场景的影响。

6. 工作目标:如何学习一个可以进行端到端训练的立体回归模型,并且能够理解更广泛的上下文信息?

7. 核心思想:使用深度特征表示构造代价体,通过对代价体进行3D卷积学习结合上下文信息,使用可微分的soft argmin操作回归代价体得到视差。

8. 实现方法:

  1. 使用残差块组提取左右图像的一元特征
  2. 将左右图像在视差维度连接构建4D代价体
  3. 使用编码-解码结构进行3D聚合,结合上下文信息
  4. 使用soft argmin回归亚像素级别的视差
  5. 计算loss 

9. 实验结果:在Scene Flow和KITTI数据集上达到SOTA,并且比大多数方法快。

10.论文下载:https://openaccess.thecvf.com/content_ICCV_2017/papers/Kendall_End-To-End_Learning_of_ICCV_2017_paper.pdf

GitHub - kelkelcheng/GC-Net-Tensorflow: GCNet: End-to-End Learning of Geometry and Context for Deep Stereo Regression (Tensorflow Implementation)

二、论文翻译

End-to-End Learning of Geometry and Context for Deep Stereo Regression

摘要

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

1. 介绍         

从立体图像中准确估计三维几何是许多计算机视觉应用的核心问题,包括自动驾驶汽车和无人机。在本文中,我们特别感兴趣的是计算校正后的立体图像对之间的每个像素的视差。为了实现这一点,立体算法的核心任务是计算两个图像之间每个像素的对应关系。在真实世界场景中,我们想要鲁棒地实现这件事是非常具有挑战性的。当前最先进的立体算法通常难以处理无纹理区域、反射表面、薄结构和重复图案。许多立体算法目的是通过池化或基于梯度的正则化来减少这些错误。然而,这通常需要在平滑表面和检测详细结构之间进行折中。

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

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

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

  • 我们直接从数据中学习结合上下文信息,使用3D卷积来学习过滤代价体(包含高度、宽度、视差三个维度)
  • 我们使用完全可微分的soft argmin函数,从视差代价体中回归得到亚像素的视差值        

第三节介绍了这个模型。在第四节,我们在合成的SceneFlow数据集上评估了我们的模型,并在KITTI2012和KITTI2015数据集上设置了最先进的新基准。最后在4.3节,我们证明了我们的模型能够学习语义推断和上下文信息。

图 1:我们的端到端深度立体回归结构,GC-Net(几何和上下文网络)。

2. 相关工作

通过立体图像对计算深度的问题已经研究了很长时间。Scharstein和Szeliski的一项调查提供了立体算法的分类标准,包括以下一些子集:匹配代价计算、代价支持聚合、视差计算、优化或视差改进。该调查还描述了第一个 Middlebury数据集和相关的评估指标。KITTI 数据集是一个更大的数据集,由移动车辆收集的LIDAR真实值组成。这些数据集首先激发人们去改进用于立体视觉的所有组件的的人工工程技术,我们也提到了一些值得注意的例子。

匹配代价是潜在地对应图像位置的像素差异度量,包括绝对误差,平方误差和截断误差。可以使用基于梯度或二进制模式的局部描述符,例如CENSUS或BRIEF。在假设它们更有可能来自相同的表面和视差的情况下,对图像内容的感知可以更多地结合具有相似外观的相邻像素。Tombari等人提供了对这些技术的调查。局部匹配代价也可以在全局框架内进行优化,通常将结合局部数据项和成对平滑项的能量函数最小化。全局优化可以使用图形切割或置信传播来完成,这可以扩展到倾斜表面。全局优化的一种有名且有效的近似法是Hirschmüller提出的半全局匹配(SGM),动态规划多个方向上优化了能量函数的路径形式。

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

深度卷积神经网络可以训练来匹配图像块。Zbontar和Le-Cun展示了一个经过训练用于匹配9*9个图像块的深度网络,然后是非学习的代价聚合和正则化,产生了最先进的结果。Luo等人提出了一个计算局部匹配代价明显更快的网络,使用Siamese网络进行视差的多标签分类。Chen等人的多尺度嵌入模型也提供了良好的局部匹配分数。同样值得注意的是Flynn等人的DeepStereo工作,它结合一个单独的条件色彩模型学习代价体,以预测多视图立体设置中的新视点。

Mayer等人创建了一个大型的合成数据集来训练网络进行视差估计(以及光流),改善了最先进的技术。作为网络的一种变体,沿视差线提出的一维相关是立体代价体的乘法近似。相比之下,我们的工作在计算代价体时并没有破坏特征维度,而是使用3-D卷积来结合上下文信息。

虽然这项工作的重点是双目立体视觉,但值得注意的是,深度卷积网络的表示能力也能够从一个单一的单目图像进行深度估计。Liu等人将深度学习与连续的CRF相结合。他们没有用标记的真实值进行监督训练,可以直接使用无标记的立体图像对训练一个单目模型。

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

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

我们不用人工设计的任何立体算法的步骤,相反我们使用深度学习来学习从图像对到视差图的端到端映射。我们希望直接从数据中学习更优化的函数。此外,这种方法有望减少大部分工程设计的复杂性。然而,我们的目的并不是天真地将机器学习结构作为黑盒子来构建立体模型。相反,我们提倡使用数十年多视图几何研究的见解来指导结构设计。因此,通过开发可微分层来代表传统的立体管道机制中每个主要组件,我们构建了模型。这让我们能够端到端学习整个模型,同时利用了立体问题的几何知识。

我们的结构,GC-Net(几何和上下文网络)如图1所示,关于每一层的更多细节如表1所示。在本节的其余部分,我们将详细讨论每个组件。在之后的第4.1节中,我们提供定量结果来证明我们的设计决策。

表1:端到端深度立体回归结构GC-Net的概述。每个2-D或3-D卷积层代表一个卷积块、批量归一化(batch normalization)和非线性ReLU(除非另有说明)。

3.1. 一元特征

首先,我们学习一个深度表示来计算立体匹配代价。不是使用原始像素强度计算立体匹配代价,通常使用特征表示。动机是比较一个描述符,该描述符对光照条件复杂的外观的模糊性更鲁棒,并且可以结合局部上下文。

在我们的模型中,我们通过一些二维卷积操作来学习深度表示。每个卷积层后面接着一个批量归一化层和一个校正的线性非线性函数。为了减少计算需求,我们首先使用步长为2的5X5的卷积滤波器,对输入进行子采样。这一层之后,我们加了8个残差块,每个残差组块由两个串联的3*3的卷积滤波器组成。我们最终的模型结构如表1所示。我们通过将左右立体图像输入这些层来形成一元特征。我们在左右两个分路中共享参数,更有效地学习相应的特征。

3.2. 代价体

我们使用深度一元特征通过构建代价体来计算立体匹配代价。尽管使用的方法是简单地将左右特征图连接起来,但构成的代价体使得我们能够按照保留立体视觉几何知识的方式约束模型。对于每个立体图像,我们都构建了一个四维的代价体(高度、宽度、(最大视差+10)、特征大小。我们通过将每个视差级别下的左图的每一个一元特征和对应右图的每一个一元特征连接起来,封装成一个4D代价体。

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

3.3. 学习上下文信息

考虑到这个视差代价体,现在我们想学习一个正则化函数,它能够考虑代价体中上下文信息并且改进我们的视差估计。各个一元特征之间的匹配代价不可能是完美的,即使使用深度特征表示也是如此。例如,在像素强度均匀的区域(如天空),任何基于固定的局部环境的特征的代价曲线都是平坦的。我们发现这样的区域将导致在视差维度上出现多种形式的匹配代价曲线。因此我们希望去学习正则化和改善代价体。

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

使用3D卷积的困难在于增加的维度使得训练和推断的计算时间增加。深度编码-解码方法被设计用于解决稠密预测任务,通过对子采样的特征图进行编码,并在解码器中进行上采样解决了计算时间的负担。我们将这个想法拓展到了三维中。通过对输入进行以2为步长子采样,我们也将3D代价体的尺寸缩小了8倍。我们用4个子采样层构建了3D正则化网络。每个一元特征图都子采样了两倍,所以整个特征图子采样了32倍。这让我们明确地利用具有广泛视野的上下文。在每个编码层我们都使用了两个连续串联的3*3*3卷积。为了得到原始输入分辨率大小的稠密的预测图,我们在解码器中使用了3D反卷积对代价体进行上采样。完整的结构描述见表1。

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

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

3.4. 可微分的Argmin

通常,立体算法通过匹配代价一元特征获得最终的代价体。对于这种代价体,我们可以通过在代价体的视差维度上采用Argmin操作来估算视差值。然而,这种操作存在两个问题:

  • 它是离散的并且不能生成亚像素级别的视差估计
  • 他不能微分因此无法通过反向传播的方法进行训练

为了解决这些限制,我们定义了一种soft Argmin方法,它既是完全可微的,又能回归得到平滑的视差估计。首先,我们通过取每个值的负数,将预测的代价Cd(对于每个视差,d)从代价体转换为概率体。我们使用softmax操作 σ(·) 对视差维度上的概率体进行归一化。然后对每个视差值d进行加权求和,权重就是他对应的归一化概率。图形说明如图2所示,数学定义(1)如下 :

这一操作是完全可微的,并允许我们训练,回归得到视差估计。我们注意到,[4]首次引入了类似的功能,称为软注意力机制。在这里,我们展示了如何将它应用到立体匹配的回归问题上。

图 2:本文中我们提出的soft argmin 操作的图像描述(第3.4节)。它能够按照视差值画出代价曲线,并通过将每个视差的 softmax 概率与其视差指数的乘积相加来输出 argmin 的估计值。(a)说明当曲线是单模态时,可以精确的获得真实的argmin。(b)说明当数据是双峰的并且一个尖锐一个平坦时,值会出错;(c)说明如果网络学习对代价曲线进行预分频,则可以避免这种失败,因为softmax概率会趋于极端,产生单模态结果。

但是,与 argmin 操作相比,他的输出受到所有值的影响。这使他对于多模态分布很敏感,因为输出没有取得最大的可能性。相反,他会估算各个状态的加权平均值。为了克服这个限制,我们依靠网络的正则化来产生主要单峰的视差概率分布。网络也可以对匹配代价进行预分频来控制归一化的post-softmax可能性的峰值(图 2)。我们明确在一元通道的最后一个卷积层中放弃了批量归一化,使得网络能够从数据中学到这些。

3.5. 损失函数

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

在下一节中,我们展示了将模型表述为回归问题,让我们能够以亚像素级别的精度进行回归并优于分类方法。此外,制定回归模型可以利用基于光度重投影误差的无监督学习损失。

4. 实验  

在这一节中,我们将展示在两个数据集(Scene Flow和KITTI)上定性和定量的结果。首先,在4.1节中,我们对我们模型的不同变体进行了实验,并使用Scene Flow数据集证明了我们的一些设计选择。在第4.2节中,我们展示了在KITTI数据集上我们方法的结果,并设置了最先进的新基准。最后,在4.3节中我们度量模型学习上下文的能力。

对于本节的实验,我们使用TensorFlow实现我们的网络,所有模型都使用 RMSProp和恒定学习率(1×103)进行端到端优化。我们使用进行256×512 随机定位裁剪后的输入图像以批量大小为1进行训练。在训练之前,我们对每个图像进行归一化,使像素强度范围为-1到1。我们在 Scene Flow 上训练网络(随机初始化),进行大约150k次迭代,在一张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中,我们提出了一项消融实验,来比较几种不同的模型变体并证明我们的设计选择是合理的。我们希望评估本文中核心思想的重要性;使用回归损失代替分类损失,并学习3-D卷积核进行代价体正则化。我们使用合成的Scene Flow数据集进行这些实验,这其中包含35454个训练图像和4370个测试图像。我们使用这个数据集有两个原因。首先,我们从合成场景中知道完美、密集的真实值,这消除了由于错误标签引起的任何差异。其次,数据集足够大,可以在不过拟合的情况下训练模型。相比之下,KITTI数据集仅包含200张训练图像,这使得模型容易过拟合这个非常小的数据集。有了数以万计的训练图像,我们不必在评估中考虑过拟合。

表2:Scene Flow数据集的结果,其中包含来自合成场景图组的35454个训练图像和4370个测试图像,大小为960X540像素。我们比较不同的结构变体来证明我们的设计选择是合理的。第一个实验展示了3-D卷积结构的重要性。第二个实验显示了使用回归损失的性能增益。

表2中的第一个实验展示了包含3-D卷积核的表现得明显比只学习一元特征要好。我们比较了完整模型(如表1中所示)与只使用一元特征的模型(丢弃所有的3D卷积层,19-36层)和丢弃分层3D卷积的模型(丢弃21-36层)。我们观察到3D卷积核能够有效地正则化和平滑输出,同时学会保持输出视差图的清晰度和精度。我们发现分层3D模型要比普通的通过聚合一个较大上下文信息的3D卷积模型表现要好,并且没有明显地增加计算量。

表2中的第二个实验将我们的回归损失函数与[32]中提出的用硬性或软性分类法对视差进行分类的基线进行了比较。硬性分类法训练网络在代价体中对视差进行分类,根据采用“one-hot”编码的交叉熵损失函数计算的可能性结果。软性分类法(在[32]使用)通过编码学习以正确视差值为中心的高斯分布,对视差进行平滑处理。在表2中,我们展示了回归方法优于硬性和软性分类方法。这在像素精度度量和在真实视差的一个像素内的像素百分比上尤其明显,因为回归损失函数让模型以亚像素级别的精度进行预测视差值。

4.2. KITTI排行榜

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

表3:在KITTI 2012 和2015基准测试集上与其他立体方法的比较。我们的方法在这两个竞争的基准上设置了最先进的新标准,优于其他所有方法。

表3a和3b中在KITTI 2012和2015数据集上分别比较了我们的方法GC-Net(几何和上下文网络)和其他方法。我们的方法以显著的优势达到了KITTI基准测试最好的结果。我们的方法在KITTI 2015和2012分别显著提高了9%和22%。我们的方法也比大多数常常需要繁琐的后处理的竞争方法快得多。在图3中,我们展示了我们的方法在KITTI 2012、KITTI 2015和Scene Flow上的定性结果。

我们的方法优于以前基于深度学习图像块的方法,这些方法会产生噪声一元电位,并且无法以亚像素精度进行预测。由于这个原因,这些算法不使用端到端学习,并且通常使用 SGM 正则化对一元输出进行后处理,产生最终的视差图。

最接近我们结构的方法是DispNetC,它也是在SceneFlow上预先训练的端到端回归网络。然而,对于所有测试像素,我们的方法明显优于这种结构。DispNetC使用沿视差线的一维相关层作为立体代价体的近似。相比之下,我们的结构通过使用3-D卷积和soft argmin层来计算完整的代价体,更明确地利用几何信息,因此提高了性能。

图 3:定性结果。通过学习结合更广泛的上下文,我们的方法通常能够处理具有挑战性的场景,例如反射、很薄或无纹理的表面。通过在代价体中明确地学习几何,我们的方法产生了清晰的结果,并且还可以处理大的遮挡。

4.3.模型显著性

在本节中,我们提供证据证明我们的模型可以使用更广泛的上下文信息推断局部几何。在图4中,我们展示了一些与预测像素视差有关的模型显著性的例子。显著图显示了与每个输入像素相关的输出的感知。我们使用[51]中的方法,将预测视差绘制为系统地遮挡输入图像的函数。我们通过点的视差来补偿每个立体图像中的遮挡。

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

图4:显著图可视化,显示对所选输出像素(由白十字表示)的模型有效的感受野。这表明,我们的结构能够通过大视野和场景的重要上下文知识来学习回归立体视差,而不仅仅是局部几何和外观。例如,在右侧的示例中,我们观察到模型考虑了来自车辆和周围路面的上下文信息来估计视差。

5. 结论

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

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

对于未来的工作,我们有兴趣探索更明确的语义表示以改进我们的视差估计,并在不确定性下使用贝叶斯卷积神经网络进行推断。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华科附小第一名

您的支持对我的前行很重要!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值