OpticalFlowEstimationusingaSpatialPyramidNetwork——论文翻译

OpticalFlowEstimationusingaSpatialPyramidNetwork——论文翻译

论文地址:https://arxiv.org/abs/1611.0085

( 自己翻译的,有些小问题见谅,欢迎批评。)

利用空间金字塔网络的光流估计

0. 摘要

我们学习通过结合经典的空间金字塔公式和深度学习来计算光流。该方法通过在每个金字塔层次上通过当前流估计扭曲一对图像并计算流的更新,以由粗到细的方法估计大的运动。我们在每一层训练一个深度网络来计算流更新,而不是在每一层金字塔上的目标函数的标准最小化。与最近的FlowNet方法不同,该网络不需要处理大的运动;这些都由金字塔处理。这有几个好处。首先,在模型参数方面,我们的空间金字塔网络(SPyNet)要简单得多,并且比FlowNet小96%。这使得它更高效,更适合嵌入式应用程序。其次,由于每个金字塔层的流量较小(<1像素),因此对扭曲的图像应用卷积方法是合适的。第三,与FlowNet不同的是,学习过的卷积滤波器与经典的时空滤波器相似,这让我们了解了方法以及如何改进它。我们的结果在大多数标准基准上比FlowNet更准确,这意味着将经典流方法与深度学习相结合的新方向。

1. 介绍

近年来,在精确估计光流的问题上取得了重大进展,在越来越具有挑战性的基准测试中提高了性能就证明了这一点·。尽管如此,大多数流方法都是从一个“经典公式”派生出来的,它对图像做了各种各样的假设,从亮度恒定到空间平滑。这些假设只是对现实的粗略近似,可能会限制性能。该领域最近的历史主要集中在改进这些假设,或者使它们在违反时更加稳健。这导致了稳步但渐进的进展。

另一种方法完全放弃了经典的公式,重新使用最近的神经网络结构。这种方法采用一对(或序列)图像,并学习从它们直接计算流。理想情况下,这样的网络将学会解决对应问题(短期和长期),学会与问题相关的过滤器,学会序列中什么是不变的,学会流的空间结构以及它如何与图像结构相关联。第一次尝试是有希望的,但还不如经典方法精确。

目标:

我们认为,有一种替代的方法结合了这两种方法的优点。对流的数十年研究已经产生了很好的工程系统和有效的原则。但是在某些地方,这些方法的假设限制了它们的性能。因此,在这里,我们使用机器学习来解决弱点,同时保持工程架构,目的是1)提高现有神经网络和我们工作所基于的经典方法的性能;2)实现实时流估计,精度优于速度慢得多的经典方法;3)降低内存需求,使flow在嵌入式、机器人和移动应用中更加实用。

问题:

最近的流学习方法的关键问题是,它们通常采用两帧,将它们堆叠在一起,并应用卷积网络架构。当帧之间的运动大于一个(或几个)像素时,时空卷积滤波器将不会获得有意义的响应。换句话说,如果一幅图像中的卷积窗口在下一时刻没有与相关图像像素重叠,则无法学习有意义的时间滤波。

有两个问题需要解决。一种是求解长程关联,另一种是求解细节、亚像素、光流和精确运动边界。FlowNet试图同时了解这两种情况。相比之下,我们使用深度学习来解决后者,并依靠现有的方法来解决前者。

方法:

为了处理大的运动,我们采用了传统的使用空间金字塔的由粗到细的方法。在金字塔的顶层,人们希望帧之间的运动小于几个像素,因此,卷积过滤器可以学习有意义的时间结构。在金字塔的每一层,我们使用卷积网络求解流,并向上采样流到下一层金字塔。作为标准,与经典的公式,我们扭曲一个图像到另一个使用当前的流,并在每个金字塔层次重复这个过程。我们不是在每一层最小化一个经典的目标函数,而是学习一个卷积网络来预测该层的流量增量。我们从粗到细训练网络,学习每一层的流量校正,并将其添加到上述网络的流量输出中。其思想是,位移总是小于每个金字塔层的几个像素。

