当前位置: 代码迷 >> 综合 >> FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks——论文翻译
  详细解决方案

FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks——论文翻译

热度:40   发布时间:2024-02-10 17:23:53.0

FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks——论文翻译

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

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

摘要

FlowNet证明光流估计可以作为学习问题。然而,关于光流法的最好技术仍然由传统方法实现。特别是在小位移和实际数据方面,FlowNet无法与多种方法竞争。在本文中,我们提出了光流的端到端学习的概念,并使其工作得非常好。质量和速度的大幅提升是由三个主要因素造成的:首先,我们关注训练数据,并表明在训练期间提供数据计划非常重要。其次,我们开发了一种堆叠式结构,其中包括使用中间光流对第二幅图像进行warp操作。第三,我们通过引入专门针对小运动的子网络来详细关注小位移。 FlowNet 2.0速度仅略低于原始FlowNet,但估计误差减少了50%以上。它达到现有的最佳效果,同时以交互式帧速率运行。此外,我们提供更快的变体,允许光流计算高达140fps,精度与原始FlowNet相同。

1、介绍

Dosovitskiy等人提出的FlowNet 代表了光流估计上思维的转移。使用简单的卷积CNN架构直接从数据中学习光流的概念的想法与所有已建立的方法完全不相交。然而,新想法的首次实施通常很难与高精度的现有方法竞争,FlowNet也不例外。正是这种不断的学习解决了负面影响,并帮助我们认识到新思维方式的好处。

同时,它解决了估计光流场中小位移和噪声影响的问题。这使得动作识别和运动分割等实际应用程序的性能得到了显着提升,使FlowNet 2.0达到了最先进的水平。
在这里插入图片描述

通过几个发展的,但具有决定性的修改我们发现了FlowNet2.0方法。首先,我们评估数据集计划(即如何训练?)的影响。有趣的是,Mayer等人提供的更复杂的训练数据,如果单独使用会导致较差的结果。但是,由多个数据集组成的学习计划(训练的顺序)可显着改善结果。在此范围内,我们还发现具有关联层的FlowNet版本(FlowNetC)优于没有这类层的版本。这与Dosovitskiy等人论文的结果形成对比。FlowNet有结论说FlowNetC在更复杂的数据集上结果可能会好于FlowNetS。

作为第二个贡献,我们引入了一个warp操作,并展示了如何使用此操作堆叠多个网络可以显着改善结果。通过改变堆叠网络的深度和各个子网络的大小规模,我们获得了许多具有不同大小和运行时间的网络变体。这使我们能够控制准确度和计算资源之间的权衡。我们为8fps和140fps之间的范围提供了网络。

最后,我们专注于小的像素级运动和真实世界数据。为此,我们创建了一个特殊的训练数据集和一个专门的网络。我们展示了使用此数据集训练的网络在真实世界视频的典型的小动作位移上表现良好。为了在任意位移上达到最佳性能,我们添加了一个网络,该网络学会以最佳方式融合先前的堆叠网络和小位移网络。

最终的网络大大优于以前的FlowNet,并且与Sintel和KITTI基准测试中的最先进方法相当。它可以在提供交互式帧速率的同时,以非常高的细节水平估计小的和大的位移。

2、相关工作

Dosovitskiy等人提出了利用卷积网络的端到端光流估计,他们把这个网络称为FlowNet,将一对图像作为输入并输出光流场。在FlowNet之后,又有几篇论文研究了CNN的光流估计,这些方法都没有明显优于原始的FlowNet。

基于学习的光流估计的替代方法是使用CNN来匹配图像patches。Thewlis等将深度匹配[32]表示为卷积网络并对其进行端到端优化。 Gadot等人使用Siamese网络结构学习图像patch描述器。这些方法可以达到很好的准确性,但需要对patch进行详细的描述。因此,对于大多数实际应用来说,它们的限制性很慢。此外,基于patch的方法在使用整个图像的上下文可能性很低,因为它们在小图像块上操作。

