【论文简述及翻译】StereoNet: Guided Hierarchical Refinement for Real-Time Edge-Aware Depth Prediction(ECCV)

一、论文简述

1. 第一作者:Sameh Khamis

2. 发表年份:2018

3. 发表期刊:ECCV

4. 关键词:立体匹配、深度估计、边缘感知改进、代价体滤波、深度学习

5. 探索动机:目前基于深度学习的深度估计方法需要大量的时间和内存,无法在内存受限的设备上进行实时深度估计。

6. 工作目标:基于对深度结构的观察,是否可以提出深度的实时网络,能够产生亚像素级别的像素图?

7. 核心思想:提出第一个用于实时立体匹配的端到端网络StereoNet,在高质量GPU上以 60fps 运行,产生 720p 高质量、边缘保留的视差图。为达到实时的立体匹配,StereoNet 从低分辨率代价体中回归初始视差图,节省运算时间。但低分辨率构建的视差图会丢失细节信息(边缘),因此使用输入图像作为指导,学习边缘感知上采样函数,分层改进视差图,以恢复边缘高频细节和薄结构,从而提高视差精度。

8. 实现方法:

  • 粗特征提取:共享权值的Siames网络分别提取左右图的特征,首先,使用 K 个步长为2,5*5 的卷积层进行下采样操作(K 通常取 3 或者 4),下采样的过程中输出通道数保持为 32,然后采用6个残差块,每个残差块由于3*3卷积、Batch Normalization、矫正线性单元(Leakey ReLU组成;最后是一个是没有正则化和激活层的卷积层,输出是下采样图像中每个像素的 32 维特征向量。这种低分辨率表示很重要,原因有两个:它具有很大的感受野,对无纹理区域很有用;它保持特征向量紧凑简洁。
  • 构建代价体:对应向量直接相减,构建代价体。为了在空间域和视差域中聚合上下文信息,采用的 4 个3D卷积过滤,操作后最终针对每个像素得到单通道的视差。本文的目标是设计一个小内存占用的方法,可以方便部署在移动平台上。因此该代价体是低分辨率的。经过实验证明,低分辨率的代价体与高分辨率的效果相当,但大大降低了计算量。
  • 视差回归:对比了两种可微的视差回归的方法,分别是soft argmin和probabilistic selection。文章用实验证明了soft argmin收敛速度更快,更容易优化。所以采用soft argmin作为视差回归的方法。
  • 边缘感知改进:首先利用双线性插值上采样视差图,提高一倍其分辨率;然后将RGB 图像复制成相同维度,和插值得到的视差图连接一起放到一系列3 ∗ 3的空洞卷积等进行改进,得到当前尺度的结果;最后循环迭代上述过程,直至得到最终结果。从滤波的角度来看,就是利用当前尺度的图像对当前尺度的视差图进行导向滤波。

9. 实验结果:该网络产生了0.03的亚像素级别的视差图,在高质量GPU上以 60fps 运行。在反射和遮挡区域的视差精度较低。

10.论文&代码下载:

https://arxiv.org/pdf/1807.08865.pdf

由于商业原因,该项目代码并未开源,目前有研究者完整复现了相关研究,代码地址为Github:

https://github.com/meteorshowers/StereoNet

二、论文翻译

StereoNet: Guided Hierarchical Refinement for Real-Time Edge-Aware Depth Prediction

摘要

本文介绍了StereoNet,这是第一个用于实时立体匹配的端到端深度结构,在NVidia Titan X上以60fps运行,可生成高质量、边缘保留、无量化的视差图。本文的一个重要观点是,网络实现的亚像素匹配精度,高于传统立体匹配方法的精度。这让我们能够通过使用非常低分辨率的代价体来实现实时性能,该代价体对实现高视差精度所需的所有信息进行编码。通过采用学习的边缘感知上采样功能来实现空间精度。我们的模型使用Siamese网络从左右图像中抽取特征。在非常低分辨率的代价体中计算视差的第一次估计,然后,通过然后通过学习到的上采样函数(该函数使用小型的像素到像素的改进网络分层重新引入高频细节。利用颜色输入作为指导,该函数可以生成高质量的感知边缘的输出。我们在多个基准测试中获得了令人信服的结果,表明了所提出的方法如何在可接受的计算预算下提供极高的灵活性。

关键词:立体匹配,深度估计,边缘感知改进,代价体滤波,深度学习。

1 介绍

立体匹配是一种经典的计算机视觉问题,是从两个略微位移的图像中估计深度。随着对虚拟现实和增强现实的兴趣不断增加,深度估计最近被来到了舞台中央。它是3D重建、定位和跟踪等许多任务的核心。它的应用范围涵盖了其他多种研究和产品领域,包括室内建图和结构,自动驾驶汽车,以及人体和面部跟踪。

像Microsoft Kinect这样的主动深度传感器提供了高质量的深度图,不仅彻底改变了计算机视觉研究,而且在消费级应用中也发挥了重要作用。近年来,随着许多其他消费类设备的发布,这些主动深度传感器变得非常流行,例如英特尔实感系列,iPhone X上的结构光传感器,以及Kinect V2等飞行时间相机。随着移动设备上增强现实(AR)应用的兴起,越来越需要能够在有限的计算预算下预测精确深度的算法。除iPhone X之外,市场上的所有智能手机都只能依赖单目或双目RGB流。像ARKit和ARCore这样的稀疏跟踪和建图工具的发布展示了移动设备上的粗略和稀疏的几何估计,令人印象深刻。然而,它们缺乏密集的深度估计,因此不能实现令人兴奋的AR应用,例如遮挡处理或者在现实世界中与虚拟对象进行精确交互。使用单个移动相机(类似于[46])或双摄像头进行深度估计自然成为从工业扩展到数百万用户的AR需求。

被动深度最先进的技术依赖于两个(矫正过的)RGB图像之间的立体三角测量,在历史上一直由基于CRF的方法主导。这些技术获得了非常好的结果,但计算速度慢。在这些模型中进行推断相当于解决一般NP-hard问题,在许多情况下迫使从业者使用运算时间在秒范围内的求解器或使用近似解。此外,这些技术通常会受到无纹理区域、遮挡、重复图案、薄结构和反射表面的情况的影响。该领域正在慢慢转变,自[61]以来,它开始使用深度特征,主要是一元潜力,以进一步推进现有技术。

最近,深度结构在预测被动立体数据的深度方面表现出高水平的精度。尽管取得了显着进步,但提出的方法仍需要大量的处理能力和内存。例如,在[29]中他们的网络中有350万个参数,在960×540图像上达到每秒约0.95图像的吞吐量,[42] 在高端GPU上花费0.5秒产生单个视差。

在本文中,我们介绍了StereoNet,这是一种新颖的深度结构,可在高端GPU上以60Hz生成最先进720p深度图。基于我们的观察,深度结构非常适合以极高的亚像素精度推断匹配,我们证明了非常低的分辨率代价体足以实现与以全分辨率操作的传统立体匹配系统相当的深度精度。为了实现空间精度,我们以多尺度方式应用边缘感知滤波阶段,以提供高质量的输出。总之,这项工作的主要贡献如下:

1.我们分析表明深度结构的亚像素匹配精度比“传统”立体方法的亚像素匹配精度高一个数量级。

2. 我们证明了网络的高亚像素精度允许以非常低的分辨率代价体实现传统立体匹配的深度精度,从而产生极其有效的算法。

3. 我们分析表明,之前在深度结构中引入代价体的工作,对于任务过度参数化,以及如何以极低的精度降低系统的运行时间和内存占用量。

4. 一种新的分层深度改进层,能够执行保留边缘的高质量上采样。

5. 最后,我们证明了所提出的系统在几个基准测试中获得了令人信服的结果,同时在高端GPU结构上能够实时。

2 相关工作

立体深度已经被研究了很长时间,我们将[49,22]推荐给感兴趣的读者进行调研。立体的对应搜索是一个具有挑战性的问题,并且传统上分为全局和局部方法。全局方法在图像上形成代价函数,传统上使用信念传播或图切割[3,17,30,31]等方法进行优化。相反,局部立体匹配方法(例如[4])将支持窗口置于参考帧中的像素上,然后在第二张图像中移位该窗口,直到找到最相关的点。局部立体匹配的主要挑战是定义支持窗口的最佳大小。一方面,窗口需要足够大以获得足够量的纹理,但是需要同时小以避免聚合错误的视差值,这可能导致在视差不连续处的众所周知的边缘肥大效应。为了避免这种折衷,自适应支持方法基于例如(它与中心像素的颜色相似)来权衡支持区域内的每个像素的影响。。

有趣的是,自适应支持权重方法在[25]中被视为代价体滤波:通过计算每个像素所有可能的视差的匹配代价来构建三维代价体。然后使用加权平均滤波器对该代价体进行滤波。该滤波在空间域和深度域中传播局部信息,产生深度图,该深度图保留跨物体不连续处的边缘。

对于基于三角测量的立体匹配系统,深度的精度直接与另一图像中的对应像素可以定位的精度相关联。因此,以前的工作力求匹配亚像素精度。大多数算法的复杂性随着评估的视差的数量线性地缩放,因此一种方法是建立具有非常精细的视差步骤的较大的代价体,但这在计算上是不可行的。因此,许多算法从离散匹配开始,然后通过拟合一个局部曲线(如拟合离散视差候选点之间的代价函数的抛物线)来优化这些匹配(参见例如[59,39])。其他工作基于连续优化策略或相位相关。在[45]中显示,在实际条件下,亚像素精度的界限是像素的1/10,而在无噪声条件下的理论极限是低于10倍。我们证明了这种传统知识并不适用于基于学习的方法,我们可以实现1/30像素的亚像素精度。

最近的工作已经发展到使用端到端学习进行立体匹配。各种方法将学习的小图像块的嵌入或匹配代价与全局优化方法(如半全局匹配(SGM))相结合以进行改进。[9]学习多尺度嵌入模型,然后是MRF。[62,61]学会匹配图像块,然后是SGM。[35]学习使用Siamese特征网络匹配图像块并使用SGM进行全局优化。 [52]使用多阶段方法,其中首先使用公路网络结构来计算匹配代价,然后在后处理中使用另一个网络来聚合和池化代价。

其他工作尝试不使用后处理端到端地解决立体匹配问题。[37,26]训练端到端的编码器解码器网络,用于视差和光流估计,在现有和新的基准测试中取得了最先进的结果。其他端到端方法使用多个改进阶段,这些阶段会结合正确的视差假设。[21]提出了一种用于标记问题的通用结构,包括深度估计,这种结构进行端到端训练以预测和改进输出。[42]提出了一种级联方法来迭代地改进预测深度。迭代改进方法虽然在各种基准测试中表现出良好的性能,但往往需要大量的计算资源。

与我们的工作更密切相关的是[29],他们使用了代价体滤波的概念,但对特征和过滤器进行了端到端的训练,取得了令人瞩目的成果。DeepStereo使用平面扫描体从多视图立体输入合成新的视图。与之前的工作相反,我们对可以实时运行的端到端学习立体管道机制感兴趣,因此我们从非常低分辨率的代价体开始,然后使用学习的边缘感知滤波器对其进行上采样。

3 StereoNet算法

3.1 初步措施

给定输入图像对,我们的目标是训练一个端到端视差预测的管道机制。训练此类管道的一种方法是利用通用编码器解码器网络。编码器通过一系列收缩层将输入提取到瓶颈,该瓶颈获得与训练中的任务最相关的细节,并且解码器通过一系列扩展层重建从瓶颈层中获得的表示的输出。虽然这种方法在包括深度预测在内的各种问题上都取得了广泛的成功,但它们缺乏一些我们在立体算法中关心的特性。

首先,这种方法没有获得到关于立体匹配问题的任何几何直觉。立体预测首先是对应匹配问题,因此我们的目标是设计一种算法,无需重新训练即可适应不同分辨率和基线的不同立体相机。其次,我们注意到类似的方法明显过度参数化,其中预测是像素到像素的映射,其不涉及输入的任何形变,因此可能过度拟合。

我们的立体匹配方法采用了利用问题结构和经典方法来解决匹配的设计,类似于[29],同时使用小型的感知上下文的像素到像素改进网络产生保留边缘的输出。我们模型的结构概述如图1所示,并在以下部分中详述。

图1. 模型结构。提出了两阶段方法:首先,我们使用Siamese网络以较低分辨率提取图像特征。然后,我们通过沿着扫描线匹配特征来建立该分辨率的代价体,从而为我们提供粗略的视差估计。我们最终分层次地改进结果以恢复小细节和薄结构。

3.2  粗略预测:代价体过滤

立体系统通常解决对应问题。该问题通常归结为通过沿着其扫描线找到两个校正图像之间的像素到像素匹配来形成视差图。对平滑和边缘保持的诉求导致了诸如代价体滤波的方法,其通过形成和处理3D体,共同解决每个像素处的所有候选视差,来明确地模拟匹配问题。虽然[25]直接使用颜色值进行匹配,但我们计算用于匹配的每个像素的特征表示。

特征网络。管道机制的第一步找到图像块的有意义的表示,可以在后期准确匹配。我们还记得立体遭受无纹理区域的影响,传统方法通过使用大窗口聚合代价来解决这个问题。我们通过在网络中确保从大的感受野中提取特征来重复相同的行为。特别是,我们使用两个输入图像(也称为Siamese网络)之间具有共享权重的特征网络。我们首先使用K 5×5卷积以2为步幅积极地对输入图像进行下采样,在整个下采样期间将通道数保持在32。在我们的实验中,我们将K设置为3或4。然后我们应用6个残差块,采用3×3卷积,批归一化和Leaky ReLU激活函数(α= 0.2)。最后,使用具有3×3卷积的最终层处理,不使用批归一化或激活函数。输出是下采样图像中的每个像素的32维特征向量。这种低分辨率表示很重要,原因有两个:1)它具有很大的感受野,对无纹理区域很有用。2)它保持特征向量简洁性。