对于空间金字塔网络,我们称其为SPyNet,并使用与FlowNet相同的飞行椅数据对其进行训练。我们报告了类似的性能FlowNet在飞行椅子和Sintel,但明显比FlowNet在米德尔伯里和KITTI更精确。SPyNet的总容量比FlowNet小96%,这意味着它运行速度更快,占用的内存也更少。用神经网络的非迭代计算代替了传统方法昂贵的迭代传播。

我们并不声称可以用SPyNet解决全光流问题——我们与传统方法处理同样的问题,并继承了它们的一些局限性。例如,众所周知,小物体或薄物体的大运动很难用金字塔表示捕捉。我们把大运动问题看作是独立的,需要不同的解决方案。相反,我们所展示的是传统问题可以被重新表述,可以学习其中的一部分,并且在许多场景中可以提高性能。

此外,由于我们的方法连接了过去的方法和新的工具,它提供了如何前进的见解。特别地,我们发现SPyNet学习了类似于传统时空导数或Gabor滤波器的时空卷积滤波器。学习的过滤器类似于MT和V1中的运动处理过滤器的生物模型。这与FlowNet学习的高度随机的过滤器形成了对比。这表明,用新工具重新检查旧的时空过滤方法是及时的。

综上所述,我们的贡献是:1)将传统的由粗到细的金字塔方法与深度学习相结合用于光流估计;2)新的SPyNet模型,比FlowNet小96%,速度快;3) SPyNet在标准基准——Sintel、KITTI和Middlebury上实现了与FlowNet相当或更低的错误;4)学习的时空滤波器提供了关于流量估计需要什么滤波器的见解;5)经过训练的网络和相关代码公开供研究使用。

2. 相关工作

我们的公式有效地结合了“经典”光流的思想和最近的深度学习方法。我们的审查集中在与此最相关的工作上。

空间金字塔和光流。 光流问题的经典公式可追溯到Horn和Schunck,涉及到基于亮度稳定性的数据项和空间平滑项的优化。经典方法的缺陷在于对图像的亮度变化和流的空间结构做了非常近似的假设。许多方法侧重于通过改变假设来提高稳健性。全面审查将有效地涵盖实地的历史;关于这一点,我们请读者参阅。学习计算流的关键优势,就像我们在这里所做的,是我们不用手工修改这些假设。而是在学习网络中体现了图像亮度和空间平滑度的变化。

使用空间金字塔的想法有着类似的悠久历史,可以追溯到它第一次在经典的流程公式中出现。典型的高斯或拉普拉斯金字塔用于流量估计与主要动机处理大的运动。众所周知,当小物体快速移动时,这些方法存在问题。Brox等人在传统的光流目标函数中加入了远程匹配。该方法结合图像匹配捕捉大的运动,并对细微的运动进行变分或离散优化,可以产生准确的结果。

当然,空间金字塔在计算机视觉的其他领域也被广泛使用,最近还被用于深度神经网络学习生成图像模型。

时空过滤器。 Burt和Adelson提出了运动估计的时空模型理论,Heeger提供了一个计算实施例。虽然受到人类感知的启发,但这些方法在当时并没有很好地发挥作用。

各种方法表明时空过滤器是由学习产生的,例如使用独立成分分析、稀疏和多层模型。Memisevic和Hinton用受限的玻尔兹曼机学习简单的空间变换,找到各种过滤器。Taylor等人使用限制玻尔兹曼机使用合成数据来学习“流样”特征,但没有评估流的准确性。

Dosovitskiy 等人利用深度网络学习了用于流量估计的时空滤波器,但这些滤波器并不像受神经科学启发的经典滤波器。通过使用空间金字塔方法,这个过滤器在视觉上类似于传统的时空过滤器,但是因为它们是从数据中学习来的,所以可以产生良好的流估计。

学习建模和计算流程。 学习一种模型来估计光流的第一次尝试可能是Freeman等人使用MRF所做的工作。他们考虑了一个具有地面真相流的统一移动斑点的简单合成世界。训练数据不真实,他们没有将该方法应用于真实的图像序列。

Roth和Black学习了一个领域专家(FoE)模型来捕获光流的空间统计。FoE可以看作是一个(浅的)卷积神经网络。这个模型使用的流场来自真实场景的激光扫描和相机的自然运动。它们没有场景的图像(只有它们的流),因此该方法只学习空间组件。

