【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)

一、论文简述

1. 第一作者:Zhengfa Liang、Yiliu Feng

2. 发表年份:2018

3. 发表期刊:CVPR

4. 关键词:CNN、端到端训练、视差改进、特征恒量、视差估计

5. 探索动机:立体匹配算法通常由四步组成:代价计算、代价聚合、视差计算和视差改进。现有的基于CNN的立体匹配方法仅仅采用CNN来解决四步中的部分,或者使用不同的网络来处理不同的步骤,这使得这些方法很难获得全局最优的解决方案。

6. 工作目标:是否可以将所有步骤加入到整个网络中进行深度联合优化,实现更好的视差估计?

7. 核心思想:提出迭代残差网络iResnet,将立体匹配的所有步骤合并到一个网络来改善视差估计精度和计算效率。该网络分成三步模块:多尺度共享特征提取、初始视差估计和视差改进,最关键的贡献是使用特征恒量用于视差改进的子网络。这篇属于“多阶段”策略的论文,这个多阶段和端到端不矛盾,就是看上去像一种有先后顺序的感觉

恒量这个词来自于光流估计领域,包含灰度值恒量和梯度恒量。

8. 实现方法:

  • 多尺度共享特征提取:输入图像先提取多尺度的特征,左右图像的共享权重提取的特征用于视差估计和视差细化;
  • 初始视差估计:视差估计网络借鉴了DispNetC,采用了encoder-decoder结构,采取跳跃连接。但不同于DispNetC,这里获得全分辨率的初始视差图。相关层连接左图特征,引入低级语义特征,有助于改进视差估计。
  • 视差改进:初始视差在深度不连续区域面临挑战,因此需要进行视差细化进一步提升性能。因此用特征恒量(即特征相关和重建误差:利用估计的视差图和右图可以重建出左图,重建的左图和真实的左图之间的误差)改进。视差改进子网络估计初始视差的残差,残差和初始视差的总和就是改进的视差图。

  • 迭代优化:为了从多尺度融合特征中提取更多信息并最终提高视差估计精度,提出了一种迭代细化方法。具体来说,将第二个子网络生成的改进视差图视为新的初始视差图,然后重复特征恒量计算和视差改进过程以获得新的细化视差。重复此过程,直到两次连续迭代之间的改进很小。请注意,随着迭代次数的增加,改进会降低。      

9. 实验结果:在KITTI 2012和KITTI 2015基准测试中SOTA,同时保持非常快的运行时间。

10.论文&代码下载:

https://openaccess.thecvf.com/content_cvpr_2018/papers/Liang_Learning_for_Disparity_CVPR_2018_paper.pdf

https://github.com/leonzfa/iResNet

二、论文翻译

Learning for Disparity Estimation through Feature Constancy

摘要

立体匹配算法通常由四步组成:代价计算、代价聚合、视差计算和视差改进。现有的基于CNN的立体匹配方法仅仅采用CNN来解决四步中的部分,或者使用不同的网络来处理不同的步骤,这使得这些方法很难获得全局最优的解决方案。在本文中,我们提出了一个合并了立体匹配所有步骤的网络结构。网络由三部分组成。第一部分计算多尺度共享特征。第二部分进行匹配代价计算、匹配代价聚合以及视差计算,以通过使用共享特征估计初始视差。初始视差和共享特征用于计算特征恒量,即为衡量两个输入图像之间对应关系的正确性。然后将初始视差和特征恒量输入子网络以改进初始视差。我们提出的方法已经在Scene Flow和KITTI数据集上进行了评估。在KITTI 2012和KITTI 2015基准测试中它实现了最先进的性能,同时保持非常快的运行时间。源代码可在http://github.com/leonzfa/iResNet获得。

1. 介绍

立体匹配的目的是估计两个校正图像之间所有像素的对应关系。它是许多立体视觉任务的核心问题,在自动驾驶汽车、机器人导航和增强现实等领域有大量应用。

几十年来,由于对立体匹配进行了深入的研究,人们开发了一种受欢迎的四步管道机制。该机制包括匹配代价计算、匹配代价聚合、视差计算和视差改进。四步管道机制在现有的立体匹配算法中占主导地位,而它的每个步骤对整体的立体匹配性能都很重要。由于对于各种视觉任务深度卷积神经网络都表现了强大的表示能力,CNN已被用于提高立体匹配性能,并显着优于传统方法。