代价体。此时,我们通过获取像素的特征向量与匹配候选的特征向量之间的差来形成粗分辨率的代价体。我们注意到不对称表示通常表现良好,并且在我们的实验中与连接两个向量获得了相似的结果。

在这个阶段,传统的立体方法将使用赢者通吃(WTA)方法来选择两个特征向量之间的具有最低欧几里德距离(欧式距离)的视差。相反,在这里,我们让网络通过运行多个卷积接着非线性来学习正确的度量。

特别是,为了聚合空间域和视差域的上下文,我们使用4个3D卷积过滤代价体,滤波器大小为3×3×3,具有批归一化和Leaky ReLu激活。最后一个3×3×3卷积层不使用批归一化或激活的,并且滤波层产生每个像素的1维输出和候选视差。

对于尺寸为W×H的输入图像并且评估最大值为D的候选视差,对于K个下采样层,我们的代价体为W/2^K × H/2^K × (D+1)/2^K。在我们的StereoNet设计中,我们目标是小型简洁的方法,具有较小的内存占用,可以部署到移动平台上。与[29]形成四分之一分辨率的特征表示和在多个层级聚合代价体不同,我们注意到大部分时间和计算都花费在更高分辨率上匹配,而大多数性能提升来自较低分辨率的匹配。我们在实验中验证了这一说法,并表明考虑到速度提升,性能损失并不显着。其原因在于网络实现了比传统立体匹配方法更高的亚像素精度。因此,不需要在更高分辨率下进行匹配。