Sun等人描述了第一个可以被视为(浅)卷积神经网络的完全学习的模型。他们用一个数据项和一个空间项表述了一个经典的流问题。空间项使用来自的FoE模型,而数据项用一组学习过的卷积图像过滤器代替传统的导数过滤器。由于有限的训练数据和一组小的过滤器,它并没有完全显示出学习流的全部潜力。

Wulff和Black通过将鲁棒主成分分析应用于由自然电影计算的真实(有噪)光流来学习光流的空间统计量。虽然这产生了一个全局流基础和过度平滑的流,但他们使用该模型来相对快速地计算合理的流。

深度学习。 上述学习方法都存在训练数据有限和模型浅的问题。相比之下,深度卷积神经网络已经成为解决识别和密集估计问题的一种强大的模型。

FlowNet代表了第一个端到端训练的用于流量估计的深度卷积架构。这个网络显示了很有希望的结果,尽管是在一个人造的椅子数据集上进行的训练,这些椅子在随机选择的图像上飞行。尽管结果很有希望,但该方法在准确度方面仍落后于目前的先进水平。深度匹配方法并不能完全解决这个问题,因为它们使用经典的方法来计算最终流场。哪些架构最适合这个问题,以及如何最好地培训它们,这仍然是一个悬而未决的问题。

Tran等人使用传统的流方法为3D卷积网络创建“半真”训练数据。它的性能低于艺术水平,而且这种方法没有在标准基准上进行测试。也有人尝试使用无监督学习来估计光流。然而,这些方法在标准基准测试中精度较低。

Fast flow。 最近的一些方法试图平衡速度和精度,目标是实时处理和合理(虽然不是最高)的精度。GPU-flow开始了这一趋势,但现在有几种方法优于它。PCA-Flow在CPU上运行,比帧速率慢,并且产生过于平滑的流场。EPPM在Sintel(测试)上实现了类似的中包性能,在GPU上实现了类似的速度。最近的DIS-Fast是一种GPU方法,它比以前的方法快得多,但是精度也低得多。

我们的方法也比之前最好的CNN流方法(FlowNet)快得多,后者报告的FlowNet运行时间为80ms/frame。我们的速度的关键是创建一个小的神经网络,完全适合GPU。另外,我们所有的金字塔操作都是在GPU上实现的。

规模是一个没有速度那么受关注的重要问题。对于光流存在于嵌入式处理器、飞行器、电话等,该算法需要较小的内存占用。我们的网络比FlowNetS小96%,模型参数只使用9.7MB,这使得它可以很容易地小到适合移动电话的GPU。

3. 网络空间金字塔

该方法采用由粗到细的空间金字塔结构,在每个金字塔层次上学习剩余流。这里我们描述了网络和训练程序。

3.1 空间抽样

设d(·)为向下采样函数,将一个m×n的图像I抽取到对应的大小为m/2×n/2的图像d(I)。设u(·)为图像向上采样的反向操作。这些算符还用于对光流场的水平和垂直分量V进行下采样和上采样。我们还定义了一个翘曲算子w(I, V),它根据流场V使用双线性插值对图像I进行翘曲。

3.2 推论

让{G0, …, GK}表示一组训练好的卷积神经网络(convnet)模型,每个模型都计算残余流Vk,

在这里插入图片描述


图1 3层金字塔网络的推理:网络G0使用低分辨率图像{I1 0, I2 0}计算金字塔最高层(最小图像)的残余流v0。在每一个金字塔层,网络Gk计算一个剩余流vk,这个剩余流vk依次传播到金字塔的每一个下一层,最终得到最高分辨率的流v2.

3.3 训练和网络结构

我们训练每个卷积神经网络{G0, …, GK},分别顺序计算输入的剩余流Vk。 计算目标剩余流动^Vk在不同k目标流Vk的金字塔和上采样流水平,u(Vk-1)从训练事先获得之前的水平为:在这里插入图片描述(3)

