Bootstrap

【读论文】使用基于 CNN 的非局部滤波对光流进行无监督学习

使用基于 CNN 的非局部滤波对光流进行无监督学习

论文原文请看这里


​ 摘要:从连续的视频帧中估计光流是计算机视觉和图像处理中的基本问题之一。 在深度学习时代,已经提出了许多方法来以无监督的方式使用卷积神经网络 (CNN) 进行光流估计。 然而,无监督光流方法的性能仍然不尽如人意,并且往往远远落后于监督光流方法,这主要是由于跨越运动边界和遮挡的过度平滑。 为了解决这些问题,在本文中, 我们提出了一种具有新后处理项和有效损失函数的新方法,以无监督的端到端学习方式估计光流。 具体来说,我们首先利用基于 CNN 的非局部项通过去除噪声和减少运动边界周围的模糊来改进估计的光流。 这是通过自动学习大空间邻域上的依赖权重来实现的。得益于它的学习能力,该方法对各种复杂的图像序列有效。 其次,为了减少遮挡的影响,引入了一种对称的能量公式来从精细的双向光流中检测遮挡图。 然后将遮挡图集成到损失函数中。 在具有挑战性的数据集上进行了广泛的实验,即 FlyingChairs、MPI-Sintel 和 KITTI,以评估所提出方法的性能。 最先进的结果证明了我们提出的方法的有效性。

一、引言

​ 光学流估计旨在计算视频帧之间的像素级运动场,是计算机视觉中最基本的问题之一。 由于其广泛的应用,例如动作识别[1]、[2]、分割[3]等,它在学术界和工业界都备受关注。

​ 最近,光流估计方法[4] –[7] 基于深度学习,通过使用卷积神经网络 (CNN),克服了传统模型 [8]、[9] 中的典型问题(例如低速性能)。 然而,这些方法的一个主要缺点是它们是受监督的,并且需要大量带有真实光流的注释数据进行训练。 不幸的是,获得真实视频的每像素真实光流是很困难的 [3],[10]。

​ 一个有前途的研究方向是使用无监督学习方法。 Ahmadi 和 Patras [11] 提出通过设计基于经典亮度常数假设 (BAC) 的损失函数来训练 CNN 来计算光流。 然而,被遮挡的像素会影响估计精度,因为经典的基于 BAC 的损失函数更喜欢用其他任意像素来补偿被遮挡的区域。 最近,提出了一些更先进的无监督方法来通过考虑遮挡来计算光流 [12]-[16]。 尽管如此,无监督方法与其有监督的对应方法之间仍存在很大的性能差距(如第 V 节所示)。 大多数情况下,这些模型无法很好地处理异常值,并且经常会产生过度平滑的流。

​ 孙等人。 [8]进行了大量实验,发现使用滤波器(如均值滤波器、非局部滤波器、双边滤波器等)可以有效提高传统模型的精度。 其中,非局部过滤器似乎是最好的过滤器之一。 非局部项最小化了中心值与其邻域中除自身外的所有流值之间的 L1 距离,这可以防止跨越运动边界的平滑 [8]、[17]。 然而,传统的非局部方法有两个缺点:(1)低速性能,以及(2)权重是根据欧几里德距离的度量或其他[8]人为设计的。 在本文中,我们提出了一种新的端到端无监督光流估计方法。 首先,为了解决跨越运动边界的过度平滑问题,我们设计了一个基于 CNN 的非局部项。 我们的非局部项被嵌入到深度神经网络中,因此可以自动学习其权重,使其适用于对各种图像进行去噪并可以保留运动边界的细节。 此外,我们基于 CNN 的非局部项仅由五个卷积层组成,并且仅在最后一个金字塔级别进行,因此节省了大量的计算时间。

​ 其次,为了解决通常会产生误导信息的遮挡区域 [14] 的问题,在先锋工作 [15]、[18] 之后,我们使我们的网络能够提取遮挡图并将它们整合以形成损失函数。 具体来说,我们估计前向和后向光流以生成双向遮挡图(见图 1)。 我们使用它们的关系并允许它们通过估计的双向流和遮挡图相互利用。

​ 更具体地说,在训练阶段,输入是连续的两帧。 交换图像的顺序,我们可以估计前向和后向光流。 随后,基于 CNN 的非局部项用于细化计算出的光流。 之后,我们利用改进的双向光流通过前向和后向一致性检查获得双向遮挡图。 最后,我们根据估计的双向光流和遮挡图构建损失函数。 我们在 FlyingChairs、MPI-Sintel、KITTI 2012 和 KITTI 2015 基准测试中评估我们的方法。 该方法在所有基于无监督学习的光流方法中产生最高的准确性。 综合消融研究验证了我们的无监督光流技术的有效性。

​ 我们总结了这项工作的贡献如下:

• 我们提出了一种新颖的端到端神经网络,以无监督的方式估计光流,以处理遮挡和缺乏具有真实数据的大规模数据集的问题。

• 我们引入了一个基于 CNN 的非局部项,它可以学习大空间邻域上的依赖关系,以便可以在优化过程中稳健地集成流量估计,以防止跨越运动边界的过度平滑。

• 基于CNN 的非局部术语可以被广泛使用,因为它可以轻松地与其他基于CNN 的光流模型结合使用。

• 具有较高的鲁棒性和效率,所提出的模型在 MPI-Sintel、KITTI 2012/2015 数据集上实现了高精度。

二、 相关工作

​ 长期以来,已经进行了大量研究以提高光流估计的性能 [19],特别是在处理异常值和遮挡方面 [3]。 在本节中,我们考虑三类相关的光流技术,即变分方法、监督深度学习方法和无监督深度学习方法。 此外,我们将在第 II-D 节中展示优化光流的不同方法。