可微分的arg min。我们通常会使用arg min选择滤波后的代价体中每个像素的最小代价视差。对于像素i和视差值C(d)的代价函数,所选择的视差值di被定义为:

然而,由于arg min是不可微分的函数,因此无法学习。在我们的方法中我们考虑了两种可可微分的变体。第一个是soft argmin,最初在[6]中提出并在[29]中使用。实际上,所选视差是所有视差值的softmax加权组合:

第二个可微分变体是概率选择,从softmax分布中的代价上采样:

通过采样过程进行求微分使用梯度估计技术,通过最小化随机过程的预期损失来学习视差的分布。虽然这种技术源于强化学习中的策略梯度方法,但它最近被表述为[50]中的随机计算图,并应用于[5]中基于RANSAC的相机定位。此外,我们讨论的两个可微变体之间的平行关系类似于软注意力网络和硬注意力网络之间的平行关系。

不幸的是,即使使用各种方差减少技术,概率方法在我们的实验中也明显表现不佳。我们希望这是因为它保留了硬选择。在许多应用中,这种特性可能是至关重要的,但在我们的模型中,它被soft argmin能够回归亚像素精确值的能力所取代。这一结论得到了关于强化学习中连续动作空间的文献的支持。因此,soft argmin选择收敛更快并且更容易优化,我们在实验中选择使用它。