在这里插入图片描述
图2 训练网络Gk需要训练模型{G0…Gk−1}得到初始流量u(Vk-1).我们获得地面真理残余流动ˆVk减去下采样地面实况流和u(Vk-1)网络Gk使用EPE损失。

如图2所示,我们对每个网络Gk进行训练,使剩余流Vk上的平均端点误差(EPE)损失最小化。

金字塔中的每一层都有一个相对于全光流估计问题的简化任务;它只需要估计现有流场的小运动更新。因此,每个网络都可以很简单。在这里,每个Gk有5个卷积层,我们发现这是精确度、大小和速度的最佳组合。我们训练了五个神经网络 {G0, …, G4}。在飞行椅数据集的不同分辨率下。网络G0使用24x32的图像进行训练。我们在每一个较低的层次上都增加了一倍的分辨率,最后训练convnetG4,使其分辨率达到384x512。

金字塔的每一层都有一个相对于全光流估计问题的简化任务;它只需要估计现有流场的小运动更新。因此,每个网络都可以很简单。在这里,每个Gk有5个卷积层,我们发现这是精确度、大小和速度的最佳组合。我们训练了五个神经网络 {G0,…, G4}。在飞行椅数据集的不同分辨率下。网络G0使用24x32的图像进行训练。我们在每一个较低的层次上都增加了一倍的分辨率,最后训练convnet G4,使其分辨率达到384x512。

除了最后一层之外,每个卷积层后面都有一个整流线性单元(ReLU)。我们为每一层使用7x7卷积核,发现这些比更小的过滤器工作得更好。每个convnet中feature map的个数,Gk卷积核分别为{32, 64, 32, 16, 2}。图像i1k和扭曲图像w(i2k, u(Vk−1))各有3个通道(RGB)。上采样流u(Vk−1)为2通道(水平和垂直)。我们将图像帧与上采样流叠加,形成每个Gk的8通道输入。输出为对应x和y方向速度的2个通道流量。

我们训练了5个网络{G0, …, G4}使每个网络都使用之前的网络Gk−1初始化。通过使用Adam优化方法对网络进行训练,其中的方法分别是:分别使用β1= 0.9 和β2=
0.999。我们在所有网络上使用的批处理大小为32,每个epoch使用4000次迭代。我们在前60个epoch使用1e-4的学习速率,并将其降低到1e-5,直到网络收敛。我们使用torch7作为我们的深度学习框架。我们使用飞行椅数据集和MPI Sintel来训练我们的网络。我们所有的网络都是在一个Nvidia K80 GPU上训练的。

我们在培训期间包括了各种类型的数据增强。我们随机缩放图像的因子[1,2]和应用旋转在[−17◦,17◦]的随机。然后我们应用随机作物来匹配卷积网络的分辨率,Gk正在被训练。我们包括从在这里插入图片描述均匀采样的加性高斯白噪声。我们应用颜色抖动与添加的亮度、对比度和从高斯在这里插入图片描述饱和度采样。最后,我们使用从大量的ImageNet数据中计算出的平均值和标准差对图像进行归一化。

4. 实验

我们在标准光流基准上评估我们的性能,并与FlowNet和经典+NLP(一种传统的基于金字塔的方法)进行比较。我们使用表1中的平均端点错误来比较性能。我们评估了所有的标准基准,发现SPyNet是最准确的整体,有微调和没有微调(详情如下)。另外,SPyNet比其他所有方法都快。

注意,MPI-Sintel网站上报告的FlowNet结果是针对对convnet结果应用变分细化(“+v”)的版本。这里我们对变分分量不感兴趣,只比较convnet输出的结果。

飞行椅子。一旦在飞行椅上训练了convnets Gk,我们在相同的数据集上微调网络,但没有任何数据增加,学习率为1e-6。我们看到EPE在测试集上提高了0.14。我们的模型在Flying Chairs数据集上取得了比FlowNetS更好的性能,但是FlowNetC的性能比我们的好。我们在图3中显示了飞椅数据集的定性结果,并在表1中比较了性能。
在这里插入图片描述

表1 平均终点误差(EPE)。结果被分为(+ft)训练的方法和没有微调的方法。黑体字表示在convnet方法中最准确的结果。所有的运行时间都是在飞行座椅上测量的,不包括图像加载时间