A. Variational Methods

​ Horn 和 Schunck (HS) [19] 创造性地将二维速度场与亮度变化结合起来,构建了基于 BAC 的基础数据项,并根据整体平滑度进一步设计了平滑度项 约束。 利用这两项,建立了变分光流模型的理论结构。 由于变分光流方法有很多优点,因此成为光流计算的主流。 随后的变分光流算法几乎都是从HS算法[3]派生和扩展的。 为了处理大位移问题,Black 和 Anandan [20] 提出了一种由粗到细的变分方法,并引入了一个鲁棒的框架来处理异常值,即亮度不稳定和空间不连续性。 由粗到细的策略是处理大位移的启发式工作,这对后续的光流方法 [21]-[23] 有巨大影响。 为了处理异常值并减少运动边界处的过度平滑,Sun 等人。 [8] 引入了一个非局部项,它在大空间邻域上稳健地集成了流估计,[24] 考虑了图像之间的对称性以及流场中可能的遮挡。 图等人。 [9] 提出了一种方法,它使用边缘检测来提取流边缘和分段遮挡检测来提取遮挡,以处理遮挡和过度平滑。 加权中值滤波器、双边滤波器和快速中值滤波器一起用于对检测到的边缘和遮挡进行后处理。 但是,这些方法需要大量计算,因此不太可能实时工作。

B. 深度学习中的监督方法

​ 近年来,使用 CNN 构建模型以端到端的方式学习光流取得了巨大成功 [3]。 多索维茨基等。 [4]率先使用CNN计算光流。 他们提出了一个名为 FlowNet 的网络,其中包含两个 CNN 网络——FlowNetS 和 FlowNetC。 它们在可训练的编码器-解码器网络中端到端实现。 这些网络在大型合成数据集 (FlyingChairs) 上进行了预训练,并在其他数据集上进行了微调。 FlowNet 速度非常快,但其流场在平滑区域中包含大量误差,因此需要进行变分细化。 受 FlowNet 的启发,Ilg 等人。 [5] 提出了一个名为 FlowNet 2.0 的网络,它通过堆叠多个编码器 - 解码器网络来扩展 FlowNet。 它获得了比 FlowNet 更准确的结果,但参数和计算复杂度显着增加。 Ranjan 和 Black [25] 探索了一个称为 SpyNet 的紧凑网络,它源自空间金字塔。 孙等人。 [6] 进一步提高了 SpyNet 的性能,并提出了一个有效的模型,该模型结合了光流和立体匹配的不同良好实践,通过训练浅层 Siamese 网络并构建不同尺度的成本量。 慧等人。 [7] 提出了一个名为 LiteFlownet 的模型,它通过轻量级级联网络在每个金字塔级别进行流推理,并使用特征驱动的局部卷积来处理异常值和模糊流边界的问题。 然而,这些监督模型有一个很大的局限性:它们需要大量具有真实光流的数据。 不幸的是,真实视频很难获得真值流。

C. 深度学习中的无监督方法

​ 为了解决缺乏真实数据流的问题,一种有前途的方法是利用无监督学习。 杰森等人。 [12] 提出了一种通过亮度恒定性和运动平滑度以不受监督的方式计算光流的方法。 同样,任等人。 [13] 提出了一种基于 FlowNet 的无监督方法来避开合成注释数据集的限制。 他们用经典的光度损失替换了原来的监督损失。 但准确性并不令人满意,原因之一是当像素被遮挡时,光度损失会提供误导性信息。 王等人。 [14]首先推断遮挡图,然后利用它们计算光度差。 Hur 和 Roth [26] 提出联合学习光流和遮挡,并展示了如何利用遮挡作为估计光流的重要线索。 迈斯特等人。 [15] 提出了一个名为 UnFlow 的模型,该模型设计了一种基于遮挡感知双向流估计的无监督损失,以避免对真实流的需求。 Neoral 等人。 [27] 提出了一种 ContinualFlow 方法,该方法通过使用具有时间一致性的多帧公式来估计光流。 它利用更多具有高级遮挡推理的数据来获得更好的准确性,但它缺乏学习遮挡区域中光流的能力。 此外,赖等人。 [18] 提出了一个无监督网络来联合学习立体匹配和光流估计的时空对应关系。 它还包括遮挡提取,其中立体匹配可以帮助模型理解场景中的深度信息。 这种策略有效地提高了光流估计的准确性,但增加了模型的复杂度。 在本文中,我们只使用两个连续的图像来学习双向光流和遮挡图。 此外,我们应用基于 CNN 的非局部项来减轻边界平滑度。

D. 细化

​ 传统的光流方法通常使用上下文信息对流场进行后处理。 中值滤波和双边滤波是用于防止跨运动边界平滑的常用方法 [9]。 布德斯等人。 [17] 提出了一种用于图像去噪的非局部算法,该算法可以捕获远程依赖性。 它减轻了去噪过程中的边界过度平滑。 孙等人。 [8] 展示了如何将非局部项的加权版本合并到变分模型中以改进光流。 他们建议,如果我们知道属于同一表面的一对像素,则应赋予它们更高的权重。 这样就减少了边界模糊,权重根据空间距离、色值距离和遮挡状态进行近似。 然而,不仅权重计算困难,而且很难与当前的深度网络结合。 受经典非局部技术的启发,Wang 等人。 [28] 构建了一个非局部项来计算某个位置的响应,作为深度神经网络中所有位置的深度特征的加权和。 这个简单的操作在视频分类的应用中显示了有效性。 受上述工作的启发,我们设计了一个基于 CNN 的非局部项来细化提取的光流,它可以轻松地与深度模型集成以克服过度平滑。