3.3 分层改进:边缘感知上采样

依赖粗匹配的缺点是由此产生的近视觉的输出缺乏精良的细节。为了保持我们的小型简洁的设计,我们通过学习边缘保留改进网络来解决这个问题。我们注意到网络在这个阶段的工作是扩大或减少视差值,以使用颜色输入作为指导来融合高频细节,因此是一个学习像素到像素映射的小型网络,类似于最近计算摄影工作[8,7,20] 中使用的网络,是一种合适的方法。具体地,我们任务改进网络仅从粗略预测中寻找残差(或增量视差)以增加或减少。

我们的改进网络将视差双线性上采样到输出尺寸以及调整颜色到相同尺寸。最近反卷积被证明可以产生棋盘伪影,所以我们选择使用双线性上采样和卷积进行代替[40]。连接的颜色和视差首先通过3×3卷积层,该层输出32维表示。然后通过6个残余块,再次采用3×3卷积,批归一化和Leaky ReLu激活(α= 0.2)。我们在这些块中使用空洞卷积来从更大的上下文中进行采样,而不会增加网络大小。我们将残差块的膨胀系数分别设置为1,2,4,8,1和1。然后使用3×3卷积层,不使用批归一化或激活的处理该输出。该网络的输出是1维视差残差,然后将其添加到先前预测。我们将ReLu应用于总和以限制视差为正。