MPI-Sintel。 Sintel图像分辨率为436x1024。为了使用SPyNet,我们将图像缩放到448x1024,并使用6个金字塔级别来计算光流。每个金字塔层使用的网络为{G0, G1, G2, G3, G4, G4}。在Sintel实验中,我们在金字塔的第六层重复G4网络。因为Sintel有非常大的运动,我们发现这比只用5个级别提供更好的性能。

我们用两种方法评估我们的模型的性能。首先,我们直接使用在飞行椅数据集上训练的模型,并评估我们在训练和测试集上的表现。其次,使用与Sintel训练集相同的分区。我们在Sintel Clean和Sintel Final拆分上独立地微调我们的模型,并评估EPE。经过微调的模型在表1中列为“+ft”。我们在图4中显示了MPI-Sintel的定性结果。
在这里插入图片描述

图4 在MPI Sintel数据集上使用我们的SPyNet模型和FlowNet的光流估计的可视化比较。前五行是来自Sintel最终集和后五行是来自Sintel干净集。SPyNet表现特别好,当运动相对较小。
在这里插入图片描述

表2。比较FlowNet和SpyNet在Sintel基准上的不同速度,s,距离,d,从运动边界。

表2比较了我们的微调模型与FlowNet对于不同速度和距离运动边界。我们观察到,除了最大位移(超过40像素/帧)之外,SPyNet在所有速度范围都比FlowNet更精确。SPyNet也比FlowNet更精确,接近移动边界,这对许多问题是重要的。

5. 分析

模型尺寸。 将空间金字塔与convnets相结合,大大降低了模型的复杂性。在每个金字塔层次上,一个名为Gk的网络有240,050个学习参数。整个网络学习的参数总数为1200,250个,有5个空间金字塔层次。相比之下,FlowNetS和FlowNetC分别有32,070,472和32,561,032个参数。SPyNet比FlowNet小96%(图5)。
在这里插入图片描述

图5 模型大小的方法多种多样。我们的模型比之前使用端到端深度学习训练的最先进的流方法小96%。

空间金字塔方法能够在不牺牲精度的情况下显著减少模型参数。原因有二:翘曲函数和剩余流的学习。通过直接使用翘曲函数,convnet无需学习翘曲函数。更重要的是,剩余学习限制了流场在输出空间的范围。每个网络只需要在空间金字塔的每一层模拟较小的速度范围。

SPyNet的内存占用也很小。存储所有模型参数所需的磁盘空间为9.7 MB,这可以简化在支持GPU的移动或嵌入式设备上的部署。

学习过滤器的可视化。 图6(a)显示了网络第一层G2学习的过滤器示例。在每一行中,前两列分别显示对两个输入图像的RGB通道操作的空间过滤器。第三列是两个空间过滤器之间的差异,因此代表了我们的模型学习的时间特征。我们观察到,图6(a)中的大部分时空滤波器对所有颜色通道都同样敏感,因此以灰度为主。请注意,实际的过滤器是7×7像素,并向上采样的可视化。

我们观察到,许多空间滤波器似乎类似于传统的高斯导数滤波器使用的经典方法。这些经典的过滤器是手工制作的,通常应用在水平和垂直方向。在这里,我们观察到不同尺度和方向的类导数滤波器的协方差。我们还观察到在空间上类似于二阶导数或Gabor滤波器的滤波器。时域滤波器在时间上表现出明显的类导数结构。请注意,这些滤波器非常不同于(Sup. Mat.)中报道的那些,它们具有高频结构,不像经典滤波器。
在这里插入图片描述

图6 (a)G2第一层的滤波权值可视化,显示其在RGB图像对上的时空特性
(b) 滤光片的金字塔级演化(从低分辨率(0)到高分辨率(4))

图6(b)说明了在金字塔的每一层网络学习到的过滤器是如何彼此不同的。回想一下,在训练过程中,每个网络都是用金字塔中的前一个网络初始化的。然而,在训练中,过滤器并不是完全一样的。我们网络中的大多数滤镜看起来像1和2,当我们朝着金字塔的分辨率水平前进时,这些滤镜会变得更清晰。然而,有一些过滤器类似于第3和第4行,在金字塔的更高分辨率级别上,这些过滤器变得更加明确。