针对像素预测任务而训练的卷积网络经常产生噪声或模糊结果。作为补救措施,可以使用一些优化作为后处理操作应用于网络预测,例如,可以使用变分方法来改进光流估计。最近,已经表明,通过将几个卷积网络堆叠在彼此之上可以获得类似的改进。这导致人类姿势估计和语义实例分割的结果得到改善。在本文中,我们将多个网络堆叠的思想应用于光流估计。

我们的网络结构包括warp,其补偿第二张图像中的一些已经估计的初步运动。图像warp的概念在变分光流方法中都很常见,并且可以追溯到Lucas&Kanade的工作。

3、数据集训练方案

高质量的训练数据对于监督学习的成功至关重要。我们根据所提供的训练数据研究光流估计质量的差异。有趣的是,事实证明,不仅数据类型很重要,而且训练期间的数据顺序也很重要。

最初的FlowNets在FlyingChairs数据集上进行了训练。这个相当简单的数据集包含大约22k个把椅子叠加在Flickr的随机背景图像上的图像对。将随机仿射变换应用于椅子和背景以获得第二张图像和真实的光流场。数据集仅包含平面运动。

Mayer等人提出的FlyingThings3D(Things3D)数据集可以看作是FlyingChairs的三维版本。该数据集由22k个随机场景渲染组成,每个图像是来自ShapeNet数据集的3D模型在静态3D背景前移动。与Chairs相比,图像显示真实的3D运动和灯光效果,并且存在更多种类。

我们测试了Dosovitskiy等人介绍的两种网络架构:FlowNetS,它是一种简单的编码器 - 解码器架构;以及FlowNetC,它包括特征映射的显式相关性(具体要见FlowNet论文)。我们使用图3中所示的不同学习率计划在Chairs 和 Things3D以及来自两个数据集的混合数据集上对FlowNetS和FlowNetC进行了训练。是FlowNet1.0训练的学习率变化,表示较长的时间训练的学习率,表示微调下的学习率。,在表1中给出了在不同计划下的在Chairs和Things3D上训练的网络的结果。在这里插入图片描述
在这里插入图片描述
结果导致以下观察:

  1. 具有不同属性的训练数据的顺序对训练结果很重要。尽管Things3D更加逼真,但仅仅对Things3D进行训练会导致比训练Chairs更糟糕的结果。在先训练Chairs,再对Things3D进行微调,才能一致地取得最佳效果。这个方法也优于Chairs和Things3D混合数据集的训练。我们推测,更简单的Chairs数据集有助于网络学习颜色匹配的一般概念,而不会过早地学习3D运动和真实光照带来的令人困惑的结果。结果表明,在使用深度网络学习时,训练方案对于避免网络学习过于复杂的概念产生了重要作用。
  2. FlowNetC优于FlowNetS。我们用FlowNetS和得到的结果对应于FlowNet1.0论文的结果。但是,我们在FlowNetC上获得了更好的结果。我们得出结论,FlowNet1.0没有在完全相同的条件下训练FlowNetS和FlowNetC。完成后,FlowNetC架构优于FlowNetS架构。
  3. 结果的改善。仅通过修改数据集和训练方案,我们就改进了FlowNet1.0的FlowNetS结果,提高了约为25%,FlowNetC结果提高了约为30%。

在本节中,我们没有针对特定场景使用专门的训练集。经过训练的网络应该是通用的,并且在各种场景中都能很好地工作。数据集计划中的另一个可选的是将通用网络微调到特定的场景,例如我们在第6节中展示的驾驶场景。

4、堆叠网络(Stacking Networks)

4.1、堆叠两个网络

所有最先进的光流方法都依赖于迭代方法。深度网络也可以从迭代增强中受益吗?为了解决这个问题,我们尝试堆叠多个FlowNetS和FlowNetC结构。

堆叠网络中的第一个网络始终将图像I1和I2作为输入。后续网络获得I1,I2和先前的光流估计wi,其中i表示堆叠网络中的子网络的索引。

