论文阅读笔记——DeepPruner: Learning Efficient Stereo Matching via Differentiable PatchMatch
这篇论文是2019年ICCV新发布的文章。该文章采用了PatchMatch思路,并显著提升了速度。主要思路包括:首先采用了一种新型可微分化的Patch Match算法来生成稀疏的成本体积数据。接着,在此表示基础上确定了每个像素对应的修剪范围,并动态调整各区域搜索空间范围。最终,在图像引导优化模块的帮助下实现了性能提升。由于各组件具有独立性,并实现了端到端式的系统训练
论文链接:https://arxiv.org/pdf/1909.05845.pdf
本文主要采用机器翻译技术为主,并配合人工校对工作进行处理,在经过两天时间后, 希望能从中吸取作者的经验
Abstract
本文的主要目的是大幅提高当前最先进的立体匹配算法的速度表现,并实现实时推理功能。为此目的, 我们设计了具有独特功能的可区分Patch Match组件, 该组件允许我们在不进行全面成本评估的情况下, 有效去除大部分视差值. 接着, 我们根据这一特性推断出每个像素的剪裁范围. 通过逐步减少搜索空间并有效地传播相关信息, 我们成功实现了高概率假设的成本计算, 同时节省了内存和计算资源. 最后, 我们引入图像引导优化模块来进一步提升系统的性能表现. 由于所有组件均独立设计使得整个网络得以端到端训练。
1.Introduction
立体估计是基于一对具有重叠视场的图像来推断深度(或视差)的过程。它构成了许多应用(如机器人技术和计算摄影)的基础模块。尽管经过几十年的研究探索,但如何在现实世界中有效实现立体估计仍是一个开放性问题。此外,在实时性方面仍面临诸多挑战。尽管许多应用依赖于实时处理能力,在保持准确性的同时实现高效处理依然困难重重。
经典立体方法传统上从生成可靠且具信息性的特征表示开始[38, 36, 31, 20, 41]。随后针对每个像素生成成本量,并对其进行编码以便与其他图像中对应极线上的像素表示进行相似性比较。后续处理步骤[14, 30]则用于有效减少图像噪声和模糊问题。通过为每个像素选择具有最低累积成本的视差值来确定最终预测结果。
然而由于解决方案空间较大以及采用了复杂的后处理程序 该管道在计算资源上的需求较高 为此 已提出多种加速策略 包括优化方案空间的方法之一 简称PRAM [6] 以及提升效率的技术如粗略成本计算 [16] 和变量优化 [10 ]等 这些技术使得PRAM能够以较低的时间复杂度实现接近实时效果
我们致力于大幅提高当前最先进的深度立体声算法的速度表现,并实现实时推理功能。为此,我们以两个关键观察点为基础构建模型:首先,在立体匹配过程中由于搜索空间较大而难以高效处理的问题中我们可以合理地忽略那些与目标特征无明显匹配度的对象;其次,在利用视差信息进行深度估计的过程中由于世界的连贯性原则使得相邻区域之间存在高度相关性这一特性能够显著提升模型的整体性能。这表明一旦确定某像素的差异程度我们便能有效地将此信息传播到其相邻像素从而进一步优化整体计算效率
基于这些直觉的基础上,我们开发了一种实时立体匹配模型——DeepPruner。该模型的具体构建过程主要包括三个关键步骤:首先采用了一种创新性的可微PatchMatch算法来获得目标物体的成本稀疏表示;接着通过此稀疏表示分析出每个像素的修剪范围;最后引入了图像引导优化模块以进一步提升性能。值得注意的是,在整个系统架构中各组件均实现了独立化设计,在此基础上即可实现端到端式的训练流程。通过系统性地减少搜索范围,并有效地传播关键信息,在高概率假设下能够高效计算出相应成本值的同时显著降低了内存占用以及计算开销。
在经过严格测试后发现,在具有挑战性的SceneFlow [23]和KITTI [11]数据集上验证了该方法的有效性与效率。具体而言,在SceneFlow数据集上的表现优于现有方法,在KITTI数据集上的性能同样令人瞩目——我们的模型在SceneFlow基准测试中取得了第二名的好成绩(较最佳方案快8倍)[9];相较于现有的KITTI基准方法,在实时模型排名中 our model 获得第一名[8,33]。此外,在"Robust Visual Stereo Challenge"竞赛中对 DeepPruner 进行了专门测试[1]——经过多方位评估后发现其在多个基准数据集[11,28,26]上均取得了最新的评测记录,并且在综合排名中位列榜首。
2.Related work
Classical Stereo Matching
Deep Stereo Matching: 为了进一步处理更复杂的现实世界场景,尤其是无纹理的区域或反射表面,现代方法利用CNN提取健壮特征[22]并进行匹配[40,41]。尽管这些技术已在基准测试中证明了出色的性能[11],但仍需要耗时的后处理。考虑到这一点,研究人员建议直接从给定的立体图像中回归亚像素视差[35、9、29]。通过将完整的传统立体声流水线实现为神经网络层,可以以端到端的方式训练这些模型,并能够在GPU上完全进行推理,从而大大提高了效率。不幸的是,由于成本和聚合的巨大规模,内存消耗和所需的计算仍然非常高,使得模型不切实际[15,8]。在本文中,我们的工作基于[15,8]。我们没有搜索完整的视差空间,而是利用新颖的可区分版本Patch Match来学习删减不太可能的匹配项并降低搜索空间的复杂性。我们的模型能够实时运行,同时保持可比的性能。
我们的修剪模块主要参考了[5]中的相关内容。我们首先将粒子化的PatchMatch操作实现了神经网络层,并以循环的方式展开这些操作。接着,在预测视差置信范围时我们采用了一种近似每个像素边缘分布的方法。通过有效的采样与传播机制我们成功地缩减了求解空间从而显著提升了推理速度。值得注意的是我们的所有处理步骤都是可区分的因此我们的方法能够在端到端的学习框架下运行
Real-time Stereo: 除了我们团队的研究之外,还有一些研究致力于基于实时深度学习框架实现立体估计技术的发展[16,37]. 其中一些研究专注于提升算法效率与鲁棒性以适应实际应用场景需求. 不过值得注意的是,在研究目标上存在显著差异. 我们的关注点在于实现精确且实时的三维重建效果. 由于采用了自适应的空间剪枝策略来优化搜索范围以提高计算效率. 相比之下他们则侧重于通过固定化的层次化匹配过程来逐步建立精确的空间映射关系.
3. Learning to Prune for Stereo Matching
我们致力于开发一种高效的立体算法系统,在该系统中不仅能够生成可靠的估计结果而且还能实现实时运行的优势。为了达成这一目标要求我们将深度学习技术与Patch Match方法进行集成运用从而有效降低了潜在的搜索空间并显著提升了推理速度。