Zbontar和 LeCun首次引入CNN来计算匹配代价,以衡量两幅图像的两个像素的相似度。该方法在当时的KITTI 2012、KITTI 2015和Middlebury立体数据集上取得了最佳性能。他们认为,仅考虑像素的光度差异或人工制作的图像特征来匹配代价是不可靠的。相比之下,CNN可以从图像中学习更具有鲁棒性和有区别性的特征,并产生改进的立体匹配代价。遵循工作[32],提出了几种方法来提高计算效率或匹配精度。然而,这些方法仍然受到一些限制。首先,要计算所有潜在视差的匹配代价,网络必须进行多次前向传递,导致计算负担很高。其次,被遮挡区域中的像素(即仅在两幅图像之一可见)不能用于进行训练。因此,很难在这些区域中获得可靠的视差估计。第三,需要几个启发式的后处理步骤来改进视差。因此,这些方法的性能和泛化能力是有限的,因为必须要根据经验选择许多参数。

或者,可以将匹配代价计算、匹配代价聚合和视差计算步骤无缝加入到CNN中,以直接估计立体图像的视差。传统上,匹配代价聚合和视差计算步骤是通过最小化由匹配代价定义的能量函数来解决的。例如,半全局匹配 (SGM) 方法在多个方向上使用动态规划来优化能量函数的路径形式。能量函数及其求解过程都是人工设计的。与传统方法不同,Mayer等人和Kendal等人在匹配代价上直接堆叠了几个卷积层,并训练整个神经网络以最小化网络输出与真实值视差之间的距离。与仅使用CNN进行匹配代价计算的方法相比,这些方法可以实现更高的精度和计算效率。

如果将所有步骤加入到整个网络中进行联合优化,则可以预期更好的视差估计表现。然而,将视差改进步骤与其他三个步骤相结合并非易事。现有方法[4,19]使用额外的网络进行视差改进。具体来说,一旦CNN计算出视差,就会引入一个或多个网络来对输入(包括立体图像和初始视差)和输出(即改进视差)的联合空间进行建模,以改进视差。

为了消除视差计算和视差改进之间的差距,我们提出使用特征恒量来识别初始视差的正确性,然后使用特征恒量进行视差改进。这里,“恒量”是从光流估计领域借用的,其中使用了“灰度值恒量”和“梯度恒量”。“特征恒量”是指特征空间中两个像素点的对应关系。具体来说,特征恒量包括两个术语,即特征相关性和重建误差。从左右图像中提取的特征之间的相关性被认为是第一个特征恒定项,它衡量所有可能视差的对应关系。特征空间中的重建误差被认为是利用初始视差知识估计的第二个特征恒定项。然后,视差改进任务目的是在给定特征恒量的情况下提高初始视差的质量,这可以通过一个小型子网络来实现。这些将在第3.3节中进一步解释。场景流和KITTI数据集的实验表明了我们的视差改进方法的有效性。我们的方法将视差计算和视差改进无缝加入到一个网络中进行联合优化,并显着提高了初始视差的精度。我们的方法在 KITTI 2012和 KITTI 2015基准上实现了最好的表现。它还具有非常高的运行效率。

本文的贡献可以总结如下:1)我们将立体匹配的所有步骤加入到一个网络中,以提高精度和效率;2)我们使用特征恒量在子网络进行视差改进;3) 我们在KITTI基准测试中达到了最好的性能。

2. 相关工作

在过去的几年里,CNN被引入来解决立体匹配中的各种问题。现有的基于CNN的方法大致可以分为以下三类。

2.1. CNN用于匹配代价学习

在这个类别中,CNN用于学习匹配代价。Zbontar和 LeCun训练了一个CNN来计算两个图像块(例如9×9)之间的匹配代价,然后是几个后处理步骤,包括基于交叉的成本聚合、半全局匹配、左右一致性检查、亚像素增强、中值滤波和双边滤波。这种结构需要多次前向传递来计算所有可能视差的匹配代价。因此,这种方法在计算上代价很高。Luo等人引入了一个乘积层来计算siamese结构的两个表示之间的内积,并将网络训练为针对所有可能视差的多类分类,以减少计算时间。Park和Lee引入了一种逐像素金字塔池化方案,在比较两个输入图像块时扩大感受野。这种方法产生了比[32]更准确的匹配代价。Shaked和Wolf使用具有多级加权残差短连接的高速网络结构深化了匹配代价计算的网络。已证实该结构优于多个网络,例如来自MC-CNN的基础网络、传统的high-way网络、ResNets、DenseNet和ResNets的ResNets。

2.2. CNN用于视差回归