为了评估先前的误差并容易为网络计算增量更新,我们还可选择通过光流wi和双线性插值将第二个图像I2warpdnimg.cn/20200812100540310.png )这样,堆叠网络中的下一个网络可以关注I1和在这里插入图片描述之间的剩余增量。当使用warp时,我们另外提供在这里插入图片描述和误差在这里插入图片描述作为下一个网络的输入,见下图。由于双线性插值,可以计算warp操作的导数。这使得能够端到端地训练堆叠网络。
在这里插入图片描述
表2显示了堆叠两个网络的效果,warp的影响以及端到端训练的效果。我们采用第3节中训练最好的FlowNetS并在顶部添加另一个FlowNetS。第二个网络随机初始化,然后整个网络在Chairs进行训练。我们尝试了两种方案:保持第一个网络的权重固定,或者将第一个网络与第二个网络的权重一起更新。在后一种情况下,为了给第二个网络提供良好初始化,第一网络的权重对于前400k次迭代是固定的。我们报告Sintel clean和Chairs测试集的误差。由于Chairs测试集与训练数据更相似,因此可能会发生过拟合。
在这里插入图片描述
我们做出以下观察:
(1)上表中的第一行和第二行结果表明,仅仅堆叠网络而不warp会改善在Chairs的结果,但会降低Sintel的性能,即堆叠网络过拟合。
(2)第一行和第五行结果表明,包含warp,堆叠网络结果很好。
(3)最后两行结果证明,在训练端到端堆叠网络时,在Net1后增加一个中间损失是有利的。
(4)第五行(Net1+W+Net2)表明,在保持第一网络固定并且仅在warp操作之后仅训练第二网络时能获得最佳结果。

显然,由于堆叠网络是单个网络的两倍,因此过拟合是一个问题。warp后flow refinement(FlowNet1中提及)的积极效果可以抵消这个问题,但是当堆叠网络一个接一个地训练时(即固定第一个网络,在训练第二个网络)能获得最佳效果,因为这避免了过拟合。

4.2 堆叠多个网络

与其堆叠相同的网络,不如堆叠不同类型的网络(FlowNetC和FlowNetS)。减少单个网络的大小是另一个有效的选择。我们现在研究不同的组合,并且还改变每个网络大小。

我们将第一个子网络称为bootstrap网络,因为它与第二个网络的输入不同。然而,第二网络可以以循环方式重复多次。我们进行了这项实验,发现多次应用具有相同权重的网络并对这个循环部分进行微调并不会改善结果(详见补充材料)。因此,我们将具有不同权重的网络添加到堆叠网络中。与相同权重相比,具有不同权重的堆叠网络增加了内存占用,但不会增加运行时间。在这种情况下,最上层网络不受限于其改进的输入,而是可以在不同阶段执行不同的任务,并且可以通过固定现有网络并逐个添加新网络来训练整个网络。我们对每个新网络通过使用第3节中的Chairs→Things3D计划以及第4.1节中的网络配置。此外,我们尝试不同的网络规模,或者使用FlowNetS或FlowNetC作为bootstrap网络。我们仅使用FlowNetC作为bootstrap网络,因为下一个网络的输入太多,不能被FlowNetC的Siamese结构正确地处理。通过在网络中的每个层获取部分通道来创建较小尺寸规模的网络版本。下图显示了单个FlowNetS的不同网络规模的网络的准确性和运行时间。当想要更快的网络时,在3/8处速度和准确度之间产生良好的折衷。
在这里插入图片描述
注释:我们表示由第3小节得到的Chairs→Things3D方案训练FlowNet2.0。堆叠中的网络将按照此计划逐个进行训练。对于堆叠网络的结构,我们附加大写或小写字母以指示原始FlowNet或具有3/8个通道的小规模版本。例如:FlowNet2-CSS代表由一个FlowNetC和两个FlowNetS组成的网络。 FlowNet2-css网络相同但通道较少。

表3显示了不同网络的性能。最值得注意的是,最终的FlowNet2-CSS结果比第3节中的单个网络FlowNet2-C提高了约30%,比原始FlowNetC提高了约50%。此外,两个小型网络总是优于一个大型网络,尽管速度更快且权重更少:FlowNet2-ss(11M权重)优于FlowNet2-S(38M权重),FlowNet2-cs(11M权重)优于FlowNet2-C (38M权重)。逐步训练较小的单个网络证明是有利的,并使我们能够训练非常深的光流网络。最后,FlowNet2-s提供与原始FlowNet几乎相同的精度,同时以每秒140帧的速度运行。