三、 所提出的方法

​ 我们框架的示意性结构如图 1 所示。基于粗到细的策略 [6]、[7]、[25],我们提出了一种端到端的估计方法(向前 ) 无监督方式的光流。 输入是两个连续的图像,输出是(前向)估计的光流。

在这里插入图片描述
图 1. 框架图解。 整个网络基于从粗到细的策略。 具体来说,我们在输入的两个连续图像上构建了一个特征金字塔。 由于篇幅有限,我们只展示了顶部两层和最后一层的流量估计模块。 光流估计器在不同级别有不同的参数。 在最终级别,获得全分辨率光流。

​ 在训练过程中,为了检测遮挡,我们还需要逆(向后)光流 [18]、[25]。 光流图和遮挡图被集成到我们的损失函数中以相互约束。 请注意,为了简洁起见,一些解释仅讨论前向光流。 交换输入图像的顺序,我们可以得到反向光流,推理的实现方式相同。

​ 继之前的工作 [6]、[7] 之后,我们首先从两个输入图像构建一个特征金字塔。 在顶层,我们使用第一张图像的特征和第二张图像的特征来构建前向成本量。 第一张图像的前向成本量和特征被输入到光流估计器中,以计算顶层的前向流。之后,估计的前向流被上采样,并重新缩放到第二级。

​ 在第二层,计算光流的方式与顶层略有不同。 我们使用来自顶层的上采样前向流将第二张图像的特征图向第一张图像扭曲以获得前向扭曲特征。 第一张图像的特征和前向扭曲特征用于构建前向成本量。 接下来,第一个图像的特征、前向成本量和来自顶层的上采样前向流被馈送到光流估计器以获得第二级的前向流。 该过程重复进行,直到达到所需的水平。 该过程的细节如图 2 所示。

在这里插入图片描述

图 2.(1) L 层前向光流的提取过程说明:(2)根据图像 1 和扭曲图像 2 得到成本量。(3)估计光流根据图像 1 ,成本量和上采样流量。

​ 我们利用基于 CNN 的非局部项来细化最终级别的估计光流,这可以直接学习远程依赖关系。 我们将在第 III-E 节中展示非局部项(non-local term)的实现细节。 这样可以有效地防止运动边界被过度平滑。 最后,使用细化的流生成遮挡图。 我们将流量和遮挡图(occlusion map)整合到能量公式中,通过迭代优化可以更好地估计前向和后向流量。

​ 我们将从以下几个方面详细描述该框架: 在第 III-A 节中,我们将定义我们的符号。 在第 III-B 节中,将介绍特征提取的方法。 特征翘曲( Feature warping)将在第 III-C 节中解释。 如何估计光流和遮挡将分别在部分 III-D 和 III-F 中说明。 最重要的是,基于 CNN 的非局部项和新的损失函数将分别在第 III-E 和 III-G 节中描述

A. 符号

​ 输入的两幅RGB 图像分别为I1, I2 ∈ RH×W×3,其中H 和W 分别代表高度和宽度。 前向和后向光流由 w f 和 wb 表示。 具体来说,前向光流 w f 是从 I1 到 I2 计算的,而后向光流 wb 是从 I2 到 I1 估计的,其中 w f ,wb ∈ RH×W×2。 我们用O f 和Ob 表示前向和后向遮挡图,其中O f ,Ob∈RH×W×1。 以前向遮挡图为例,白色区域表示第一张图像中的区域在第二张图像中没有对应关系,见图1

B.特征提取

​ 首先,对于两个输入图像I1和I2 ,我们提取 L 个多尺度特征表示,其中 L 表示金字塔层的数量,底层是输入图像。 我们使用 Fl1 和 Fl2 分别表示在第 l 个金字塔级别上提取的 I1 和 I2 的 CNN 特征图。 受 [6] 的启发,我们使用卷积滤波器层对 l + 1 金字塔级别的特征进行下采样,以在第 l 层生成特征表示。 对于我们的模型,金字塔中有六层。 从第一层到第六层,我们将每个卷积层的特征通道数分别固定为 16、32、64、96、128 和 192 [6]、[7]、[25]。

C. Feature Warping

​ 如果两幅图像有很大的位移,网络将很难获得高质量的光流。 为了解决这个问题,我们添加了一个特征变形层 [6]、[7]。 在第 l 层,我们通过估计的流量将 Fl2 向 Fl1 扭曲以获得 Flf ω,实现表示为:

在这里插入图片描述

其中 x 是像素索引,upωlf 是来自第 (l-1) 级的上采样流。 值得注意的是,在顶层,没有上采样流量,我们只是将upω1f 和upω1b 设置为零,即F1f ω = F12 和F1bω = F11。

​ 双线性插值[3]用于实现变形操作。 对于非平移运动,扭曲可以补偿一些几何失真并将图像块放置在正确的比例 (put image patches at the right scale )[6]。

D. 光流估计

​ 为了存储在下一帧将像素与其对应像素相关联的匹配成本,我们使用深度特征在多个金字塔级别构建部分成本量 [6]、[7]、[29]。 匹配成本定义为两幅图像特征之间的相关性 [30]。 成本量使用第一幅图像中一个像素的特征和第二幅图像中对应的特征,只需要计算有限范围的d个像素,即|x1 − x2|∞ ≤ d。 在顶层,空间分辨率很小,使用的搜索范围很小。 在剩下的层次中,为了缩小搜索范围,我们使用warped特征图和第一张图像的特征图来构建成本量(cost volume),定义为:

