论文阅读笔记——DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch

这篇文章,是2019年新的ICCV的papper,文章典型的使用了PatchMatch的思路,使得最后的速度快了很多。主要思路是:首先利用一种新颖的可微Patch Match算法来获得稀疏的cost volume。 然后,我们利用此表示来了解每个像素的修剪范围,自适应地修剪了每个区域的搜索空间。 最后,利用图像引导的优化模块来进一步提高性能。 由于所有组件都是可区分的,因此可以以端到端的方式训练整个网络。

论文链接:https://arxiv.org/pdf/1909.05845.pdf

本文以机翻为主,人工修改为辅,历时两天时间,希望能够学习到作者的思路。

Abstract

本文的目标是大大加快当前最先进的立体匹配算法的运行速度,以实现实时推理。为了实现这一目标,我们开发了可区分的Patch Match模块,该模块使我们能够丢弃大部分disparity,而无需进行全面的成本量评估。然后,我们利用此表示,来了解每个像素的修剪范围。通过逐步减少搜索空间并有效地传播此类信息,我们能够针对高可能性假设有效地计算成本量,并节省内存和计算量。最后,利用图像引导的优化模块来进一步提高性能。由于我们所有的组件都是不同的,因此可以端到端地训练整个网络。我们的实验表明,我们的方法在KITTI和SceneFlow数据集上以62ms的速度实时运行时取得了竞争性结果。

1.Introduction

立体估计是从具有重叠视场的一对图像中估计深度(或视差)的过程。 它是许多应用(例如机器人技术和计算摄影)的基本构建块。 尽管进行了数十年的研究,但现实世界场景的立体估计仍然是一个未解决的问题。 最先进的方法在处理重复结构,无纹理区域,遮挡和薄物体方面仍然存在困难。 此外,运行时间也是一个挑战。 尽管许多应用程序都需要实时推理,但要在不影响准确性的前提下很难实现。

经典的立体方法通常从计算健壮的特征表示开始[38、36、31、20、41]。 然后为每个像素计算成本量,编码其表示与沿另一图像上相应对极线的所有像素表示之间的相似度。 后处理技术[14,30]通常用于平滑和噪声消除。 然后为每个像素选取成本最低的视差值作为最终预测。

然而,由于解决方案空间的大小以及使用复杂的后处理程序,因此该管道通常在计算上要求很高。为了实现实时性能,已经提出了许多加速方法,例如解决方案空间修剪[6],粗略成本成本计算[16]和有效的变量优化[10]。其中,PatchMatch [3]是用于通过实时推理获得竞争性能的最流行的技术之一[5,6]。
最近,随着深度学习的兴起,已经设计了受传统立体声匹配管道启发的网络。他们通过学习深度表示[22、23]和建立深度成本量[15、8、16]来获得最新的结果。尽管可以使用GPU加速这些方法,但是大多数架构仍然需要考虑内存消耗和计算需求。另一种选择是设计一个回归网络,该回归网络将立体声对作为输入并直接回归视差,而无需显式匹配或构建成本量。不幸的是,实时方法与最佳算法之间通常存在很大的性能差距。

我们的目标是大大加快当前最先进的深度立体声算法的运行速度,以实现实时推理。 我们基于两个主要观察结果建立模型:首先,立体匹配的搜索空间很大,但是可以放心地丢弃很多候选对象,而无需进行全面评估。 其次,由于世界的连贯性,相邻像素通常具有相似的视差。 这表明,一旦我们知道一个像素的差异,便可以有效地将此类信息传播到其相邻像素。