考虑一对立体图像后,在后续处理中先从多尺度特征中提取深度信息随后通过可微分化的Patch Match算法估计每个像素局部区域的视差并结合置信度范围预测因子优化解空间结构。不同于在传统视差搜索范围内的全局优化方法我们将计算成本限制在较小的局部搜索区域内最后通过轻量级神经网络提升深度估计精度
3.1. Feature Extraction
该网络的主要目标是输出可靠且逐像素的特征表示。 更严谨地讲,在这对立体图像{x₀,x₁}的基础上进行操作时,请注意以下几点:我们旨在学习一组深度特征f₀,f₁这些参数对于匹配过程具有重要意义。 在[15,8]之后 我们开发了一个基于空间金字塔池模块[13,42]作为骨干的二维卷积神经网络架构。 具体来说 我们采用了四个残差块 并对最后一个模块采用×2扩展卷积以扩大接收区域 进而构建四级金字塔特征图 通过这种方式 网络能够有效捕获不同尺度的空间信息并保持较高分辨率 最终得到的特征图尺寸为原始输入图像尺寸的四分之一 并且这些参数与共享左右要素网络参数进行了共享。
现在我们已经成功地将每个像素映射到了可靠的特征表示上 下一步就是构建成本量。
3.2. Pruning Through Differentiable PatchMatch
现代立体方法通常会在整个视差空间(8,15,9,29)上计算出对应的成本值。较大的搜索空间不仅会导致内存消耗增加、计算负担加重;而且还可能导致实时处理功能失效的情况出现。例如,在PSM-Net算法中[8]所指出的那样:构建并汇总3D成本量所需的时间已经超过250毫秒;这两个操作本身使得基于实时应用的处理变得不可行。为了在本文中解决这一问题:我们开发了一个高效的基于PatchMatch技术设计出来的修剪器模块;该模块能够预判每个像素点的信任度范围;从而能够构建出只需要较少操作即可完成的任务——稀疏成本量图景。这使得模型能够聚焦于高信任度区域;从而节省大量的计算资源与内存消耗等资源上的开支;与传统意义上的PatchMatch算法不同的是:我们的模块具有可区分性特征;这使得整个端到端的学习训练过程得以实现而不受影响或受限于某些限制条件或其他干扰因素的存在或影响。(重要的是:正如我们所展示的实验结果所示:这种信任度范围指标同样具有很好的预测误差评估价值;因此在深度估计相关的下游应用中使用这种方法将会获得更好的性能表现效果)
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:
在本研究中,将其分解为递归神经网络架构*,其中每个分解步骤均对应算法的一个迭代周期***,这对于构建一个端到端可训练的系统至关重要***,具体而言,我们详细阐述以下几个主要模块的设计方案:
1. 粒子采样层: 针对每一个像素i,在均匀分布在预测/预定义搜索空间中的位置上随机抽取k个视差候选;
2. 传播层: 相邻像素的粒子经由预先设定的热核卷积操作传播(见图3),该过程编码了一个事实——即我们允许每个像素将粒子传递至其4邻域范围内的各个位置;
3. 评估层: 计算匹配度分数Si,j=⟨f0(i), f1(i+di,j)⟩(其中i为当前目标位置),对于所有候选位移j,并在此处更新最佳k个视差值。