在我们的实验中,我们评估使用所描述的级联的网络分层次地改进输出,以及进行一次改进,一次性将粗糙输出上采样到全分辨率。图2展示了层次结构的每个层级的改进层的输出以及在每个层级添加的残差以恢复高频细节。这个网络的行为让人想起联合双边上采样,实际上我们认为这个网络是利用输入图像引导的学习边缘感知的上采样函数。

图2.分层改进结果。每个阶段的结果(上行),从左上角的代价体输出开始,用对应的改进网络的输出(下行)进行更新。使用颜色输入作为指导,改进网络的输出预期会在边缘周围扩张和减小。真实值显示在右下角。此示例的每个阶段的平均端点误差分别为:3.27,2.34,1.80和1.26。放大查看细节。

3.4 损失函数

我们使用真实标签的立体数据以完全监督的方式训练StereoNet。我们最小化层次损失函数:

其中 di^k 是在第k个改进层级的像素i的预测视差,其中k=0表示输出预改进,并且di是相同像素的真实值。预测的视差图总是双线性上采样以匹配真实的分辨率。最后,ρ(·)是来自[2]的双参数鲁棒函数,其参数设置为α= 1且c = 2,近似于平滑的L1损失。

3.5 实现细节

我们使用Tensorflow实现和训练StereoNet。我们所有的实验都使用RMSProp进行优化,初始设定为1e-3的指数衰减学习率。输入数据首先归一化到范围[-1,1]。我们使用批大小为1,因为模型尺寸较小,我们不进行裁剪,不像[29]。

我们的网络需要大约150k次迭代才能达到收敛。我们发现,直观地,同时对图像对的左右视差图进行训练显着加快了训练速度。 在较小的数据集中,从头开始训练将是徒劳的,我们对预先训练的模型进行了微调,以进行额外的50k迭代。

4 实验

在这里,我们在几个数据集上评估我们的系统,并证明我们以现有技术所需一小部分的计算成本就获得高质量的结果。

4.1 数据集和建立