在这里插入图片描述

5、小位移

5.1、数据集

虽然最初的FlowNet在Sintel基准测试中表现良好,但实际应用中的限制已变得明显。特别是,网络无法可靠地估计小运动,这是违反常理的,因为小运动对于传统方法更容易,并且没有明显的理由说明网络在这种情况下为什么达不到相同的性能。因此,我们检查了训练数据,并将其与UCF101数据集进行了比较。虽然Chairs与Sintel相似,但UCF101根本不同:Sintel是一部动作片,因此包含许多传统方法难以实现的快速动作,而我们在UCF101中看到的位移数据集要小得多,大多小于1个像素。因此,我们在Chairs的视觉风格中创建了一个数据集,但是具有非常小的位移和位移直方图,更像是UCF101。我们还添加了背景是均匀的或只包含颜色渐变的情况。我们将此数据集称为ChairsSDHom,并在发布论文时将其发布。

5.2、小位移网络与融合

我们通过在Things3D和ChairsSDHom的混合数据集上进一步训练整个堆叠网络并对误差应用非线性(详情见论文附录)来减轻大位移,从而微调我们的FlowNet2-CSS网络以实现更小的位移。我们用FlowNet2-CSS-ft-sd表示这个网络。这增加了小位移的性能,我们发现这种特殊的混合不会牺牲大位移的性能。

然而,在像素级运动的情况下,噪声仍然是一个问题,并且我们猜测FlowNet结构可能不适合这种运动。因此,我们略微修改了原始的FlowNetS结构并删除了第一层中的步幅2。我们开始通过用多个3×3内核交换交换7×7和5×5内核,使网络更加深入。因为噪声往往是小位移的问题,我们在upconvolutions(反卷积)之间加入卷积以获得更平滑的估计。我们用FlowNet2-SD表示最终的架构,见图2。

最后,我们创建了一个融合FlowNet2-CSS-ft-sd(图2上 对于大位移的网络)和FlowNet2-SD(图2下 对于小位移的网络)的小型网络(融合两个网络)(参见图2)。融合网络将前两个网络得到的光流,光流大小和warp后的第二张图与第一张图的误差作为输入。它将分辨率缩小两倍,然后再次扩展。与最初的FlowNet架构相反,它扩展到全分辨率。我们发现这会产生清晰的运动边界,并且在小型和大型位移上表现良好。我们将最终网络表示为FlowNet2。

6.实验

我们将我们网络的最佳变体的方法在公共基准上进行比较。此外,我们还比较了运动分割和动作识别等应用任务。这允许在实际数据上对方法进行基准测试。

6.1在公共准基上的速度和性能

我们在2.40GHz Intel Xeon E5和Nvidia GTX 1080的系统上评估了所有方法。在适用的情况下,使用特定于数据集的参数,以获得最佳性能。表4给出了端点错误和运行时。
在这里插入图片描述

表4。公共基准的绩效比较。AEE:平均终点误差;Fl all:流量估计误差≥3个像素且≥5%的像素比率。每个类别的最佳数字以粗体突出显示。有关详细信息,请参见正文。?这些方法的列号使用较慢但更好的“改进”选项。?对于这些结果,我们报告了微调编号(FlowNetS ft和FlowNetC ft)。

Sintel: 在Sintel上,FlowNet2始终优于DeepFlow和EpicFlow,与flowfield相当。所有运行时可比较的方法的准确性都明显较低。我们在Sintel clean+final混合数据(FlowNet2-ft-Sintel)上对FlowNet2进行了微调。在基准测试中,如果是干净数据,结果会稍微降低,而在最终数据FlowNet2-ft-sintel与目前发布的最先进的方法DeepDiscreteFlow是相同的。

KITTI: 在KITTI上,flownet2css的结果与EpicFlow和FlowFields相当。对小位移数据进行微调会降低结果。这可能是由于KITTI通常包含非常大的位移。对KITTI2012和KITTI2015训练集的组合进行微调,可将误差大致减少3倍(FlowNet2 ft kitti)。在非常规方法中,我们在KITTI2012上获得最佳EPE,在KITTI2015基准测试中排名第一。这种方法很好地说明了前面的学习方法如何很好地结合在一起。