我们的系统架构设计在底层实现了基于粒子采样的模块,在循环迭代中完成信息传播与评估过程。 在评估阶段中使用的arg max运算无法实现可微分化,在此情况下我们采用了软最大(soft max)替代方案[15]:

图2展示了递归步骤的计算图示意图,在这一过程中融合了信息传播与评估机制。在实际操作中,并未将所有粒子保留在完整的视差空间中;相反地,则采用了细分策略:我们将搜索空间划分为k个区间,并强制让第i个粒子位于第i个区间内。这种设计策略不仅增强了群体的多样性水平,并有助于提升后续计算的准确性;通过这种方法,在我们的实验结果中已经得到了验证:因为所有的操作都是可辨识且独立的,在这种情况下我们可以直接实现反向传播并采用端到端的方式进行模型训练

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
我们的网络被证明是端到端可区分的;我们通过反向传播算法来学习参数;对于给定的目标差异y值,则总损失函数定义为:

其中标准的Smooth-L1损失函数被用于成本汇总阶段和最终优化阶段的差异预测。为此我们提出以下定义:

该种损失具有显著的优势,在任何场景下都能够有效地区分。相较于像L1损失这样的异常值,则更具鲁棒性。进一步地,在确定范围上限和下限时的损失计算采用回旋镖形不平衡模型作为基础构成了Smooth-L1 Loss

请注意,“上限”引导上限预测趋近于但不低于GT差异;而“下限”则引导下限预测趋近于但不超过GT差异。