我们在三个数据集上定量和定性地评估了StereoNet:Scene Flow,KITTI 2012和KITTI 2015。Scene Flow是一种适用于深度学习模型的大型合成立体数据集。但是,其他两个KITTI数据集虽然与实际环境相当,但对于完整的端到端训练来说太小了。我们遵循先前的端到端方法,通过最初在Scene Flow上训练,然后在KITTI数据集上单独微调得到的模型。最后,我们在精度和运行时长方面与先进的方法进行比较,以显示我们的方法在实时场景中的可行性。

此外,我们使用模型的四种变体在Scene Flow数据集上进行消融研究。我们评估了将下采样卷数K(详见3.2节)的数量设置为3和4。这将控制代价体形成的分辨率。通过更积极的下采样,代价体过滤更快,但是以牺牲薄结构和小物体的细节为代价。改进层可以带来很多细节,但如果传递的信息完全从代价体中丢失,则不太可能恢复它们。此外,我们使用K改进层进行评估,以分层方式恢复不同尺度的细节,而不是使用单个改进层将代价体输出直接上采样到所需的最终分辨率。

4.2 亚像素精度

在为给定应用选择合适的技术时,深度系统的精度通常是一个关键变量。具有基线b,焦距f和亚像素精度δ的三角测量系统具有随距离Z二次方增加的误差ǫ。诸如飞行时间之类的竞争技术不会受到这个问题的影响,这使得它们对于远距离应用具有吸引力,比如房间扫描和重建。尽管如此,已经证明ToF系统中的多径效应甚至可以在物体扫描等近距离任务中扭曲几何形状。长距离精度仍然是反对立体系统和支持ToF的主要论据之一。

在此,我们展示了深度结构在亚像素精度方面的突破,因此它们可以与其他技术竞争,不仅适用于短距离,也适用于长距离。传统的立体匹配方法执行离散搜索,然后执行抛物线插值以检索准确的视差。这种方法通常会产生亚像素精度~0.25像素,对于具有55 cm基线的系统(例如Intel Realsense D415),大致相当于3 m距离处的4.5 cm误差。

为了评估方法的精度,我们使用了Scene Flow的评估集,我们仅计算了在整数位置正确匹配的像素的平均误差。结果对应于超过一亿像素的平均值,并在图3中报告。从该图中,注意到:(1)我们提出的方法实现了0.03的亚像素精度,这比传统的方法低一个数量级。立体匹配方法,如[4,14,15]; (2)无论代价体的分辨率如何,改进层的表现都非常相似; (3)在没有任何改进的情况下,下采样后的代价体仍然可以在低分辨率输出中实现0.03的亚像素精度。但是,误差随着下采样因子几乎呈线性增加。

请注意,亚像素精度为0.03表示距离相机3米距离处的预期误差小于5毫米(英特尔Realsense D415)。 这一结果使得三角测量系统非常具有吸引力并且与ToF技术相当,而不会受到多径效应的影响。

图3.立体匹配中的亚像素精度。我们证明StereoNet的亚像素精度达到0.03,比传统的立体方法低一个数量级。在实际条件下,传统方法的下限被发现为1/10(见[45]),我们用黑线表示。 而且,我们的方法可以在720p图像上实时运行。

4.3 定量结果

现在我们在标准基准上评估模型,证明所提方法的有效性以及代价体分辨率和获得的精度之间的不同折衷。

SceneFlow。虽然这些数据是综合生成的,但由于存在遮挡、薄结构和大的视差,评估序列是非常具有挑战性的。我们评估了模型在表1中报告端点误差(EPE)。

表1. Scene Flow的定量评估。与近期的深度学习方法相比,我们取得了最先进的结果。我们比较了我们模型的四种变体,这些变体在代价体形成的分辨率(8x vs 16x)和改进层数(多多vs单)上有所不同。

单个未改进的模型,即仅使用分辨率为1/8的代价体输出,实现了2.48的EPE,其优于[29]中提出的完整模型,其达到2.51的EPE。请注意,我们未改进的模型由360k参数组成,在960×540输入分辨率下以12毫秒运行,而[29]在相同分辨率下使用350万参数,运行时间为950毫秒。我们最好的多尺度结构实现了1.1的最先进的误差,这也低于最近的方法[42]中报告的误差。定性示例如图4。请注意该方法如何恢复非常具有挑战性的细节。

