FlowNet:使用卷积网络学习光流
文章目录
摘要
卷积神经网络 (CNN) 最近在各种计算机视觉任务中非常成功,尤其是在与识别相关的任务中。 光流估计并不是 CNN 成功的任务之一。 在本文中,我们构建了能够解决光流估计问题作为监督学习任务的 CNN。 我们提出并比较了两种架构:一种是通用架构,另一种是包含一个层,该层将不同图像位置的特征向量相关联。 由于现有的地面实况数据集不足以训练 CNN,我们生成了一个大型合成Flying Chairs数据集。 我们表明,在这种不切实际的数据上训练的网络仍然可以很好地泛化到现有数据集,例如 Sintel 和 KITTI,在 5 到 10 fps 的帧速率下实现具有竞争力的准确性。
图 1. 我们展示了学习估计光流的神经网络,并进行端到端的训练。 信息首先在网络的收缩部分进行空间压缩,然后在扩展部分进行细化。
1. 介绍
卷积神经网络已成为计算机视觉许多领域的首选方法。 它们通常应用于分类 [25, 24],但最近提出的架构也允许逐像素预测,如语义分割 [28] 或单个图像的深度估计 [10]。 在本文中,我们建议端到端地训练 CNN,以学习从一对图像中预测光流场。
虽然光流估计需要精确的逐像素定位,但它也需要找到两个输入图像之间的对应关系。 这不仅涉及学习图像特征表示,还涉及学习在两幅图像的不同位置进行匹配。 在这方面,光流估计与之前的 CNN 应用有着根本的不同。
由于不清楚这个任务是否可以用标准的 CNN 架构来解决,我们另外开发了一个带有相关层的架构,显式提供匹配功能。 这种架构是端到端的训练。 这个想法是利用卷积网络在多个尺度和抽象层次上学习强特征的能力,并帮助它根据这些特征找到实际的对应关系。 相关层顶部的层学习如何从这些匹配中预测流量。 令人惊讶的是,以这种方式帮助网络并不是必需的,甚至原始网络也可以学会以具有竞争力的准确性来预测光流。
训练网络来预测通用光流需要足够大的训练集。 尽管数据增强确实有帮助,但现有的光流数据集仍然太小,无法与最先进的技术水平训练网络。 众所周知,获得逼真视频材料的光流ground truth极其困难 [7]。 考虑到现实需要大的数据量,我们生成了一个合成的飞椅数据集,该数据集由来自 Flickr 的随机背景图像组成,我们在这些图像上叠加了来自 [1] 的椅子的分段图像。 这些数据与现实世界几乎没有共同之处,但我们可以生成任意数量的具有自定义属性的样本。 即使没有微调,仅在这些数据上训练的 CNN 也能很好地泛化到现实数据集。
利用 CNN 的高效 GPU 实现,我们的方法比大多数竞争对手都要快。 我们的网络在 Sintel 数据集的全分辨率下以每秒高达 10 个图像对的速度预测光流,实现了实时方法中最先进的准确性。
2. 相关工作
光流
自 Horn 和 Schunck [19] 的工作以来,变分方法一直主导着光流估计。 已经引入了许多改进 [29, 5, 34]。 最近的重点是大位移,组合匹配已被整合到变分方法中 [6, 35]。 [35] 称为 DeepMatching 和 DeepFlow 的工作与我们的工作有关,因为使用稀疏卷积和最大池化将特征信息从细到粗聚合。 但是,它不执行任何学习并且所有参数都是手动设置的。 [30] 的后续工作称为 EpicFlow,更加强调稀疏匹配的质量,因为来自 [35] 的匹配仅在尊重图像边界的情况下内插到密集流场。 我们只使用变分方法对卷积网络预测的流场进行可选的细化,不需要任何手工制作的**聚合、匹配和插值( aggregation, matching and interpolation)**方法。
几位作者之前已经将机器学习技术应用于光流。 孙等人。 [32] 研究光流的统计数据并使用高斯尺度混合学习正则化器; 罗森鲍姆等人。 [31] 用高斯混合模型模拟光流的局部统计。 布莱克等人。 [4] 计算流场训练集的主成分。 为了预测光流,他们然后估计这些“基流”的线性组合的系数。 其他方法在不同的惯性估计中训练分类器进行选择 [21] 或获得遮挡概率 [27]。
已经有使用神经网络模型对视频帧之间的视差或运动进行无监督学习的工作。 这些方法通常使用乘法交互来模拟一对图像之间的关系。 然后可以从潜在变量中推断出差异和光流。 泰勒等人。 [33] 使用因子门受限玻尔兹曼机(factored gated restricted Boltzmann machines)来处理任务。 Konda 和 Memisevic [23] 使用称为“同步自动编码器”(synchrony autoencoder)的特殊自动编码器。 虽然这些方法在受控设置中运行良好,并且可以在视频中学习对活动识别有用的特征,但它们与现实视频中的经典方法相比没有竞争力。
卷积网络。
Krizhevsky 等人最近表明,使用反向传播 [25] 训练的卷积神经网络在大规模图像分类上表现良好。 [24]。 这开启了将 CNN 应用于各种计算机视觉任务的大量工作。
虽然还没有关于使用 CNN 估计光流的工作,但已经有关于与神经网络匹配的研究。 菲舍尔等人。 [12] 从以监督或无监督方式训练的 CNN 中提取特征表示,并根据欧几里德距离匹配这些特征。 Zbontar 和 LeCun [36] 使用 Siamese 架构训练 CNN 来预测图像块的相似性。 这些方法与我们的方法的一个巨大差异是它们基于补丁并将空间聚合留给后处理,而本文中的网络直接预测完整的流场。
CNN 的最新应用包括语义分割 [11、15、17、28]、深度预测 [10]、关键点预测 [17] 和边缘检测 [13]。 这些任务类似于光流估计,因为它们涉及每像素预测。 由于我们的架构很大程度上受到这些每像素预测任务的最新进展的启发,我们简要回顾了不同的方法。
最简单的解决方案是以“滑动窗口”方式应用传统 CNN,从而为每个输入图像块计算单个预测(例如类别标签)[8, 11]。 这在许多情况下效果很好,但有缺点:高计算成本(即使优化实现涉及重用中间特征图)和每个补丁的性质,不允许考虑全局输出属性,例如锐边。 另一种简单的方法 [17] 是将所有特征图上采样到所需的全分辨率并将它们堆叠在一起,从而产生一个连接的每像素特征向量,可用于预测感兴趣的值。
艾根等人。 [10] 通过训练一个额外的网络来细化粗略的深度图,该网络将粗略预测和输入图像作为输入。 龙等人。 [28] 和 Dosovitskiy 等人。 [9] 使用“上卷积”层迭代细化粗略特征图。 我们的方法整合了两部作品的想法。 与 Long 等人不同,我们不仅对粗略预测进行了“上卷积”,而且对整个粗略特征图进行了“上卷积”,从而允许将更多高级信息转移到精细预测中。 与 Dosovitskiy 等人不同,我们将“上卷积”结果与网络“收缩”部分的特征连接起来。
3. 网络架构
众所周知,卷积神经网络在给定足够的标记数据的情况下非常擅长学习输入-输出关系。 因此,我们采用端到端的学习方法来预测光流:给定由图像对和地面实况流组成的数据集,我们训练网络直接从图像预测 x-y 流场。 为此目的,什么是好的架构?
CNN 中的池化对于使网络训练在计算上可行是必要的,更根本的是,允许在输入图像的大面积区域上聚合信息。 但是池化会导致分辨率降低,因此为了提供密集的每像素预测,我们需要改进粗略的池化表示。 为此,我们的网络包含一个扩展部分,可智能地将流程细化为高分辨率。 由收缩和扩展部分组成的网络使用反向传播作为一个整体进行训练。 我们使用的架构如图 2 和图 3 所示。我们现在更详细地描述网络的两个部分。
图 2. 两个网络架构:FlowNetSimple(顶部)和 FlowNetCorr(底部)。 绿色漏斗是图 3 所示扩展细化部分的占位符。网络包括细化部分,是端到端训练的。
图 3. 将粗略特征映射细化为高分辨率预测。
收缩部分。
一个简单的选择是将两个输入图像堆叠在一起并通过一个相当通用的网络馈送它们,允许网络自行决定如何处理图像对以提取运动信息。 这在图 2(顶部)中进行了说明。 我们称这种仅由卷积层组成的架构为“FlowNetSimple”。
另一种方法是为两个图像创建两个单独但相同的处理流,并在稍后阶段将它们组合起来,如图 2(底部)所示。 使用这种架构,网络被限制为首先分别产生两个图像的有意义的表示,然后在更高的层次上组合它们。 这大致类似于标准匹配方法,即首先从两个图像的块中提取特征,然后比较这些特征向量。 然而,给定两个图像的特征表示,网络将如何找到对应关系?
为了在这个匹配过程中帮助网络,我们引入了一个“相关层”(correlation layer),它在两个特征图之间执行乘法补丁比较( multiplicative patch comparisons)。 图 2(底部)显示了包含该层的网络架构“FlowNetCorr”的图示。 给定两个多通道特征图 f1,f2 :R2 → Rc,w、h 和 c 是它们的宽度、高度和通道数,我们的相关层让网络将来自 f1 的每个补丁(patch)与来自 f2 的每个补丁(patch)进行比较。
现在我们只考虑两个patch的单一比较。 然后将第一张map中以 x1 为中心和第二张map中以 x2 为中心的两个补丁的“相关性”定义为
对于大小为 K 的正方形补丁K:= 2k + 1。注意方程。 1 与神经网络中的一个卷积步骤相同,但它不是使用过滤器对数据进行卷积,而是将数据与其他数据进行卷积。 因此,它没有可训练的权重。
计算 c(x1, x2) 涉及 c · K2 乘法。 比较所有的补丁组合涉及 w2·h2 的计算量,产生一个很大的结果并且使得向前和向后传递的效率变得难以处理。 因此,出于计算原因,我们限制了比较的最大位移,并在两个特征图中引入了跨步。
给定最大位移 d,对于每个位置 x1,我们通过限制 x2 的范围,仅在大小为 D:= 2d + 1 的邻域内计算相关性 c(x1, x2)。 我们使用步长 s1 和 s2 来全局量化 x1 并在以 x1 为中心的邻域内量化 x2。
理论上,相关层产生的结果是四维的:对于两个二维位置的每个组合,我们获得一个相关值,即分别包含裁剪补丁值的两个向量的标量积。 在实践中,我们组织通道中的相对位移。 这意味着我们获得了大小为 (w × h × D2) 的输出。 对于反向传递,我们相应地实现了关于每个底部 blob 的导数。
扩展部分。
扩展部分的主要成分是“上卷积”层,包括反池化(扩展特征图,而不是池化)和卷积。 以前已经使用过这样的层 [38, 37, 16, 28, 9]。 为了进行细化,我们将“上卷积”应用于特征图,并将其与来自网络“收缩”部分的相应特征图和上采样的粗流预测(如果可用)连接起来。 通过这种方式,我们保留了从较粗的特征映射传递的高级信息和在较低层特征映射中提供的精细局部信息。 每一步都将分辨率提高两次。 我们重复此操作 4 次,从而得到分辨率仍比输入小 4 倍的预测流。 整体架构如图 3 所示。我们发现,与将计算成本较低的双线性上采样到全图像分辨率相比,对该分辨率的进一步改进并没有显着改善结果。
变分细化。
在另一种方案中,在最后一个阶段,我们使用 [6] 中没有匹配项的变分方法而不是双线性上采样:我们从 4 倍下采样分辨率开始,然后使用具有 20 次迭代的粗到细方案来使流场转化到全分辨率。 最后,我们以完整图像分辨率再运行 5 次迭代。 我们另外使用 [26] 中的方法计算图像边界,并遵守检测的边界通过将平滑系数替换为 其中 b(x, y) 表示在相应的尺度和像素之间重新采样的薄边界强度。这种上采样方法比简单的双线性上采样在计算上更昂贵,但增加了变分方法的好处以获得平滑和亚像素精确的流场。在下面,我们定义带有“+v”后缀的是变分细化获得的结果。变分细化的一个例子可以在图 4 中看到。
图 4. 变分细化的效果。 在小运动(第一行)的情况下,预测的流量会发生巨大变化。 对于较大的运动(第二行),较大的误差不会被纠正,但流场会变得平滑,从而导致 EPE 较低。
4. 训练数据
与传统方法不同,神经网络需要具有ground truth 的数据,不仅用于优化几个参数,而且还需要学习从头开始执行任务。 一般来说,获得这样的基本事实是很困难的,因为真实世界场景的真实像素对应不容易确定。 表 1 中给出了可用数据集的概述。
表 1. 现有数据集和提议的飞椅数据集的大小。
4.1。 现有数据集
Middlebury 数据集 [2] 仅包含 8 个用于训练的图像对,使用四种不同的技术生成地面实况流。 位移非常小,通常低于 10 像素。
KITTI 数据集 [14] 更大(194 个训练图像对)并包含大位移,但仅包含非常特殊的运动类型。 通过使用相机和 3D 激光扫描仪同时记录场景,从真实世界场景中获得地面实况。 这假设场景是刚性的并且运动源于移动的观察服务器。 此外,无法捕捉到远处物体(如天空)的运动,导致光流地面实况稀疏。
MPI Sintel [7] 数据集从渲染的人工场景中获取地面实况,特别关注逼真的图像属性。 提供了两个版本:Final 版本包含运动模糊和大气效果,例如雾,而 Clean 版本不包含这些效果。 Sintel 是可用的最大数据集(每个版本 1,041 个训练图像对),并为小位移和大位移量级提供密集的地面实况。
4.2. 飞椅
Sintel 数据集仍然太小,无法训练大型 CNN。 为了提供足够的训练数据,我们创建了一个简单的合成数据集,我们将其命名为 Flying Chairs,通过对从 Flickr 收集的图像和一组公开可用的 3D 椅子模型 [1] 的渲染应用仿射变换。 我们从 Flickr 中检索了 964 张分辨率为 1, 024 × 768 的图像,来自类别“城市”(321)、“风景”(129)和“山”(514)。 我们将图像切成 4 个象限,并使用生成的 512 × 384 图像裁剪作为背景。 我们将 [1] 中的多把椅子的图像作为前景对象添加到背景中。 我们从原始数据集中删除了非常相似的椅子,从而得到 809 种椅子类型和每把椅子 62 种视图。 示例如图 5 所示。
图 5. 飞椅。 生成的图像对和彩色编码流场(前三列)、增强图像对和相应的彩色编码流场(最后三列)。
为了生成运动,我们随机采样背景和椅子的 2D 仿射变换参数。 椅子的变换是相对于背景变换的,可以解释为相机和物体都在移动。 使用变换参数,我们生成第二张图像、真实光流和遮挡区域。
每个图像对的所有参数(椅子的数量、类型、大小和初始位置;变换参数)都是随机采样的。 我们调整这些参数的随机分布,使得产生的位移直方图类似于来自 Sintel 的直方图(详细信息可以在补充材料中找到)。 使用此过程,我们生成了一个包含 22,872 个图像对和流场的数据集(我们多次重复使用每个背景图像)。 请注意,此大小是任意选择的,原则上可以更大。
4.3. 数据增强
一种广泛使用的提高神经网络泛化的策略是数据增强 [24, 10]。 尽管 Flying Chairs 数据集相当大,但我们发现使用增强对于避免过度拟合至关重要。 我们在网络训练期间在线执行增强。 我们使用的增强包括几何变换:平移、旋转和缩放,以及加性高斯噪声和亮度、对比度、伽马和颜色的变化。 为了合理快速,所有这些操作都在 GPU 上处理。 图 5 给出了一些增强的例子。
因为我们不仅要增加图像的种类,还要增加流场的种类,我们对一对图像应用相同的强几何变换,但另外一个在两幅图像之间执行更小的相对变换。
具体来说,我们从 x 和 y 图像宽度的范围 [-20%, 20%] 中采样平移; 从 [-17°, 17°] 旋转; 从 [0.9, 2.0] 缩放。 高斯噪声具有从 [0, 0.04] 的sigma均匀采样 ; 对比度在 [- 0.8, 0.4] 内采样; 从 [0.5, 2] 到每个图像的 RGB 通道的乘法颜色变化; 来自 [0.7, 1.5] 的伽马值和使用 sigma 为 0.2 的 Gaussian 的附加亮度变化。
5. 实验
我们报告了我们的网络在 Sintel、KITTI 和 Middlebury 数据集以及我们的合成飞椅数据集上的结果。 我们还尝试在 Sintel 数据上对网络进行微调,并对预测的流场进行变分细化。 此外,与其他方法相比,我们报告了我们网络的运行时间。
5.1. 网络和训练细节
我们训练的网络的确切架构如图 2 所示。总的来说,我们尽量保持不同网络的架构一致:它们有 9 个卷积层,其中六个 步幅为 2(注:缩小特征图的时候步幅为2)(最简单的池化形式)和每层之后的 ReLU 非线性。 我们没有任何完全连接的层,这允许网络将任意大小的图像作为输入。 卷积过滤器的大小朝着更深的网络层减小:第一层为 7 × 7,接下来的两层为 5 × 5,从第四层开始为 3 × 3。 特征图的数量在更深的层增加,每层后大约加倍,步幅为 2。对于 FlowNetC 中的相关层,我们选择参数 k = 0, d = 20, s1 = 1, s2 = 2。作为训练损失我们使用端点误差(EPE),它是光流估计的标准误差度量。 它是预测的流向量和地面实况之间的欧几里得距离,在所有像素上取平均值。
为了训练 CNN,我们使用了 caffe [20] 框架的修改版本。 我们选择 Adam [22] 作为优化方法,因为对于我们的任务,它显示出比具有动量的标准随机梯度下降更快的收敛。 我们按照 [22] 中的建议修复 Adam 的参数:β1 = 0.9 和 β2 = 0.999。 由于从某种意义上说,每个像素都是一个训练样本,因此我们使用了 8 个图像对的小批量。 我们从学习率 λ = 1e- 4 开始,然后在前 300k 次之后每 100k 次迭代将其除以 2。 使用 FlowNetCorr,我们观察到 λ = 1e- 4 时梯度爆炸。为了解决这个问题,我们从非常低的学习率 λ = 1e- 6 开始训练,在 10k 次迭代后慢慢增加它以达到 λ = 1e- 4,然后按照 描述计划进行。
为了在训练和微调期间监控过拟合,我们将 Flying Chairs 数据集分为 22、232 个训练和 640 个测试样本,并将 Sintel 训练集分为 908 个训练和 133 个验证对。
我们发现在测试期间放大输入图像可能会提高性能。 尽管最佳规模取决于特定的数据集,但我们为所有任务的每个网络固定了大小。 对于 FlowNetS,我们不升级,对于 FlowNetC,我们选择了 1.25 的放大系数。
微调
使用的数据集在它们包含的对象类型和运动方面有很大不同。 一个标准的解决方案是在目标数据集上微调网络。 KITTI 数据集很小,只有稀疏流地面实况。 因此,我们选择在 Sintel 训练集上进行微调。 我们将来自 Sintel 的 Clean 和 Final 版本的图像一起使用,并使用低学习率 λ = 1e-6 进行数千次迭代进行微调。 为了获得最佳性能,在使用验证集定义最佳迭代次数后,我们然后针对相同的迭代次数对整个训练集进行微调。 在表格中,我们用“+ft”后缀表示微调网络。
5.2. 结果
表 2 显示了我们网络的端点误差 (EPE) 和几种在公共数据集(Sintel、KITTI、Middlebury)以及我们的 Flying Chairs 数据集上表现良好的方法。 此外,我们在 Sintel 上展示了不同方法的运行时。
表 2. 我们网络的平均端点错误(以像素为单位)与不同数据集上的几种表现良好的方法相比。 括号中的数字是网络在他们训练的数据上的结果,因此不能直接与其他结果进行比较。
仅在非现实飞行椅上训练的网络在真实光流数据集上表现非常好,例如击败了著名的 LDOF [6] 方法。 在 Sintel 上进行微调后,我们的网络可以在 Sintel Final 和 KITTI 上超越竞争实时方法 EPPM [3],同时速度提高一倍。
Sintel
从表 2 可以看出 FlowNetC 在 Sintel Clean 上优于 FlowNetS,而在 Sintel Final 上情况发生了变化。 在这个困难的数据集上,FlowNetS+ft+v 甚至可以与 DeepFlow 相提并论。 由于平均终点误差通常有利于过度平滑的解决方案,因此看到我们方法的定性结果很有趣。 图 6 显示了与地面实况和 EpicFlow 相比,由两个 FlowNet 预测的原始光流示例(未进行微调)。 该图显示了网络产生的视觉上的吸引人的结果,但在端点误差方面仍很糟。 仔细观察就会发现,造成这种情况的一个原因可能是网络的嘈杂非平滑输出,尤其是在大的平滑背景区域中。 我们可以通过变分细化来部分补偿这一点。
图 6. Sintel 数据集上的光流预测示例。 在从左到右的每一行中:重叠图像对、地面实况流和 3 个预测:EpicFlow、FlowNetS 和 FlowNetC。 每帧都显示端点错误。 请注意,尽管 FlowNets 的 EPE 通常比 EpicFlowC差,但网络通常可以更好地保留细节。
KITTI
KITTI 数据集包含强大的投影变换,这与网络在飞椅训练期间遇到的非常不同。 尽管如此,原始网络输出已经相当不错了,额外的微调和变分细化提供了进一步的提升。 有趣的是,对 Sintel 进行微调可以改善 KITTI 的结果,这可能是因为 Sintel 中的图像和动作比 Flying Chairs 中的更自然。 FlowNetS 在这个数据集上的表现优于 FlowNetC。
Flying Chairs
我们的网络在 Flying Chairs 上接受过培训,因此有望在这些方面表现最佳。 在训练时,我们留下一个由 640 张图像组成的测试集。 表 2 显示了该测试集上各种方法的结果,图 7 显示了一些示例预测。可以看到 FlowNetC 优于 FlowNetS,并且网络优于所有最先进的方法。 另一个有趣的发现是,这是唯一一个变分细化不会提高性能但会使事情变得更糟的数据集。 显然,网络已经可以比变分细化做得更好了。 这表明使用更真实的训练集,网络在其他数据上的表现也可能更好。
图 7. Flying Chairs 数据集上的光流预测示例。 图像包括 EpicFlow 经常无法找到的精细细节和大位移的小物体。 网络工作要成功得多。
时间
在表 2 中,我们以秒为单位显示了不同方法的每帧运行时间。 不幸的是,许多方法仅在单个 CPU 上提供运行时,而我们的 FlowNet 使用仅在 GPU 上实现的层。 虽然网络的错误率低于最先进的水平,但它们是实时方法中最好的。 对于网络的训练和测试,我们使用 NVIDIA GTX Titan GPU。 DeepFlow 和 EpicFlow 的 CPU 时序取自 [30],而 LDOF 的时序是在单个 2.66GHz 内核上计算的。
5.3. 分析
训练数据
为了检查我们是否从使用 Flying Chairs 数据集而不是 Sintel 中受益,我们仅在 Sintel 上训练了一个网络,留下了一个验证集来控制性能。 由于积极的数据增强,即使是 Sintel 也足以很好地学习光流。 在 Sintel 上进行测试时,专门在 Sintel 上训练的网络的 EPE 比在 Flying Chairs 上训练并在 Sintel 上进行微调的网络高大约 1 个像素。
Flying Chairs数据集相当大,是否还需要数据增强? 答案是肯定的:当在 Sintel 上测试时,在 Flying Chairs 上训练一个没有数据增强的网络会导致 EPE 增加大约 2 个像素。
比较架构。
表 2 中的结果可以得出关于我们测试的两种架构的优缺点的结论。
首先,FlowNetS 比 FlowNetC 更好地推广到 Sintel Final。 另一方面,FlowNetC 在 Flying chairs 和 Sintel Clean 上的表现优于 FlowNetS。 请注意,飞椅不包括运动模糊或雾,如 Sintel Final。 这些结果共同表明,尽管两个网络的参数数量几乎相同,但 FlowNetC 对训练数据的过度拟合程度略高。 这并不意味着网络会牢记训练样本,但它会适应训练期间呈现的数据类型。 尽管在我们当前的设置中,这可以被视为一个弱点,但如果可以获得更好的训练数据,它可能会成为一个优势。
其次,FlowNetC 似乎在大位移方面存在更多问题。 这可以从上面讨论的 KITTI 的结果以及 Sintel Final 的详细性能分析中看出(未在表中显示)。 FlowNetS+ft 实现了 43.3px 的 s40+ 误差(EPE 在位移至少为 40 像素的像素上),对于 FlowNetC+ft,该值为 48px。 一种解释是相关性的最大位移不允许预测非常大的运动。 这个范围可以以计算效率为代价来增加。
6. 结论
基于卷积网络架构设计的最新进展,我们已经证明可以训练网络直接从两个输入图像预测光流。 有趣的是,训练数据不一定是真实的。 人造飞椅数据集仅包括合成刚性物体的仿射运动,足以以具有竞争力的精度预测自然场景中的光流。 这证明了现有网络的泛化能力。 在 Flying Chairs 的测试集上,CNN 的性能甚至优于 DeepFlow 和 EpicFlow 等最先进的方法。 随着更真实的训练数据可用,看看未来网络的表现会很有趣。