在这个类别中,CNN被精心设计用于直接估计视差,从而实现端到端训练。Mayer等人提出了一种用于视差回归的编码器-解码器结构。匹配代价计算无缝加入到编码器部分。视差在前向传递中直接回归。Kendall等人在匹配代价上使用3-D卷积来结合上下文信息,并引入可微分的soft argmin操作来回归视差。这两种方法都可以运行得非常快,在单个Nvidia GTX Titan X GPU上分别耗时0.06s和0.9s。但是,这些网络中不包括视差改进,这限制了它们的性能。

2.3. 多个子网络

在这个类别中,不同的网络用于处理立体匹配的四个步骤。Shaked和Wolf使用他们的高速公路网络进行匹配代价计算,并使用额外的全局视差CNN来取代在传统匹配代价聚合和视差计算步骤中使用的“赢家通吃”策略。在一些具有挑战性的情况下这种方法提高了性能,例如在遮挡、扭曲、高反射和稀疏纹理区域中。Gidaris等人使用[16]中的方法计算初始视差,然后应用三个额外的神经网络进行视差改进。Seki和Pollefeys提出了SGM-Nets来学习SGM参数化。他们获得了比MC-CNN中使用的手动调整方法更好的惩罚。Peng等人在[17]的基础上构建了他们的工作,通过级联一个额外的网络来进行视差改进。

在我们的工作中,我们将所有步骤整合到一个网络中。因此,所有步骤可以共享相同的特征并且联合优化。此外,我们将特征恒量引入我们的网络,以使用特征相关性和重建误差来提高视差改进。事实清楚地表明,我们的方法可以实现更好的视差估计性能。

3. 方法

与在立体匹配中使用多个网络进行不同步骤的现有方法不同,我们将所有步骤合并到一个网络中以实现端到端训练。我们提出的网络由三部分组成:多尺度共享特征提取、初始视差估计和视差改进。网络框架如图1所示,网络结构如表1所示。

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第1张图片

图1. 我们提出的网络结构。它将立体匹配所有的四个步骤合并到一个网络中。请注意,为了更好的可视化,这里省略了不同尺度的编码器和解码器之间的跳跃连接。

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第2张图片

表1。我们网络的详细架构。注意,在“Input”列中,“+”表示连接到一个底部blob中,而“,”表示输入被馈送到不同的底部blob中,在这种情况下,输入通道号表示每个底部blob的通道号。

3.1. 用于多尺度特征提取的茎块

茎块从两个输入图像中提取多尺度共享特征,用于初始视差估计和视差改进子网络。它包含两个步长为2的卷积层以降低输入的分辨率,以及两个反卷积层,将两个卷积层的输出上采样到全分辨率。上采样的特征通过额外的1×1卷积层融合。图示如图1所示。该茎块的输出可分为三种类型:

1)第二层卷积层的输出(即左图为conv2a,右图为conv2b)。在conv2a和conv2b之间执行有大位移(即40)的相关(图1中第一个紫色长方块),以获得两个图像之间的长距离但粗略对应关系然后用于估计初始视差的第一个子网络。

2)第一层卷积层的输出(左图的conv1a和右图的conv1b)。他们首先通过一个具有3×3卷积核的卷积层,被压缩为c_conv1a 和c_conv1b。然后执行具有小位移(20)的相关(图1中第二个紫色长方块),以获得与前面的相关互补的详细的但短范围的对应关系。另外,这些特征也用作第二个子网络使用的第一个特征恒定项。

3)多尺度融合特征(左图的up_conv1a和右图的up_conv1b)。他们首先被用做跳跃连接特征,为第一个子网络带来详细信息。然后被用来计算用于第二个子网络的第二个特征恒定项

3.2. 初始视差估计子网络

该子网络通过编码器-解码器结构从“conv2a”和“conv2b”生成视差图,其灵感来自DispNetCorr1D。DispNetCorr1D只能产生一半分辨率的视差。使用全分辨率多尺度融合特征作为跳跃连接特征,我们能够估计全分辨率的初始视差。多尺度融合特征也用于计算重建误差,这将在第3.3节中描述。在这个子网络中,首先引入了一个相关层来计算特征空间中的匹配代价(即,在每个可能的视差计算两个特征图之间的内积)。匹配代价计算的准确性和计算效率之间存在折衷。也就是说,如果使用高级特征计算匹配代价,则会丢失更多细节,并且无法区分几个相似的对应关系。相比之下,如果使用低级特征计算匹配代价,则计算成本很高,因为特征图太大,并且感受野太小而无法获得鲁棒的特征。