图4. FlyingThings3D测试集的定性结果。尽管形成代价体的分辨率很低,但所提出的两阶段结构能够恢复非常好的细节。

最后一个考虑因素是代价体的解决方案。一方面,我们证明了粗代价体已经具备了检索非常高的亚像素精度所需的所有信息,即高视差分辨率。另一方面,对图像进行下采样可能导致空间分辨率的损失,因此如果代价体的输出非常粗糙,则不能重建薄结构。在这里,我们证明了1/16分辨率的体足以恢复非常具有挑战性的小物体。实际上在图5中,我们比较了三个代价体的输出,即1/4,1/8,1/16分辨率,我们也应用了改进层。我们可以观察到,通过我们提出的上采样策略可以正确地恢复1/16分辨率视差图中遗漏的精细结构。为了获得令人信服的结果,1/4的代价体不是必需的,这对于移动应用来说是一个重要的发现。如前一小节所示,即使在低分辨率下,网络也实现了1/30像素的亚像素精度。但是,我们还要强调,要在多个基准测试中实现最先进的精度,代价体分辨率成为一个重要因素,如表1所示。

图5.代价体比较。1/16分辨率的代价体已经具有生成高质量视差图所需的信息。这在后期改进中很明显,我们恢复了具有挑战性的薄结构,并且EPE低于1像素。

Kitti。Kitti是一个突出的立体基准测试,通过驾驶配备摄像头和激光扫描仪的汽车拍摄。 由于巨大的变化,反射,过度曝光的区域以及更重要的是缺乏大型训练集,数据集非常具有挑战性。尽管如此,我们在表2中提供了Kitti 2012的结果。我们的模型使用下采样系数8的代价体和3层的改进步骤。在最先进的方法中,我们将其与三个重要方法进行比较。现有最先进的方法,EPE达到0.6,但每张图像的运行时间为0.9秒,并使用多尺度代价体和多个3D反卷积。早期基于学习的深度立体匹配方法处理每个图像需要67秒,并且与我们的每立体对仅需要0.015秒的方法相比具有更高的误差(0.9)。SGM-net的误差与我们的相当。虽然我们没有达到最先进的结果,但我们相信所产生的视差图非常引人注目,如图6底部所示。我们分析了模型中的误差来源,我们发现大多数错误的估计都是围绕反射,导致错误的视差预测,以及遮挡区域,这些区域在另一个视图中没有对应关系。这些区域无法通过数据解释,然后问题可以被视为一个图像修复任务,我们的模型没有经过训练。最先进的技术在其改进步骤中使用了一种类似沙漏的结构,这已被证明对于修复图像非常有效。这当然是处理这些无效区域的有效解决方案,但是它需要大量额外的计算资源。我们相信我们所提出的结构的简单性显示出重要的见解,并且它可以引导我们走向有趣的方向以克服当前的限制。

表2. Kitti 2012的定量评估。对于StereoNet,我们使用了一个下采样因子为8和3个改进层级的模型。我们报告误差大于2的像素百分比,以及非遮挡(Noc)和所有像素(all)中的整体EPE。

图6. Kitti 2012和Kitti 2015的定性结果。注意我们的方法与快速方法相比如何保留边缘和恢复细节。现有技术方法比我们的方法慢一个数量级。

同样,我们在Kitti 2015上评估了我们的算法,并在表3中报告结果,其中可以进行类似的考虑。在图6的顶部,我们展示了测试数据中的一些示例。

表3. Kitti 2015的定量评估。对于StereoNet,我们使用了下采样因子为8和3个改进层级的模型。我们在背景区域(bg),前景区域(fg)和所有区域中报告误差大于1的像素百分比。

4.4 运行时间分析

我们以算法运行时间的详解来结束本节。对实时应用程序感兴趣的读者会发现有助于了解瓶颈所在。目前的算法在NVidia Titan X以60fps运行,整个运行时间如图7中。注意特征提取,体形成和滤波占用整个计算的不到一半(41%),最耗时的步骤是改进阶段:在全分辨率下完成的最后一个改进使用38%的计算时间。