Middlebury: 在Middlebury训练集中,FlowNet2的表现与传统方法相当。Middlebury测试集的结果出人意料地糟糕得多。尽管如此,与FlowNetS相比还是有很大的改进。图4提供了Sintel的端点错误与运行时评估。我们可以观察到FlowNet2家族在很大程度上优于现有最好和最快的方法。根据应用程序的类型,可以使用每秒8到140帧的FlowNet2变体。
在这里插入图片描述

图5。运行时与端点错误与最快的现有方法(包含可用代码)的比较。FlowNet2系列的性能大大优于其他方法。KITTI数据集的行为是相同的;请参阅补充资料。

6.2定性结果

图6和图7显示了Sintel和实际数据的示例结果。尽管在性能上Sintel与FlowFields结果相似,但我们可以看到,在真实世界的数据中,FlowNet2.0在均匀区域(第2行和第5行)、图像和压缩伪影(第3和第4行)方面具有明显的优势,并且它可以生成具有尖锐运动边界的平滑流场。
在这里插入图片描述

图6。在Sintel上估计不同方法流场的例子。FlowNet2的性能与FlowFields相似,能够提取细节,而以相同速度运行的方法的性能要差得多(PCA-Flow和FlowNetS)。

在这里插入图片描述

图7。用实际数据估计不同方法得到的流场实例。上面两行来自Middlebury数据集,下面三行来自UCF101。注意FlowNet2如何很好地概括现实世界的数据,即,它产生平滑的流场,清晰的边界,并是健壮的运动模糊和压缩伪像。给定的时间方法不同,由于不同的图像分辨率。

6.3运动分割和动作识别性能研究

为了评估flownet2.0在实际应用中的性能,我们比较了动作识别和运动分割的性能。对于这两种应用,良好的光流是关键。因此,在这些任务上的良好表现也可以作为良好光流的指标。

对于运动分割,我们依靠Ochs等人的成熟方法来计算长期点轨迹。通过使用Keuper等人的最新方法,可以得到运动分割。结果如表5所示。Ochs等人的原始模型建立在大位移光流的基础上。我们也包括其他流行的光流方法在比较。旧的FlowNet对运动分割不太有用。相比之下,FlowNet2与其他最先进的方法一样可靠,但速度要快几个数量级。

光流也是动作识别的一个重要特征。为了评估性能,我们用不同的光流输入训练了Simonyan等人的双流方法的时间流。表5显示FlowNet没有提供有用的结果,而来自FlowNet 2.0的流产生的结果与最先进的方法相当。

在这里插入图片描述

表5所示。不同方法的运动分割和动作识别详情见正文。运动分割:我们报告了使用密度为4像素的FBMS-59训练集的结果。给出了不同密度和误差的测量方法。“提取对象”指F≥75%的对象。侧重于在29个序列中的28个序列上对其进行评估;在lion02序列上,即使在一周后优化也没有收敛。动作识别:我们在训练时间流后报告分类准确率。我们使用5个光流场的叠加作为输入。由于训练时间长,只能对选定的方法进行评估。?复制结果从,为行动识别我们使用OpenCV LDOF实现。请注意,FlowNetS和FlowNet2与传统方法的性能通常有很大差异。

7.结论

我们对FlowNet的思想提出了一些改进,这些改进使得精确度完全与最先进的方法不相上下,而flownet2.0的运行速度要快几个数量级。我们量化了每项贡献的影响,并表明所有贡献都发挥了重要作用。运动分割和动作识别实验表明,用flownet2.0对各种场景和应用都是可靠的。FlowNet 2.0系列提供了运行速度从8到140 fps的网络。这进一步扩展了可能的应用范围。虽然Middlebury上的结果表明亚像素运动的性能不理想,但flownet2.0的结果突出了非常清晰的运动边界、精细结构的检索以及对压缩伪影的鲁棒性。因此,我们期望它能成为所有需要精确和快速光流计算的应用的工作。

  相关解决方案