考虑到这些直觉,我们提出了DeepPruner,一种实时立体匹配模型。 具体来说,我们首先利用一种新颖的可微PatchMatch算法来获得成本量的稀疏表示。 然后,我们利用此表示来了解每个像素的修剪范围。 最后,利用图像引导的优化模块来进一步提高性能。 由于所有组件都是可区分的,因此可以以端到端的方式训练整个网络。 通过逐步减少搜索空间并有效地传播此类信息,我们能够针对高可能性假设有效地计算成本量,并显着降低内存消耗和计算成本。
我们在具有挑战性的SceneFlow [23]和KITTI [11]数据集上证明了我们的方法的效率和有效性。我们的模型在SceneFlow上排名第二,但比最佳方法快8倍[9]。与先前在KITTI上的方法相比,DeepPruner的性能优于最先进的方法[8,33],在所有实时模型中均排名第一[23,32]。为了进一步展示DeepPruner的鲁棒性和通用性,我们在“稳健视觉立体挑战赛”中对其进行了评估[1]。我们的模型在多个数据集[11、28、26]上取得了最新的成果,并在总体排名上获得了第一名。

2.Related work

Classical Stereo Matching:数十年来,研究了从立体图像估计视差(深度)[2]。 立体算法通常包括以下三个步骤[27]:计算逐像素特征表示,构建成本量以及最终后处理。 由于像素表示在此过程中起着至关重要的作用,研究人员已经开发了多种表示方法,从周围像素的最简单RGB值到更具区分性的局部描述符,例如CENSUS [39],SIFT [19]和Brief [7] ]。 加上精心设计的后处理技术,例如成本聚集,半全局匹配[14]和马尔可夫随机字段[30、34],它们能够在相对简单的情况下实现良好的性能。

Deep Stereo Matching:为了进一步处理更复杂的现实世界场景,尤其是无纹理的区域或反射表面,现代方法利用CNN提取健壮特征[22]并进行匹配[40,41]。尽管这些技术已在基准测试中证明了出色的性能[11],但仍需要耗时的后处理。考虑到这一点,研究人员建议直接从给定的立体图像中回归亚像素视差[35、9、29]。通过将完整的传统立体声流水线实现为神经网络层,可以以端到端的方式训练这些模型,并能够在GPU上完全进行推理,从而大大提高了效率。不幸的是,由于成本和聚合的巨大规模,内存消耗和所需的计算仍然非常高,使得模型不切实际[15,8]。在本文中,我们的工作基于[15,8]。我们没有搜索完整的视差空间,而是利用新颖的可区分版本Patch Match来学习删减不太可能的匹配项并降低搜索空间的复杂性。我们的模型能够实时运行,同时保持可比的性能。

Patch Matching: Barnes等人提出了Patch Match(PM)的开创性工作。在2009年[3]。它最初是作为一种有效的方法来发现图像之间密集的对应关系以进行结构编辑的。其背后的关键思想是,大量随机样本通常会带来良好的猜测。另外,相邻像素通常具有相干匹配。因此,一旦找到合适的匹配项,我们就可以将信息有效地传播到邻居。由于Patch Match可以有效地减少搜索空间,因此已引起了整个社区的广泛关注[17、12、4、5],并已扩展并应用于多个领域。例如,Korman和Avidan [17]将图像相干性的思想纳入了局部敏感度散列中,并显着提高了速度。他和孙[12]将KD树与PatchMatch结合起来以执行更有效的邻居匹配。 PatchMatch也已应用于立体设置中,用于快速对应估计[21]和倾斜平面拟合[6]。为了提高亚像素精度,Besse等人。 [5]进一步将PatchMatch与粒子置信传播相结合,并将其扩展为连续MRF推理算法。具体来说,[5]利用PatchMatch克服了在连续输出空间上搜索的不可行性。注意,如果MRF仅具有一元项,则它将简化为k粒子广义PatchMatch [4]。
我们的修剪模块主要受[5]启发。我们首先将粒子PatchMatch操作实现为神经网络层,并以循环方式展开它们。然后,我们预测视差置信范围,以近似每个像素的边缘分布。通过有效的采样和传播,我们能够有效地修剪解决方案空间,并显着加快推理速度。重要的是,我们所有的业务都是可区分的,因此我们的方法可以端到端地学习。