在这里插入图片描述

成本量的维度是 d2 × Hl × Wl ,其中 Hl 和 Wl 分别表示第 l 层金字塔的高度和宽度。

​ 光流估计器建立在多层 CNN 上。 具体来说,在l层,输入是第一张图像Fl1的深度特征图、上采样的前向光流upωlf和代价量cvlf,输出是计算得到的前向光流ωlf,见图2 .

​ 不同级别的光流估计器有自己的参数,而不是共享相同的参数。 重要的是,由于前向流与后向流相反,我们共享前向和后向流估计器的权重以降低计算成本,见图 1。

E. CNN-Based Non-Local Term

​ 对于传统的non-local term [8], [28],它不仅比较单个点的灰度值,还比较整个邻域的几何形状。 具体来说,如果一对像素具有相似的灰度值但像素周围的结构不相似,则为它们分配较小的权重。 因此,这种去噪策略确保保留图像的详细信息并减少图像边界处的过度平滑。 但是,运行成本高,难以与深度学习方法结合。

​ 受 [8]、[28] 的启发,我们通过深度学习构建了一个非局部项( non-local term)来细化光流。 我们的非局部项可以自动学习流场中像素的关系,并有效缓解(alleviate)跨越运动边界的过度平滑。 因为我们的非局部项是基于深度学习的,所以它可以很容易地集成到深度卷积网络中,并根据任务以端到端的方式更新参数。

​ 具体来说,我们的non-local term定义为:

在这里插入图片描述

其中 i 是要计算其响应的输出位置的索引,j 是枚举所有可能位置的索引。 C(x) 表示归一化因子。 在方程式中。 (3),我们不仅考虑局部邻域,还考虑流场上的所有像素。

​ f (xi, x j) 是一个计算标量的成对函数,表示 xi 和所有 x j 之间的关系亲和度。 如果 xi 和 x j 在同一表面上,并且具有相似的外围结构信息,则权重应较大,否则权重应较小。 因此,我们将 f (xi, x j) 定义为:

在这里插入图片描述

其中 C(x) = ∀ j f (xi, x j),Wθ xi 和 Wψ x j 是两个嵌入。

g(x j) 是一个一元函数,用于计算位置 j 处的输入信号的表示,我们将其视为线性嵌入的形式,其定义为:

在这里插入图片描述

其中 Wg 是要学习的权重矩阵。

​ 我们的non-local term仅由五个卷积层组成,并在最后一个金字塔级别执行,这意味着计算量相对较小。 此外,与手动设计权重的传统方式不同,我们基于 CNN 的非局部项可以自动学习权重。 它将根据两个像素 xi 和 x j 是否位于同一表面、是否具有相似的色彩空间特征以及是否具有相似的结构信息来分配权重值 f(xi, x j)。 由于这种能力,我们基于 CNN 的non-local term可有效防止跨越运动边界的过度平滑,并可应用于复杂场景。 在第 V-E 节中,我们将通过进行各种实验来测试所提出的基于 CNN 的非局部项的有效性。

F. 遮挡估计

遮挡是深度和运动的结果。 准确检测遮挡区域对于可靠的光流估计至关重要,因为它们有利于防止非遮挡区域受到遮挡像素的不利影响 [26]。 因此,需要估计准确的光流以可靠地定位遮挡。 在这项工作中,我们提取遮挡掩码( occlusion masks)作为计算光流的关键线索。 通常,存在三种不同的方法来处理遮挡:

• 将遮挡视为异常值并将遮挡区域中的目标像素预测为常数值或通过插值 [31]、[32]。

• 构建复杂的框架来推理遮挡[33]。

• 通过利用光流的对称特性并忽略预测遮挡区域的损失惩罚来处理遮挡[3]、[26]、[34]。

​ 我们的方法与上一个方法类似,根据前向-后向一致性检查进行遮挡检测[34]。 当前向和后向流之间的不匹配太大或流超出图像边界时,我们认为像素被遮挡。 我们遵循 [15] 的技术,当约束方程(6)被违反时,该技术将遮挡标志 O f (x) 定义为 1,否则为 0。

在这里插入图片描述

我们为所有实验设置 α1 = 0.01 和 α2 = 0.05。 后向遮挡图以相同的方式计算,只是交换了 ω f 和 ωb。 在 V-F 节中,我们将证明遮挡图的有效性。

G. 损失函数

​ 在本文中,我们将损失函数添加到网络的末端。 我们将前向流一致性检查和遮挡/非遮挡对称操作联合起来集成到损失公式中。 遮挡和非遮挡信息可用于提高后向和前向光流估计的性能。 对于未被遮挡的像素,在第二帧对应的像素位置,前向流应该与后向流相反,这意味着对应的像素在被流映射后应该是相似的。 因此,我们添加了向前-向后一致性惩罚 [15]、[18],如下所示:

在这里插入图片描述

其中 σ 是一个鲁棒的广义 Charbonnier 惩罚函数 [35] 并定义为:

在这里插入图片描述

我们为所有实验设置 ε = 0.01 和 τ = 0.4。

​ 我们将遮挡感知(occlusion-aware )数据丢失设计为:

在这里插入图片描述

其中 fD 函数用于测量光度差。

​ 最终的损失函数表示为:

在这里插入图片描述

​ 亮度恒定性对于现实世界中的光照变化不是不变的 [36]。 为了增加鲁棒性,我们使用三元普查变换 [37],它可以补偿加法和乘法照明变化,并为逼真的图像提供更可靠的稳定性。