速度。 光流估计传统上被看作是一个涉及某种形式的变分推理的优化问题。这种算法在计算上非常昂贵,通常每帧要花费几秒钟或几分钟。这限制了光流机器人、嵌入式系统和视频分析的应用。

使用GPU可以加速传统方法,但精度会降低。利用快速的GPU卷积和避免迭代优化。当然,对于嵌入式应用程序,网络大小是至关重要的(见图5)。图7显示了几种著名方法的速度-准确度比较。所有显示时间都是用已经加载在内存中的图像来测量的。误差以干净的和最终的MPI-Sintel序列的平均EPE计算。SPyNet在速度和准确度之间取得了很好的平衡;没有更快的方法是如此准确。
在这里插入图片描述

图7 MPI-Sintel上的平均EPE与运行时。放大版本在底部显示最快的方法。时间是我们衡量的。

6. 讨论及未来工作

传统的流量方法将亮度恒常性方程线性化,得到一个由空间和时间导数滤波器实现的光流量约束方程。有时方法采用更一般的滤波恒常性假设。我们的过滤器有些不同。通过SPyNet学习的滤波器用于前馈网络直接计算流量。

与其他最近的光流网络相比,SPyNet的规模较小。然而,对过滤器的检查表明,它可能会使它更小得多。许多滤波器在不同的尺度、方向、空间频率和空间位移上类似于高斯滤波器或Gabor滤波器的导数。鉴于此,通过降维或使用一组解析的时空特征来显著压缩滤波器组是可能的。有些过滤器也可以是可分离的。

早期的光流方法使用解析的时空特征,但在当时没有产生良好的结果,时空滤波的一般线衰减。与早期工作的不同之处在于,我们的方法表明需要一个由多种滤波器组成的大型滤波器组。还要注意的是,这些方法只考虑过滤器的第一卷积层,而不寻求“深入”的解决方案。这一切都表明,深层的分析过滤器网络可能表现良好。这将极大地减少网络的规模和需要学习的参数的数量。

请注意,众所周知,金字塔在处理大的运动时有局限性。特别是,快速移动的小或薄的物体有效地消失在粗糙的金字塔水平,使它不可能捕捉他们的运动。最近处理这种大型运动的方法使用稀疏匹配来增加标准金字塔。未来的工作应该探索为间谍网络增加远程配对。另外,Sevilla等人定义了在金字塔中保留精细结构的通道恒常性表示。这些通道有效地与可以学习的过滤器相对应。

空间金字塔可以被认为是一组线性过滤器的简单应用。这里我们取一个标准的空间金字塔,但是你可以学习金字塔本身的过滤器。SPyNet还使用了一个标准的翘曲函数来对齐图像,使用的流计算从以前的金字塔水平。这也是可以学习的。

SPyNet一个吸引人的特点是它足够小,可以安装在移动设备上。未来的工作将探索移动实现及其应用。此外,我们将探索扩展该方法以使用更多的帧(例如3或4)。多帧可以使网络更有效地推理遮挡。

最后,飞椅并不能代表自然场景的运动,包含了许多巨大的位移。我们正在探索新的训练数据集,以提高在运动不那么剧烈的公共序列上的性能。

7. 结论

综上所述,我们描述了一种新的光流算法,它将经典光流算法的特点与深度学习相结合。在某种意义上,这里有两个“深度”的概念。首先,我们使用“深”空间金字塔处理大的运动。其次,我们在空间金字塔的每一层使用深度神经网络,并训练它们估计每一层的流更新。这种方法意味着每个网络要做的工作比估计任意大运动的完全通用流方法要少。在每个金字塔层,我们假设运动是小的(像素量级)。这是由网络学习空间和时间滤波器的事实证明,类似经典的高斯和Gabors导数。因为每个子任务都非常简单,所以我们的网络需要的参数比以前的方法(如FlowNet)要少得多。这将产生比现有方法更快的内存占用小的方法。与此同时,SPyNet的精确度与FlowNet相当,在几个基准上超过了它。这就为光流的精确、实用和广泛应用开辟了前景。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值