Real-time Stereo: 除了我们的工作之外,还有一些并发的努力推动基于实时深度学习的立体估计[16,37]。我们的工作与他们的工作不同,因为我们自适应地修剪了每个区域的搜索空间。相反,他们采用固定的,从粗到精的过程来迭代找到匹配项。

3. Learning to Prune for Stereo Matching

我们的目标是设计一种高效的立体算法,该算法不仅可以产生可靠且准确的估计,而且还可以实时运行。 为了实现这一目标,我们提出了一个简单而有效的解决方案,该解决方案将深度学习与Patch Match结合使用,可以减少潜在的较大搜索空间并显着加快推理速度。
我们通过描述特征提取主干开始我们的讨论。 然后,我们简要回顾一下Patch Match算法,并证明它可以自然地合并到神经网络中,以缩小搜索空间并加快成本构建。 最后,我们描述了如何汇总成本,优化估算以及执行端到端学习。 我们请读者参考图1来说明我们的方法。

论文阅读笔记——DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch_第1张图片

概述:给定一对立体图像,我们首先提取深度多尺度特征。 然后,我们利用可微的Patch Match估计每个像素的一小部分视差,并利用置信度范围预测因子进一步修剪解决方案空间。 与在整个视差搜索范围内运行的其他方法[8,15]不同,我们仅将成本汇总在缩小的搜索范围内。 最后,我们利用轻量级网络完善立体声输出。

3.1. Feature Extraction

特征提取网络的目标是从输入图像中生成可靠的逐像素特征表示。 更正式地说,给定一对立体图像{x0,x1},我们试图学习一组深度特征f0,f1,这些特征对于匹配非常有用。 为了实现这一目标,在[15,8]之后,我们开发了一个以空间金字塔池模块[13,42]为骨干的二维卷积神经网络。 具体来说,我们使用四个残差块,并为最后一个块使用×2扩展卷积以扩大接收场。 然后,我们应用空间金字塔池来构建4级金字塔特征。 通过多尺度信息,该模型能够捕获较大的上下文,同时保持较高的空间分辨率。 最终特征图的大小是原始输入图像大小的1/4。 共享左右要素网络的参数。 现在我们已经为每个像素提供了可靠的特征表示,下一步就是构建成本量。

3.2. Pruning Through Differentiable PatchMatch

现代立体方法通常会在整个视差空间[8、15、9、29]上产生成本。较大的搜索空间不仅增加了内存消耗,而且增加了计算负担。例如,考虑到PSM-Net [8],3D成本量的构建和汇总花费的时间超过250毫秒。这两个操作本身使实时应用程序变得不可行。在本文中,我们通过设计一个有效的基于PatchMatch的修剪器模块来解决此问题,该模块能够预测每个像素的置信度范围,并构建需要较少操作的稀疏成本量。这允许模型仅关注高可能性区域,并节省大量计算和内存。与标准的Patch Match不同,我们的模块是可区分的,从而使端到端学习成为可能。重要的是,如我们的实验所示,这样的置信度范围也是不确定性的有前途的指标,并且可以预见潜在的预测误差。当在下游任务中使用深度估计时,这一点很重要。

PatchMatch revisited:我们的修剪器模块受优雅而经典的Patch Match算法[3]启发。 PatchMatch方法[6、5、3、4]通常包括以下三个步骤1:
1.粒子采样:生成k个随机候选;
2.传播:将粒子传播到邻居;
3.评估:通过评估当前和传播的粒子来更新最佳k解;
一旦完成初始化(步骤1),贪婪方法就会在步骤2和步骤3之间进行迭代,直到达到收敛或固定的步骤数。 在实践中,这通常会导致良好的结果,而没有列举所有的可能性。 最初,k设置为1 [3]。 但是后来,广义的PatchMatch [4]绘制了与粒子采样方法的连接,并扩展了PatchMatch以利用top-k。 这不仅增加了表达能力,而且使收敛速度更快。

Differentiable PatchMatch: 