​ 综上所述,我们充分利用了光流和遮挡之间的关系和对称性,将它们作为重要线索,相互促进。 这种贡献显着提高了无监督学习方式中光流估计的准确性。 我们将在 V-F 部分展示遮挡的影响。

四、 训练过程

​ 算法 1 显示了训练的伪代码。 输入是两个连续的帧 I1 和 I2,输出是前向光流 ω f 。 在算法 1 的内循环中,在第 L 个金字塔层,我们分别从 Il1 和 Il2 中提取特征信息 Fl1 和 Fl2。 同时,我们将 ω(fl−1) 上采样到 upωlf 。 我们使用方程(1) 通过上采样流 upωlf 将 Fl2 扭曲到 Fl1 并获得扭曲特征 Flf ω。 我们结合 Fl1 和 Flf ω,然后使用等式 (2) 计算成本量 cvlf 。 最后,cvlf、Fl1 和 upωlf 被输入到光流估计器以计算 l 级光流 ωlf。 值得注意的是,在金字塔顶层,我们将光流设置为零。 在内循环之后,我们获得了一个全分辨率的光流,和方程(3) 用于正则化光流并细化光流 ω f 。 遮挡图是通过前向后向一致性检查计算的。

在这里插入图片描述

​ 训练是通过随机梯度下降法在 打乱小批量(shuffled mini-batch )上进行的。 继先前的工作 [12]、[13] 之后,我们首先在大型合成数据集 FlyingChairs 上预训练模型,迭代次数为 300k,以确保我们的模型具有良好的泛化能力。 然后,我们分别在 MPI-Sintel 和 KITTI 数据集上微调预训练模型。 使用反向传播更新参数。 我们使用 Adam [38] 作为优化器,初始学习率为 1e-4,每 50k 次迭代衰减一半。 该模型使用 TensorFlow 进行训练。 为了从张量并行计算的效率中受益,所有模拟研究都是在 Ubuntu PC 上使用三个 NVIDIA Pascal TitanX GPU 进行的。 测试是通过一个 GPU 实现的。

五. 实验

​ 我们在包括 FlyingChairs [4]、MPI-Sintel [10]、KITTI 2012 [39] 和 KITTI 2015 [40] 在内的标准光流基准数据集上评估我们的方法,并将我们的结果与其他最新的state-of-the-art的深度学习的监督和无监督光流方法进行比较。 我们将在第 V-A 节中详细介绍基准数据集。 在第 V-B 节中,将介绍本文中使用的评估指标。 实验结果在第 V-C 节中显示和分析。 具体来说,遮挡推理和基于 CNN 的非局部正则化的作用将分别在 V-F 和 V-E 节中详细分析。

A. 数据集

  1. FlyingChairs:FlyingChairs 是一个大型合成数据集,具有光流地面实况。 它由来自 Flickr [4] 的分割背景图像组成,包含 22872 个图像对以及它们对应的流场。 椅子和背景的运动都是纯平面的。 我们裁剪每帧 448 × 384 的图像块,并使用 4 的批量大小。

  2. MPI-Sintel:Sintel 基准测试 [10] 是使用开源图形电影“Sintel”创建的(movie “Sintel” with two

passes),即 Clean 和Final。 Sintel 图像的原始分辨率为 1024×436。 该数据集包含流场、运动边界、未匹配区域和图像序列。 MPI Sintel 为训练提供真实情况,还提供像素级遮挡掩码。 我们裁剪每帧 768×384 的图像块,并使用 4 的批量大小。

  1. KITTI:KITTI 数据集提供了从移动平台捕获的真实道路场景。 激光扫描仪为少量图像提供准确但稀疏的地面实况光流。 KITTI 包含两个类,即 KITTI 2012 [39] 和 KITTI 2015 [40]。 KITTI 2012 包含 194 个训练图像对和 195 个测试对,而 KITTI 2015 包含 200 个训练场景和 200 个测试场景。 KITTI 2015 的前 156 个序列的大小为 375 × 1242,但后 44 个序列具有不同的分辨率,例如 370 × 1224、374 × 1238 和 376 × 1241。我们分别在这两个类上微调我们的模型, 并在每一帧上裁剪一个 896 × 320 的图像块。 批量大小设置为 4。

B. 评估指标

​ 选择两个标准指标进行评估。

​ • 平均终点误差(EPE) 定义为估计流量与真实流量之间的平均欧几里得距离,表示如下:

在这里插入图片描述

其中x 表示像素点。 vx 和 ux 分别代表水平和垂直方向预测的光流,ugt x 和 ugt x 分别代表水平和垂直方向的真实流。

​ • 报告了 KITTI Fl-all 和 Fl-noc 的错误百分比。 Fl-all 表示估计流量错误的像素比例,Fl-noc 仅表示未遮挡的像素

C. 基准测试结果

​ 我们分别在表 I 和表 II 中的 MPI 数据集上将我们的模型与最先进的监督和无监督模型进行比较。 此外,我们还在表 VI 和表 VII 中将我们的方法与 KITTI 数据集上众所周知的有监督和无监督方法进行了比较。

​ 1) FlyingChairs 的预训练:我们使用“Our(Chairs)”来表示仅在 FlyingChairs 数据集上预训练的模型。 如表二所示,在 FlyingChairs 的测试集上,“Our(Chairs)”的 EPE 为 2.98,比之前的方法准确率至少提高 10.7%(2.98 (Our) vs 3.30 [14]) . 此外,如表 I 所示,“Our(Chairs)”方法的结果是最佳监督学习光流方法。 这是由于我们的遮挡处理策略,以及基于 CNN 的非局部项的贡献,它可以去除噪声并减少运动边界的过度平滑。 结果证明我们的模型具有很强的泛化能力。