图7. StereoNet的运行时长分析。运行时间的具体条目。请注意大部分时间是在最后一级改进中花费的。

5 讨论

我们提出了StereoNet,这是第一个实时、高质量的被动立体匹配的端到端结构。我们开始洞察到,即低分辨率代价体包含大部分信息,以生成高精度视差图,并在给定足够训练数据的情况下恢复薄结构。我们证明了1/30像素的亚像素精度,超过了文献中公布的限制。 我们的改进方法使用颜色输入作为指导,分层地恢复高频细节,与数据驱动的联合双边上采样算子类似。我们的方法的主要限制是由于缺乏监督的训练数据:事实上我们表明,当有足够的例子可用时,我们的方法达到了最先进的结果。为了减轻这种影响,我们未来的工作涉及监督和半监督学习的组合,以增强训练集。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是一个例子,展示如何使用TAR:SQL Guided Pre-Training来训练数据: 1.准备数据 首先,需要准备一个包含自然语言问题和对应的SQL查询的数据集。例如,以下是一个简单的数据集: | Question | SQL Query | | -------- | --------- | | What is the name of the employee with ID 123? | SELECT name FROM employees WHERE id=123 | | How much did the company earn in 2020? | SELECT SUM(revenue) FROM sales WHERE year=2020 | | Show me the customers who have made at least 3 purchases. | SELECT customer_name FROM sales GROUP BY customer_name HAVING COUNT(*)>=3 | 2.预处理数据 接下来,需要使用TAR:SQL Guided Pre-Training的预处理工具对数据进行处理。以下是一个示例代码: ``` from transformers import AutoTokenizer from tar.preprocessing import SQLDatasetProcessor tokenizer = AutoTokenizer.from_pretrained('microsoft/TAR-1.0-SQL-GPT2') processor = SQLDatasetProcessor(tokenizer=tokenizer) train_data = processor.process(file_path='train_data.csv') dev_data = processor.process(file_path='dev_data.csv') ``` 其中,`train_data.csv`和`dev_data.csv`是包含问题和SQL查询的数据集文件。 3.训练模型 接下来,可以使用TAR:SQL Guided Pre-Training来训练模型。以下是一个示例代码: ``` from transformers import AutoModelForSeq2SeqLM, TrainingArguments, Trainer from tar.configs import SQLConfig from tar.tasks import SQLTask model = AutoModelForSeq2SeqLM.from_pretrained('microsoft/TAR-1.0-SQL-GPT2') config = SQLConfig.from_pretrained('microsoft/TAR-1.0-SQL-GPT2') task = SQLTask(model=model, config=config) training_args = TrainingArguments( output_dir='./results', evaluation_strategy='steps', eval_steps=100, save_total_limit=10, learning_rate=1e-4, per_device_train_batch_size=2, per_device_eval_batch_size=2, num_train_epochs=10, weight_decay=0.01, push_to_hub=False, ) trainer = Trainer( model=task, args=training_args, train_dataset=train_data, eval_dataset=dev_data, ) trainer.train() ``` 此代码将使用TAR:SQL Guided Pre-Training来训练模型,使用训练数据集`train_data`和开发数据集`dev_data`。其中,`TrainingArguments`是训练参数,可以根据需要进行修改。 4.使用模型 最后,可以使用训练好的模型来进行文本到SQL查询的转换。以下是一个示例代码: ``` from transformers import AutoTokenizer from tar.tasks import SQLTask tokenizer = AutoTokenizer.from_pretrained('microsoft/TAR-1.0-SQL-GPT2') model = SQLTask.from_pretrained('results/checkpoint-1000') text = 'What is the name of the employee with ID 123?' inputs = tokenizer(text, return_tensors='pt') outputs = model.generate(inputs['input_ids']) sql_query = tokenizer.decode(outputs[0], skip_special_tokens=True) print(sql_query) ``` 此代码将使用训练好的模型`model`,将自然语言问题`text`转换为对应的SQL查询。结果将打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

华科附小第一名

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

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

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

打赏作者

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

抵扣说明:

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

余额充值