然后将匹配代价与左侧图像中的特征连接起来。通过连接,我们期望子网络在对匹配代价进行视差估计时考虑低级语义信息。在某种程度上,它有助于聚合匹配代价并改进视差估计。

视差估计在解码器部分以不同的尺度进行,其中每个尺度都引入了跳跃连接,如表1所示。为了计算效率,多尺度融合特征(见3.1节)仅跳跃连接到解码器的最后一层以进行全分辨率视差估计。这个子网络称为DES-net。

3.3. 视差改进子网络

虽然视差图在Sec3.2已经很好了,但它仍然遭受了一些挑战,例如深度不连续性和离群值。因此,需要对视差改进以进一步提高深度估计的性能。

在本文中,我们使用特征恒量进行视差改进。具体来说,一旦使用DES-net获得初始视差dispi,我们就能计算两个特征恒量项(即特征相关fc和重建误差re)。那么,视差改进的任务就是考虑这三类信息得到改进的视差dispr,即

具体而言,第一个特征恒量项fc计算为左右图像的特征图之间的相关(即c conv1a和c conv1b)。fc测量两个特征图在所考虑的视差范围内的所有位移的对应关系。它在正确的视差处会产生较大的值。第二个特征恒量项re计算为初始视差的重建误差,即左图像的多尺度融合特征(第3.1节)与右图像的反向形变特征之间的绝对差值。请注意,为了计算re,在特征图中的每个位置只进行一次位移,这依赖于初始视差的相应值。如果重建误差很大,则估计的视差更有可能不正确或来自遮挡区域。

实际上,给定视差估计子网络(第3.2节)产生的初始视差,视差改进子网络的任务就是估计初始视差的偏差。偏差加上初始视差被认为是改进的视差图。由于初始视差和两个特征恒量项都用于生成视差图 dispr(如公式1所示),视差估计性能有望提高。这个子网络称为DRS-net。请注意,由于立体匹配的四个步骤被整合到单个CNN网络中,因此可以保证端到端的训练。

3.4. 迭代改进

为了从多尺度融合特征中提取更多信息并最终提高视差估计精度,我们提出了一种迭代改进方法。具体而言,将第二个子网络(第3.3节)生成的改进视差图视为新的初始视差图,然后重复特征恒量计算和视差改进过程以获得新的改进视差。重复此过程,直到两次连续迭代之间的改进很小。请注意,随着迭代次数的增加,改进会降低。

4. 实验

在这一节,我们在两个数据集上评估了我们的方法iResNet网络(iterative residual prediction network)。

我们的算法是基于CAFFE架构实现的,优化方法为Adam算法,参数β1=0.9 ,β2=0.999,批大小=2。训练过程中采用多级学习率。

训练过程中也采取了数据增强,包括空间和色彩变换。空间变换包括翻转、裁剪和缩放。色彩变换包括颜色,对比度和亮度变换。数据增强有助于得到更具鲁棒性的模型以对抗光照变化和噪声问题。

4.1. 消融实验

在这一节中我们在SceneFlow数据集上设置了几个消融实验来验证我们的设计选择。我们使用端点误差(EPE)来作为评价指标,EPE是指预测值与真实值之间的欧式距离的平均值。我们也使用了EPE超过t个像素的视差值所占比例(>tpx)。

4.1.1 多尺度跳跃连接

多尺度跳跃连接用于获得不同层级的特征以改善视差估计并优化结果。为了证明他的有效性,我们用单一尺度跳跃连接代替多尺度跳跃连接,对比结果如表3所示。很明显多尺度跳跃连接要优于单一尺度跳跃连接,EPE由2.55下降到2.5。这是由于第一个卷积层的输出中包含很多高频信息,它产生了很高的重建误差在物体边缘区域和颜色变化剧烈的区域。值得注意的是,在物体远离边缘的表面区域,通常初始视差估计更加精确,即使由于纹理变化造成颜色变化较大。因此,这些区域得到的重建误差是不准确的。在这种情况下,多尺度跳跃连接能够提高重建误差的可靠性。除此之外,引入高层级的特征也有助于特征恒量的计算,因为高层级特征用更宽广的感受野获得更多上下文信息。

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第3张图片

表3. 在场景流数据集上单一尺度跳跃连接和多尺度跳跃连接结果对比

4.1.2 视差改进的特征恒量

为了将初始视差估计子网络和视差改进子网络无缝结合起来,特征恒量的计算和后续的子网络发挥了重要作用。为了说明他的有效性,我们先是移除了所有的特征恒量,然后重新训练网络。结果如表2所示,可以清楚的看到如果视差改进不包含特征恒量,效果提升非常小,EPE由2.81降低到2.72。

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第4张图片