表 1精度 (EPE) 比较与MPI-SINTEL数据集上的监督方法。 前 16 行是监督方法的结果。 (-) 表示原始论文没有提供相应的报告。 我们的(椅子)意味着模型是在飞椅数据集上预先训练的。 OUR+FT-SINTEL 意味着在 MPI-SINTEL 数据集上微调 (FT) 预训练模型

在这里插入图片描述

表 II 在 MPI-SINTEL 数据集上与未监督方法的准确度 (EPE) 比较。 前 9 行表示未监督方法的结果,而最佳结果以粗体突出显示

在这里插入图片描述

​ 2) 在 MPI-Sintel 上进行微调:我们利用“Our+FT Sintel”来表示已经通过 MPI-Sintel 数据集进行微调的模型。 值得注意的是,在与 Sintel Clean 集进行比较时,我们使用 Sintel Clean 的训练集进行微调。 在 Sintel Final 集上进行比较时,我们使用 Sintel Final 的训练集进行微调。 表二显示,“Our+FT-Sintel”在 Sintel Clean 和 Final 的训练集上分别得到 EPE=2.58 和 EPE=3.85。 此外,它在 Sintel Clean 的测试集上获得了 EPE=7.12,超过了之前通过 MultiFrameOccFlow-Soft+FT [16] 获得的最佳结果(7.12 vs 7.23)。 “Our+FT-Sintel”在 Sintel Final 测试集上的 EPE=8.51,比 [16] 的最佳先前结果高 3.4%(8.51 对 8.81)。 图 3 显示了“Our+FT-Sintel”在 Sintel Clean pass 和 Sintel Final pass 上的可视化结果,还给出了我们估计的光流和遮挡掩码与地面实况的比较。

​ 从图 3 可以清楚地观察到,我们的模型得到的光流边界非常清晰,可以很好地区分不同的表面。 即使原始图像边界模糊(例如 Sintel Final),我们的模型仍然可以估计边界清晰的光流。 实验结果证明,我们设计的基于CNN的非局部项可以在保留细节的同时有效降低光流的噪声。

在这里插入图片描述

图 3. MPI Clean 和 MPI Final 的定性示例说明。 每两行为一组。 在第一组中,第一列表示输入图像(来自 MPI Clean),第二列的顶部表示地面实况流,底部表示地面实况遮挡图,第三列的顶部表示估计的光流,而底部表示估计的遮挡图。 第二组与第一组结构相同,但图像来自 MPI Final,这意味着边界模糊更多。

​ 在第 V-E 节中,我们展示了所提出的非局部(non-local term)对提高估计光流性能的影响,并在模型不添加非局部项时将结果可视化。 此外,我们分析了非局部项对计算时间的影响。

​ 此外,表 III 报告了 MPI-Sintel 数据集上不同区域的 EPE 结果。 可以发现,我们的模型在运动大且远离运动边界的区域中表现相对优于其他方法。这可能是因为我们采用了由粗到细的策略,并使用运动大的数据来训练网络。

表 III 不同地区的 SINTEL 基准测试结果。 “EPE 匹配”表示在相邻帧中仍然可见的区域上的端点误差 (EPE),而“EPE 不匹配”表示仅在两个相邻帧之一中可见的区域上的 EPE。 “D0-10”表示距离最近的遮挡边界 0 到 10 个像素之间的 EPE。 同样,“D10-60”和“D60-140”只是地区不同。 “S0-10”表示速度在每帧 0 和 10 像素之间的区域上的 EPE。 同样,“S10-40”和“S40+”只是地区不同。 最好的结果以粗体突出显示

在这里插入图片描述

​ 3) 在 KITTI 上进行微调:我们称为“Our+FT-KITTI”来表示已经通过 KITTI 数据集进行微调的模型。 值得注意的是,在与 KITTI 2012 数据集上的其他模型进行比较时,我们使用 KITTI 2012 的训练集进行微调。 同样,在 KITTI 2015 数据集上进行比较时,我们使用 KITTI 2015 的训练集进行微调。

​ 如表七所示:

  1. 在 KITTI 2012 的训练集上,“Our+FT-KITTI”得到 EPE=3.02,比现有的最佳对应 UnFlow-CSS [15] (EPE=3.29) 更准确 ,即性能提高了 8.94%(3.02 对 3.29)。 在 KITTI 2012 的测试集上,“Our+FT-KITTI”获得 EPE=4.5 和 Fl-noc=5.86%。 具体来说,我们的 EPE 不如 OccAwareFlow+FT+KITTI [14](4.5 vs 4.2 [14]),但是 OccAwareFlow+FT+KITTI 有更复杂的损失函数和更多的超参数,而我们的损失函数更简洁,具有 更少的超参数。
  2. 在 KITTI 2015 的训练集上,“Our+FT-KITTI”获得 EPE=6.05 和 Fl-al=11.2%,在 EPE 测量上比 [16] 高 8.93%(6.05 vs 6.59)。 在测试集上,我们的 Fl-al 为 22.75%,比之前 MultiFrameOccFlow 的最佳结果(22.94%)更准确。 值得注意的是,MultiFrameOccFlow 使用了多个帧,而我们的方法只使用了两个连续的帧。

表 VII 性能(EPE、FL-NOC 和 FL-AL)与未监督模型在 KitTI 数据集上的比较。 前 9行表示未监督方法的结果。 最好的结果以粗体突出显示。 (-) 表示原始论文没有给出相应的报告

在这里插入图片描述

