基于空间金字塔网络的光流估计

Optical Flow Estimation using a Spatial Pyramid Network

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

1. Introduction

近年来,在精确估计光流的问题上取得了显著进展,在日益具有挑战性的基准上提高了性能。尽管如此,大多数流方法都来自于一个“经典公式”,它对图像做了各种各样的假设,从亮度恒定到空间平滑。这些假设只是粗略地接近现实,这可能会限制性能。该领域最近的研究重点是改进这些假设,或使它们对违反[7]的情况更加可靠。

另一种方法完全放弃了经典的公式,重新开始使用最新的神经网络架构。这种方法需要一对(或序列)图像并学习直接从它们计算流。理想情况下,这样的网络将学会解决对应问题(短范围和长范围),学习与问题相关的滤波器,了解序列中什么是恒定的,了解流的空间结构以及它如何与图像结构相关。最初的尝试是有希望的,但还没有传统方法那么精确。

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

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

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

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

我们将该方法称为SPyNet,即空间金字塔网络,并使用与FlowNet[16]相同的飞椅数据来训练它。我们报告了与FlowNet在Flying Chairs和Sintel[11]上相似的性能,但经过微调后,明显比FlowNet在Middlebury[4]和KITTI[18]上更准确。SPyNet的总尺寸比FlowNet小96%,这意味着它运行得更快,使用的内存也少得多。用神经网络的非迭代计算代替了经典方法昂贵的迭代传播

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

此外,因为我们的方法将过去的方法与新的工具联系起来,它提供了如何前进的见解。特别是,我们发现SPyNet可以学习类似于传统时空导数或Gabor滤波器的时空卷积滤波器[2,23]。学习到的过滤器类似于MT和V1[35]中运动处理过滤器的生物模型。这与FlowNet学习到的高度随机的过滤器形成了对比。这表明,现在是时候用新工具重新检查旧的时空过滤方法了

综上所述,我们的贡献是:1)将传统的由粗到细的金字塔方法与深度学习相结合,用于光流估计;2)新的SPyNet模型比FlowNet小96%,速度快96%;3) SPyNet在标准基准(Sintel, KITTI和Middlebury)上的误差与FlowNet相当或更低;4)学习到的时空滤波器为流量估计需要什么滤波器提供了洞见;5)训练过的网络和相关代码可公开用于研究:GitHub - anuragranj/spynet: Spatial Pyramid Network for Optical Flow

2. Related Work

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

空间金字塔和光流:光流问题的经典公式可以追溯到Horn和Schunck[24],涉及到基于亮度恒定的数据项和空间平滑项的优化和。经典方法的缺点是它们对图像亮度变化和流的空间结构做了非常近似的假设。许多方法都侧重于通过改变假设来提高鲁棒性。全面审查将有效地涵盖该领域的历史;对此,我们建议读者参阅[36]。学习计算流的关键优势,正如我们在这里所做的,是我们不手工修改这些假设。相反,图像亮度和空间平滑度的变化体现在学习网络中。使用空间金字塔的想法有着同样悠久的历史,可以追溯到[10],它第一次用于经典的流公式中出现在[19]。典型的高斯或拉普拉斯金字塔用于流量估计,主要动机是处理大的运动。众所周知,当小物体快速移动时,这些方法会出现问题。Brox等[8]将远程匹配纳入传统光流目标函数。这种结合图像匹配捕捉大运动的方法,用变分[31]或离散优化[20]捕捉细微运动,可以产生精确的结果。当然,空间金字塔广泛应用于计算机视觉的其他领域,最近被用于深度神经网络[15]学习生成图像模型

Spatio-temporal filters

Burt和Adelson[2]提出了运动估计的时空模型理论,Heeger[23]提供了计算实施例。虽然受到人类感知的启发,但这些方法在当时的[6]表现不佳。各种方法表明,时空过滤器产生于学习,例如使用独立成分分析[41],稀疏[30]和多层模型[12]。Memisevic和Hinton学习了用受限玻尔兹曼机[28]进行简单的空间变换,找到了各种各样的滤波器。Taylor等人[39]使用受限玻尔兹曼机使用合成数据学习“类流”特征,但不评估流的准确性。

Dosovitskiy等人[16]学习使用深度网络进行流量估计的时空过滤器,但这些过滤器与神经科学启发的经典过滤器不同。通过使用金字塔方法,我们在这里学习了视觉上类似于经典时空过滤器的过滤器,但因为它们是从数据中学习的,所以产生了良好的流量估计。

Learning to model and compute flow

可能第一次尝试学习一个模型来估计光流是工作Freeman等[17]使用MRF。他们考虑一个简单的合成世界的一致移动的斑点与地面真值流。训练数据不真实,他们没有将该方法应用到真实的图像序列。Roth和Black[32]学习了一个专家场(FoE)模型来捕获光流的空间统计。FoE可以被看作是一个(浅的)卷积神经网络。该模型使用激光扫描真实场景和自然相机运动产生的流场进行训练。它们没有场景的图像(只有它们的流),因此该方法只学习空间成分。

.......

深度学习:上述学习方法训练数据有限,使用的模型较浅。相比之下,深度卷积神经网络已经成为解决识别[22,38]和密集估计[13,27]问题的一类强大模型

FlowNet[16]代表了首个端到端进行流量估计训练的深度卷积体系结构。尽管该网络是在随机选择的图像上飞行的椅子的人工数据集上训练的,但它显示出了有希望的结果。尽管结果很有希望,但该方法在准确性方面落后于目前的技术水平。深度匹配方法[20,31,42]并不能完全解决问题,因为它们诉诸于经典方法来计算最终流场。哪些体系结构最适合这个问题,以及如何最好地训练这些体系结构,这仍然是一个开放的问题。

......

Fast flow:

最近的一些方法试图平衡速度和准确性,以实时处理和合理的(虽然不是最高的)准确性为目标。GPU-flow[43]开始了这一趋势,但现在有一些方法优于它。PCA-Flow[44]运行在CPU上,比帧速率慢,产生过于平滑的流场。EPPM[5]更小,在intel(测试)上有类似的中等水平的性能,在GPU上有类似的速度。最近的DIS-Fast[26]是一种GPU方法,它明显比以前的方法快,但也明显不准确。

我们的方法也明显比以前最好的CNN流方法(FlowNet)快,后者报告FlowNetS的运行时为每帧80ms。提高速度的关键是创建一个完全适合GPU的小型神经网络。此外,我们所有的金字塔操作都是在GPU上实现的。规模是一个重要的问题,但没有速度那么受关注。为了让光流在嵌入式处理器、飞行器、手机等上存在,该算法需要较小的内存占用。我们的网络比FlowNetS小96%,只使用9.7MB,,使其易于小到适合移动手机GPU。

3. Spatial Pyramid Network

我们的方法使用[15]从粗到细的空间金字塔结构来学习每个金字塔层次上的残余流量。这里我们描述了网络和训练过程.

3.1. Spatial Sampling

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

3.2. Inference

3.3. Training and Network Architecture

猜你喜欢

转载自blog.csdn.net/mytzs123/article/details/126902198