表2. 在场景流数据集上视差改进子网络的不同设置的的比较结果。DES-net和DRS-net分别代表初始视差估计子网络和视差改进子网络。

然后我们评估了等式1中的3个信息(初始视差图,特征相关性和重建误差)的重要性。结果如表2所示,可以看到重建误差发挥了最主要的作用。如果去掉重建误差,EPE由2.50提高到2.70。这是因为重建误差提供了许多有关初始视差的信息。这样一些初始视差估计效果较差的区域可以被确定,然后被对应的优化。除此之外,去掉初始视差值或特征相关会让整个效果有轻微的下降。它们的EPE值分别由2.50上升到2.56和2.61。

4.1.3 迭代改进的影响

  迭代的特征恒量计算会进一步提高整个效果。实践中,我们并没有训练多个DRS-nets。而是,直接堆叠额外的DRS-net,权重与最初的DRS-net相同。随着迭代次数的增加,性能提升迅速下降。第一次迭代,EPE由2.50下降到2.46,第二次迭代只从2.46下降到2.45。第三次迭代之后就没有明显的改善了。这可能由几个原因:1.我们的模型能够有效的使用特征恒量信息提取有用的信息用于视差估计;2.特征空间中包含的信息是有限的。因此,可能要引入更多有效的特征才能提高视差改进效果。

为了进一步证明迭代改进的有效性,两次迭代的视差估计结果如图2所示。可以观察到,在初始视差中,很多细节无法准确估计,如红框所示的区域。然而,经过两次迭代的改进,大多数不准确的估计都可以被校正,改进后的视差图看起来更加平滑。

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第5张图片

图2. 不同迭代下场景流测试集的视差改进结果。第一行表示输入图像,第二行显示未经任何改进的初始视差,第三行和第四行显示经过分别进行1次和2次迭代改进后的视差。最后一行给出了真实视差。

4.1.4 特征恒量vs颜色连续性

在这个实验中,证明特征恒量要优于颜色恒量。我们与级联残差学习方法(CRL)进行了比较,该方法计算了颜色空间上的重建误差。直觉上看,计算特征空间上的重建误差能够获得更具鲁棒性的结果,因为学习的特征对于光照变化和噪声更不敏感。此外,通过在第一个网络中共享特征,第二个网络可以设计的更浅,从而形成一个更紧凑的网络。CRL使用一个网络(即DispNetC)进行视差计算,使用另一个网络(即DispResNet)进行视差改进。为了比较公平,我们还使用了没有任何微调的DispNetC作为视差估计子网络。注意,在Scene Flow数据集的实验中,视差值大于300的视差图像(及其对应的立体对)超过25%被删除。在这次比较中,我们遵循了同样的方法。对比结果见表4。CRL的EPE结果取自论文,并用我们的实现Nvidia Titan X (Pascal)对其运行时长进行了测试。可以看出,我们的方法(使用特征恒量)显著优于CRL(使用颜色恒量)。我们的iResNet方法和CRL方法实现的EPE值为1.40和1.60。此外,我们的方法所需的参数更少,计算时间更短。

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第6张图片

表4. 本文提出的iResNet方法和CRL方法在Scene Flow数据集上的EPE结果。

4.2 排行结果

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第7张图片

表5. KITTI2015数据集的排行结果

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第8张图片

6. KITTI 2015数据集的结果。

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第9张图片

表7. 采用三种方法对KITTI 2015基准到KITTI 2012基准的泛化性能进行了比较。

【论文简述及翻译】Learning for Disparity Estimation through Feature Constancy(CVPR 2018)_第10张图片

3. KITTI 2015数据集与其他先进方法的比较。第一行的图片是KITTI 2015的输入图像。iResNet-i2改进结果(第三行)可以极大地改善初始视差(第二行),并比其他方法获得更好的可视化效果,特别是在图像的上部,这些区域没有真实值。

5. 结论

本文中,我们提出了一个网络结构将立体匹配的四个步骤整合到一起,并一起进行训练。我们的网络先估计一个初始视差,然后使用两个特征恒量项来改进视差。改进操作采用了特征相关和重建误差,有效地提高了初始估计误差的质量。通过引入多尺度的共享特征,使网络设计更加紧凑。实验结果表明,在KITTI 2012和KITTI 2015的基准上,该方法具有最先进的视差估计性能。此外,我们的方法计算效率也很高。

你可能感兴趣的:(立体匹配,深度学习,目标检测,计算机视觉,神经网络,图像处理)