​ 图 4 显示了我们在 KITTI 上的微调模型的视觉效果。 我们可以发现我们的模型捕获的遮挡图相当不错,准确的遮挡图有利于提高光流估计的性能。 表八报告了在 KITTI 2015 基准测试集上的评估结果。 与最近的无监督方法 MultiFrameOccFlow [16] 相比,“Our+FT-KITTI”在“非遮挡像素”和“所有像素”中的流异常值百分比更低。

在这里插入图片描述

图 4. KITTI 数据集的结果。 第一列是输入图像,第二列表示有遮挡的真实流,第三列是估计的光流,最后一列表示提取的遮挡图

表 VIII 对 KITTI 2015 基准测试集的评估结果。 bg 表示仅在背景区域上平均的异常值百分比; fg 代表仅在前景区域平均的异常值百分比; 所有表示在所有真实像素上平均的异常值百分比。 最好的结果以粗体突出显示

在这里插入图片描述

​ 在第 V-F 节中,我们比较了有/没有遮挡提取的模型的准确性,以显示遮挡对光流估计的影响。 此外,我们分析了遮挡提取对计算时间的影响。

​ 4)与Consistent Pre-Train Strategy的比较:为了与其他模型的综合比较,我们进行了另一个实验。 具体来说,我们使用 SYNTHIA 数据集 [45] 来预训练我们的模型,这与 UnFlow [15] 一致。 然后我们在 Sintel 和 KITTI 数据集上微调预先训练的模型。 在这种情况下,我们在 Sintel Final(训练集)和 KITTI 2015(训练集)上的 EPE 分别为 5.22 和 7.15,而 UnFlow 在这些数据集上的对应结果分别为 7.91 和 8.10。 结果表明,我们的模型优于 Unflow,其预训练策略与我们一致(见表 V)。

表 V 使用相同的预训练数据集 (SYNTHIA) 在不同数据集上的模型和 unflow 的结果。 标准是 EPE

在这里插入图片描述

D. Ground-Truth Boost 结果

​ 最初,我们使用整个 FlyingChairs 数据集以无监督的方式预训练模型。 现在我们改变模型预训练的方式,即加入不同比例的ground truth。

​ 首先,我们使用 50% 的 FlyingChairs 数据(无地面实况)来初始化模型,其中损失函数与方程10一致.接下来,我们添加10%、25%、50%的剩余数据(带有ground truth)来进一步训练模型,并使用EPE作为损失函数,这是监督模型中常见的损失函数。 最后,我们在 FlyingChairs 测试集上测试混合训练模型,结果如表四所示。

表 IV 使用真实数据对结果的影响。 第一行表示添加的不同基本事实的百分比。 第二行表示飞椅测试集的结果。 测量是 EPE

在这里插入图片描述

​ 请注意,我们还可以通过使用 100% FlyingChairs 数据(具有地面实况)对模型进行预训练,将我们的模型转换为监督方式。 在这种情况下,预训练策略与 FlowNet2 [5]、PWC-Net [6]、LiteFlowNet [7] 相同。 毫不奇怪,使用的真实数据越多,我们的模型可以获得更好的性能。 如表 IV 的最后一列所示,如果我们使用监督方法对模型进行预训练,结果略好于最先进的监督模型 PWC-Net。 我们在 FlyingChairs 测试集上获得 EPE=1.85,而 PWC-Net 获得 EPE=2.0(见表 I)。 这可能是由于我们基于 CNN 的非局部项的影响,它可以有效地减轻跨越运动边界的过度平滑。

E. 非局部正则化

​ 为了验证我们基于 CNN 的非局部正则化的有效性,我们进行了以下实验。

​ 如表十二所示,当加入基于 CNN 的非局部项来细化估计的光流时,可以获得更高的精度。 特别是,FlyingChairs 的 EPE 至少增加了 27.70%(4.08 对 5.21),Sintel Clean 增加了 23.79%(4.75 对 5.88),Sintel Final 增加了 30.18%(4.87 对 6.34)。 将基于 CNN 的非局部项集成到基线模型会导致 Sintel Final 比 Sintel Clean 有更大的改进,因为 Sintel Final 比 Sintel Clean 包含更多的噪声。

表十二非局部和遮挡对结果的影响,√表示我们添加的组件,而×表示未添加。 测量值是 EPE,最佳结果以粗体高亮显示

在这里插入图片描述

​ 另一方面,我们的模型在 Sintel 数据集(分辨率为 1024 × 436)上以大约 27 fps 的速度运行。 当我们去除非局部项时,相同数据下的速度变为 28 fps。 它表明,随着我们的非局部项的应用,计算时间仅增加了约 3.5%。 它对计算时间的影响是可以接受的,因为它只包含五个卷积层,并且只在金字塔的最后一层进行。

​ 图 5 显示了基于 CNN 的非局部术语的视觉结果。 我们可以发现,当不使用非局部项时,估计的光流在边界处是模糊的。 相比之下,当使用非局部项时,边界处的运动模糊得到有效缓解,最终精度显着提高。

在这里插入图片描述

图 5. 直观地说明我们提出的非局部术语的效果。 左列显示了将非局部项添加到基线模型的结果,而右列显示了不添加非局部项的结果。

​ 此外,我们比较了基于 CNN 的非局部项在深度学习过程的不同阶段的影响。 在本文中,基线(baseline)是在金字塔的末端层添加非局部项。 为了进行比较,我们按照传统方式将非局部项合并到金字塔的每一层 [35]。 表 IX 显示准确度提高了约 3%,但计算成本增加了 100%。 根据实验结果,我们可以发现使用非局部项对金字塔每一层的流进行去噪确实提高了准确性,但会导致更多的计算负担。 仅在金字塔的末级添加非局部项使模型能够在效率和准确性之间取得平衡,因此更适合实时应用。