在这项工作中,我们将广义PatchMatch展开为递归神经网络,其中每个展开步骤都等同于算法的每个迭代。 这很重要,因为它使我们能够端到端训练我们的完整模型。 具体来说,我们设计以下几层:

1.粒子采样层:对于每个像素i,我们根据预测/预定义搜索空间上的均匀分布,随机生成k个视差值
2.传播层:来自相邻像素的粒子,通过卷积与预定义的,单热滤镜模式一起传播(见图3),该模式编码了一个事实,即我们允许每个像素将粒子传播到其4邻域
3.评估层:对于每个像素i,通过获取左特征和右特征之间的内积来计算匹配分数:Si,j=(f0(i),f1(i+di,j)),对于所有候选项j 。 每个像素的最佳k视差值将进行下一次迭代。

论文阅读笔记——DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch_第2张图片

我们的架构设计在底部有一个粒子采样层,然后循环遍历传播和评估层。 由于评估期间的arg max运算符不可微,因此我们将其替换为soft arg min[15]:

图2描绘了一个递归步骤的计算图,该步骤结合了传播和评估。 在实践中,我们不是将每个粒子留在完整的视差空间中,而是将搜索空间划分为k个间隔,并迫使第i个粒子处于第i个间隔中。 这保证了粒子的多样性,并有助于提高以后计算的准确性,这在我们的实验中已经显示出来。 由于所有操作都是可区分的,因此我们可以直接反向传播所有展开步骤,并以端到端的方式训练模型。

论文阅读笔记——DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch_第3张图片

Confidence range prediction: 所有像素的原始搜索空间相同。 然而,实际上,对于每个像素,高度可能的视差位于狭窄区域中。 使用从PatchMatch阶段估计的一小部分视差,我们就有足够的信息来预测真实视差所在的范围。 因此,我们利用置信度范围预测网络来调整每个像素的搜索空间。 该网络具有卷积编码器-解码器结构。 它以可微分的PatchMatch,左图像和扭曲的右图像(根据稀疏视差估计而扭曲)的稀疏视差估计为输入,并为每个像素i输出置信范围Ri = [li,ui]。
置信范围会删减不太可能匹配的空间,从而使昂贵的成本量构建和汇总仅在几个视差值处发生。

3.3. Cost Aggregation and Refinement

cost aggregation: 基于修剪模块中的预测范围,我们构建3D cost volume并进行空间汇总。 按照惯例[8,15],我们将左图,扭曲的右图和相应的视差作为输入,并在视差范围内以B×R×H×W的大小输出成本,其中R是每个像素的视差数。 与以前的工作[8,15]相比,我们的R小10倍以上,这使该模块非常高效。 在等式中定义的soft-arg max。 再次使用公式1来预测视差值ycost,因此我们的方法是端到端可训练的。

Refinement:我们利用轻量级的全卷积细化网络,进一步提高性能。 网络从特征网络的第二残差块取左图像卷积特征并将当前视差估计Ycost作为输入。 然后输出微调的视差预测Yrefine。 低级特征信息可作为减少噪声和提高最终视差图质量的指南,尤其是在尖锐边界上。

3.4. End-to-end Learning

我们的网络是端到端可区分的。 我们使用反向传播来学习参数。 给定GT差异y,总损失函数定义如下:

其中标准的Smooth-L1 loss 分别应用于成本汇总阶段和最终优化阶段的差异预测。 因此我们定义:

论文阅读笔记——DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch_第4张图片

这种损失的优势是可以像L2损失一样在任何地方都可以区分,但对像L1损失之类的异常值则更加健壮。 此外,范围上限和下限的损失定义为回旋镖形不平衡 Smooth-L1 Loss:

论文阅读笔记——DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch_第5张图片

请注意,“上限”鼓励上限预测更接近但最好大于GT差异; 而“下限”则将下限预测推至更接近但最好小于GT差异。

 

 

你可能感兴趣的:(深度学习,立体匹配)