表 IX 在不同阶段添加非局部项的影响。 其中“每个”表示非局部项添加到金字塔的每一层,“结束”表示非本地术语仅添加到金字塔的末尾。 测量值是 EPE,最佳结果以粗体高亮显示

在这里插入图片描述

​ 此外,我们比较了层数对准确性和效率的影响。 如表 X 所示,当非局部层数增加时,精度略有提高,但其计算时间显着增加。 例如,与 5 层相比,当层数为 9 时,其精度提高 0.17,而计算时间增加 70%。 因此,我们选择了 5 层来平衡准确性和效率。

表 X 非局部的不同层数的影响。 第一行表示层数。 第二行显示了飞椅测试集的结果,其中测量值为 EPE。 第三行是与基线相比的计算时间比(5层)

在这里插入图片描述

​ 总结:我们基于 CNN 的非局部项在将其结合到深度架构中以估计光流时效果特别好,因为它可以学习找到有意义的关系线索而不管距离如何,并且它可以稳健地整合 大空间邻域上的流估计。 因此,我们的非局部项能够去除噪声并恢复锐利的运动边界。

F. 遮挡推理

​ 我们在 MPI-Sintel 和 KITTI 数据集上评估了我们的遮挡估计。 我们通过计算 [46] 中引入的最大 F-measure,将我们的方法与 MultiFrameOccFlow [16]、OccAwareFlow [14]、S2D [46] 和 MODOF [47] 进行定量比较,如表 XI 所示。 具体来说,S2D 使用二元分类,并使用真实遮挡图以有监督的方式训练他们的模型。 MODOF [47] 利用离散-连续优化来最小化能量函数。

表XI 遮挡估计评估。 结果是最大的 F 测量值。 (-) 表示原始论文没有提供相应的报告。 所有结果均来自相应数据集的训练集。 最好的结果以粗体突出显示

在这里插入图片描述

​ 在 MPI-Sintel 数据集上,很难以无监督的方式学习遮挡图,因为遮挡经常发生在无纹理区域,光度损失(photometric loss) [16] 的指导有限。 然而,我们使用前后流和遮挡对称关系(forward-backward flow and occlusion symmetry relationship)让它们相互利用,这不仅将光流与遮挡耦合,而且还允许利用几何和时间信息。 有了这个贡献,我们的模型比以前的无监督方法有更好的结果,并且在 Clean 和 Final pass 上分别获得了 0.55 和 0.49 的 F-measures。 在 Sintel Clean 上,与 OccAwareFlow [14] 过去的最佳结果相比,我们至少提高了 1.85%(0.55 对 0.54)。 在 Sintel Final 上,我们的结果也是最准确的,甚至接近监督模型 S2D 的最佳结果(0.49 vs 0.57 [46])。 结果表明遮挡图是估计光流的重要线索

​ 在 KITTI 数据集上,遮挡掩码仅包含移出图像的像素 [16]。 我们的 F-measure 在 KITTI 2012 和 KITTI 2015 上分别为 0.98 和 0.93,与state-of-the-arts相比提高了 3.16%(0.98 vs 0.95 [14])和 2.20%(0.93 vs 0.91 [16])。可以看出,我们的模型在估计光流时能够准确提取遮挡信息并提供准确的遮挡线索,有利于提高基于CNN的光流模型在遇到遮挡时的性能。

​ 进一步对 FlyingChairs 和 MPI-Sintel 数据集进行消融分析,以显示我们方法的遮挡推理的有效性,参见表 XII。 如果我们只使用光度作为损失函数,这意味着将前向和后向遮挡图设置为零并且不使用非局部项。 我们在 FlyingChairs 测试集上获得 EPE=5.21,在 Sintel Clean 训练集上获得 EPE=5.88,在 Sintel Final 训练集上获得 EPE=6.34。 值得注意的是,如果我们将遮挡推理添加到基线网络中,则性能得到显着提升,FlyingChairs 测试集的准确率提高了 26.46%(4.12 对 5.21),Sintel Clean 训练的准确率提高了 17.13%(5.02 对 5.88) 在 Sintel Final 训练集上分别为 21.46%(5.22 对 6.34)。 可以看出,遮挡掩码(occlusion mask)有助于光流估计,集成遮挡推理(integrating occlusion reasoning )可以有效增强模型处理遮挡的能力。 此外,当数据集中存在更多歧义时,使用遮挡推理会更有帮助,例如 Sintel Final。 当遮挡推理未集成到模型中时,模型在 Sintel 数据集上以大约 27.5 fps 的速度运行,其中计算时间仅减少了 1.8%(27.5 fps 对 28 fps,请参见小节 E 中的结果)。 这是因为一致性检查方程不包含任何可训练的参数,因此遮挡处理的时间要求非常小。

表XII 非局部和遮挡对结果的影响,√表示我们添加的组件,而×表示未添加。 测量值是 EPE,最佳结果以粗体高亮显示

在这里插入图片描述

六、 结论

在本文中,我们提出了一种端到端的无监督方法来从未标记的图像中学习光流。 我们的模型可以在不使用任何人工注释的情况下自动学习前向和后向光流以及遮挡图。 使用捕获的遮挡信息,我们设计了一个新的损失函数来处理遮挡问题。 此外,我们在学习过程中利用基于 CNN 的非局部项来细化光流,这能够有效地缓解边界过度平滑。 由于我们的非局部项是基于深度学习的,因此可以自动学习权重,使其适用于各种复杂的图像序列。 最先进的实验结果证明了基于 CNN 的非局部项和损失函数的有效性

;