LiteFlowNet:用于光流估计的轻量级卷积神经网络

原文链接

摘要

  FlowNet2 [14] 是用于光流估计的最先进的卷积神经网络 (CNN),需要超过 160M 的参数才能实现准确的流估计。 在本文中,我们提出了一种替代网络,它在具有挑战性的 Sintel final pass 和 KITTI 基准测试中优于 FlowNet2,同时模型尺寸小 30 倍,运行速度快 1.36 倍。 这是通过深入了解当前框架中可能遗漏的架构细节来实现的:(1)我们通过轻量级级联网络在每个金字塔级别提出了一种更有效的流推理方法。 它不仅通过早期校正( early correction)提高了流量估计的准确性,而且还允许在我们的网络中无缝结合描述符匹配(descriptor matching )。 (2) 我们提出了一种新的流正则化层,通过使用特征驱动的局部卷积(feature-driven local convolution)来改善异常值和模糊流边界(outliers and vague flow boundaries)的问题。 (3) 我们的网络拥有用于金字塔特征提取( pyramidal feature extraction)的有效结构,并且包含特征扭曲(feature warping*)而不是 FlowNet2 中实践的图像扭曲(*image warping)。 我们的代码和训练模型可从 https://github.com/twhui/LiteFlowNet 获得。

1.介绍

  光流估计是计算机视觉中长期存在的问题。 由于众所周知的孔径问题(aperture problem),不能直接测量光流 [12, 13]。 因此,估计通常通过在粗到细框架中的能量最小化(energy minimization in a coarse-to-fine framework)来解决 [6, 20, 7, 36, 27, 22]。 然而,这类技术涉及复杂的能量优化(energy optimization),因此对于需要实时估计的应用程序来说是不可扩展的。

  FlowNet [9] 及其继任者 FlowNet2 [14] 通过使用 CNN 进行光流估计标志着一个里程碑。 它们的准确度,尤其是后继者接近最先进的能量最小化方法(energy minimization approaches),而速度则快几个数量级。为了提高准确性,FlowNet2 被设计为 FlowNet 的级联变体,级联中的每个网络通过贡献第一张图像和扭曲的第二张图像(warped second image)之间的流量增量(flow increment )来细化前面的流场。 因此,该模型包含超过 160M 的参数,这在许多应用中可能非常强大(formidable)。 最近一个名为 SPyNet [21] 的网络通过在每个金字塔级别(pyramid level)采用图像变形来尝试使用 1.2M 参数的较小规模的网络。 尽管如此,准确性只能与 FlowNet 相匹配,而不能与 FlowNet2 相匹配。 本研究的目的是探索替代的 CNN 架构,以实现准确的流量估计,同时又具有高效率。 我们的工作受到 FlowNet2 和 SPyNet 成功的启发,但我们进一步深入挖掘关键元素,以充分释放(unleash)深度卷积网络结合经典原理的潜力

  改进 FlowNet2 和 SPyNet 的设计有两个一般原则。 第一个原则是金字塔形特征提取。 提议的网络称为 Lite FlowNet,由编码器和解码器组成。编码器将给定的图像对(image pair)分别映射为多尺度高维特征( multi-scale high-dimensional features)的两个金字塔。解码器然后在从粗到细的框架(coarse-to-fine framework)中估计流场。在每个金字塔级别,解码器通过从特征金字塔( feature pyramids)中选择并使用相同分辨率的特征(the features of the same resolution)来推断流场。与采用U-Net体系结构[23]进行流量推断的FlowNet2相比,这种设计使得网络更轻。与SPyNet相比,我们的网络分离了特征提取和流估计( feature extraction and flow estimation)的过程。这有助于我们更好地找出准确性和模型尺寸的瓶颈。

​ 第二个一般原则是特征扭曲。FlowNet2和SPyNet使用先前的流估计将第二个图像对应第一个图像进行扭曲,然后通过扭曲图像和第一个图像生成的特征图来细化估计(refine the estimate)。扭曲图像,然后生成扭曲图像的特征映射是两个有序的步骤。我们发现,通过直接扭曲的第二幅图像的特征映射(the feature maps),(这完全可以被编码器计算出来),可以将这两个步骤简化为一个步骤。这种一步特征扭曲过程减少了两幅图像之间更具区别的特征空间距离(more discriminative feature-space distance),而不是RGB空间距离。这使得我们的网络在解决流量问题时更加强大和高效(powerful and efficient)。

​ 我们现在强调我们的网络与现有的基于 CNN 的光流估计框架之间更具体的差异:

​ 1) 级联流推理——在每个金字塔级别,我们引入了两个轻量级网络的新型级联。 它们中的每一个都有一个特征扭曲 (f-warp) 层,使用来自前一级别的流量估计( flow estimate from the previous level)将第二张图像的特征图向第一张图像移动。 计算流残差(Flow residue)以进一步减少图像之间的特征空间距离。 这种设计有利于使用单个网络进行流推理的传统设计。 首先,级联逐步提高流量精度,从而允许早期校正估计值( early correction of the estimate),而不会将更多错误传递到下一个级别。 其次,这种设计允许与描述符匹配无缝集成。 我们为第一个推理( first inference)分配一个匹配网络。 因此,可以首先生成像素精度流场(pixel-accuracy flow field),然后在后续推理网络(subsequent inference network)中细化到亚像素精度( sub-pixel accuracy)。 由于在每个金字塔级别,图像之间的特征空间距离已通过特征扭曲减小,因此我们可以使用比 [9, 14] 更短的位移来建立成本量。 此外,匹配仅在采样位置执行,因此聚合了(aggregated)稀疏的成本量。 这有效地减少了显式匹配(explicit matching)带来的计算负担。

​ 2) 流正则化——级联流推理类似于数据保真度在能量最小化方法中的作用。 单独使用数据项,流场中存在模糊的流边界和不希望出现的伪影(vague flow boundaries and undesired artifacts)。 为了解决这个问题,流动边界和强度边缘之间的局部流动一致性和共现通常用作规范流场的线索。 一些代表性的方法包括各向异性图像驱动 (anisotropic image-driven)[32]、图像和流驱动 [28] 以及互补 [36] 正则化。 在级联流推断之后,我们允许流场通过我们新颖的特征驱动局部卷积( feature-driven local convolution) (f-lconv) 层在每个金字塔级别进一步规范化(regularized)。 这种局部卷积的内核适应来自编码器、流量估计和遮挡概率图(encoder, flow estimate and occlusion probability map)的金字塔特征。 这使得流正则化(flow regularization )既是流感知的又是图像感知的(flow- and image-aware)。 据我们所知,最先进的 CNN 没有探索这种流正则化。

​ 上述贡献的有效性如图 1 所示。 总之,我们提出了一个紧凑的 LiteFlowNet 来估计光流。 我们的网络从传统方法中创新了有用的元素。 例如,对金字塔形 CNN 特征的数据保真度的亮度约束(brightness constraint in data fidelity)和对 CNN 特征扭曲的图像扭曲。 更具体地说,我们提出了一个级联流推理,在每个金字塔级别中都有特征扭曲和流正则化,这在文献中是新的。 总体而言,我们的网络优于 FlowNet [9] 和 SPyNet [21],在公共基准测试中与最近的 FlowNet2 [14] 相当(is on par with)或优于最近的 FlowNet2 [14],同时参数减少 30 倍,比 FlowNet2 快 1.36 倍。

2. 相关工作

​ 在这里,我们简要回顾一些主要的光流估计方法。

变分方法。

​ 自从 Horn 和 Schunck [12] 的开创性工作以来,变分方法一直主导着光流估计。 布洛克斯等人。 通过结合亮度和梯度恒定假设(brightness and gradient constancy assumptions)来解决光照变化( illumination changes) [6]。 布洛克斯等人。 将丰富的描述符( rich descriptors)整合到变分公式中 [7]。 在 DeepFlow [31] 中,Weinza epfel 等人。 建议将多尺度补丁( multi-scale patches)相关联,并将其作为功能中的匹配项。 在补丁匹配过滤器(Patch Match Filter ) [16] 中,Lu 等人。 使用基于超像素的 PatchMatch [4] 建立密集对应。 Revaud 等人。 提出了一种方法 EpicFlow,它使用外部匹配的流( externally matched flows)作为初始化,然后执行插值 [22]。 齐默等人。 设计互补正则化(complementary regularization),利用来自数据项 [36] 中施加的约束的方向信息(directional information)。 我们推断光流并执行流正则化的网络受到在变分方法中使用数据保真度和正则化( data fidelity and regularization)的启发。

​ 我们将其命名为特征驱动的局部卷积 (f-lconv) 层,以便将其与局部卷积 (lconv) 层区分开来,后者的滤波器权重在传统 CNN 中是局部固定的 [29]。

机器学习方法。

​ 布莱克等人。 建议将复杂的图像运动(complex image motion)表示为学习到的基向量的线性组合( linear combination of the learned basis vectors) [5]。 罗斯等人。 将流场的先验概率公式化为 Field-of-Experts 模型 [26],该模型捕获高阶空间统计数据(higher order spatial statistics ) [25]。 孙等人。 研究高阶随机场框架(high order random field framework)中亮度不稳定性的概率模型 [28]。 尼尔等人。 使用过参数化模型( over-parameterization model ) [19] 表示图像运动。 罗森鲍姆等人。 使用高斯混合(Gaussian mixtures)对光流的局部统计(local statistics of optical flow)进行建模 [24]。 给定一组稀疏匹配,Wulff 等人。 建议使用一组基本流场(PCA-Flow)[33]将它们回归到密集流场。 可以证明参数化模型 [5, 19, 33] 可以使用 CNN 有效地实现。

基于 CNN 的方法。

​ 在 Fischer 等人的工作中。 称为 FlowNet [9],需要一个涉及能量最小化的后处理步骤,以减少跨流边界的平滑效应(smoothing effect across flow boundaries)。 这个过程不是端到端可训练的。 在我们的工作中,我们提出了一种端到端方法,该方法使用提出的 f-lconv 层执行网络内流正则化( in-network flow regularization),该方法与变分方法中的正则化( regularization term in variational methods)项起着类似的作用。 在 FlowNet2 [14] 中,Ilg 等人。 引入一个由 FlowNet 变体组成的巨大网络级联(超过 160M 参数)。 级联以模型大小和计算复杂性为代价来提高流精度。 我们的模型使用更高效的架构,其包含的参数比 FlowNet2 少 30 倍,而性能与之相当( is on par with)。 Ranjan 等人的称为 SPyNet [21] 的紧凑网络。 灵感来自空间金字塔。 尽管如此,准确度远低于 FlowNet2。 我们网络的一个小型变体优于 SPyNet,同时模型尺寸小 1.33 倍。 茨威格等人。 提出一个网络来插入第三方稀疏流(third-party sparse flows),但需要现成的边缘检测器 (off-the-shelf edge detector)[37]。 然而,涉及卷积和池化操作的 DeepFlow [31] 不是 CNN,因为“过滤器权重”是不可训练的图像块。 根据 FlowNet 中使用的术语,DeepFlow 使用相关性。

​ 建立点对应的另一种方法是匹配图像块。 扎戈鲁伊科等。 首先介绍 CNN 特征匹配 (CNN-feature matching)[35]。 Güney 等人。 在 MRF [11] 中找到特征表示并制定光流估计( optical flow estimation)。 拜勒等人。 [2] 使用多尺度特征,然后将特征匹配作为流场 [1]。 虽然逐像素匹配可以建立精确的点对应,但实际使用的计算需求太高(即使使用GPU也需要几秒钟)。 作为权衡,Fischer 等人。 [9] 和 Ilg 等人。 [14] 仅在降低的空间分辨率下( only at a reduced spatial resolution)执行特征匹配。 我们通过在采样位置使用扭曲的 CNN 特征的短程匹配(short-ranged matching)和在每个金字塔级别的子像素细化(sub-pixel refinement)来减少特征匹配的计算负担。

​ 我们受到 Spatial Transformer [15] 中使用的特征转换(feature transformation)的启发。 我们的网络使用建议的 f-warp 层根据提供的流场置换给定向量值(given vector-valued feature )特征的每个通道。 与 Spatial Transformer 不同,f-warp 层没有完全约束(not fully constrained),并且是它的松弛版本,因为流场没有参数化。 虽然 FlowNet2 和 SPyNet 中的转换仅限于图像,但我们的决策网络是一个更通用的扭曲网络(warping network ),可以扭曲高级 CNN 特征(warps high-level CNN features.)。 (我们还可以使用 f-warp 层来不同地置换每个通道,当提供多个流场时。 但是,用法超出了这项工作的范围。)

3. LiteFlowNet

LiteFlowNet 由两个紧凑的子网络( compact sub-networks)组成,专门用于金字塔特征提取和光流估计( pyramidal feature extraction and optical flow estimation ),如图 2 所示。由于特征图的空间维度在特征提取时收缩(contracting in feature extraction),流场空间维度在流量估计时扩张(expanding in flow estimation),我们将这两个子网分别称为 NetC 和 NetE。 NetC 将任何给定的图像对转换为两个多尺度高维特征(multi-scale high-dimensional features.)的金字塔。 NetE 由级联流推理和正则化模块组成,用于估计从粗到细的流场。

金字塔特征提取。

如图 2 所示,NetC 是一个双流网络,其中过滤器权重在两个流之间共享。 它们中的每一个都充当特征描述符(feature descriptor),将图像 I 转换为多尺度高维特征(multi-scale high-dimensional features ) {Fk(I)} 的金字塔,从最高空间分辨率 (k = 1) 到最低空间分辨率 (k = L)。 金字塔特征是通过 stride-s 卷积生成的,空间分辨率在金字塔上减少了一个因子s。 在下文中,为简洁起见,我们省略了表示金字塔等级的下标 k。 我们使用 Fi 来表示 CNN 特征Ii 。 当我们讨论金字塔级别的操作时,相同的操作适用于其他级别。

特征扭曲。

​ 在每个金字塔级别,从图像 I1 和 I2 的高级特征 F1 和 F2 推断出流场。 如果 I1 和 I2 在彼此远离的地方被捕获,流推断变得更具挑战性。 借助传统方法 [6, 20] 和最近的 CNN [14, 21] 中用于解决大位移流(addressing large-displacement flow)的图像变形的动机,我们建议通过特征扭曲(f-warp)来减少 F1 和 F2 之间的特征空间距离(feature-space distance)。 具体来说,F2 通过 f-warp 向 F1 弯曲, 通过流量估计 ˙x 到

​ 这允许我们的网络推断 F1 和 F~2 之间具有较小流量幅度( smaller flow magnitude)的剩余流量(更多细节在第 3.1 节中),而不是更难以推断的完整流场。 与传统方法不同,f-warp 是在高级 CNN 特征上执行的,而不是在图像上执行的。 这使得我们的网络在解决光流问题方面更加强大和高效。

图 1:示例证明了 LiteFlowNet 中提议的组件在 i) 特征扭曲、ii) 级联流推理和 iii) 流正则化方面的有效性。 启用的组件用粗体黑色字体表示。

图 2:LiteFlowNet 的网络结构。 为便于表示,仅显示了 3 级设计。 给定一个图像对(I1 和 I2),NetC 生成两个高级特征金字塔(粉红色的 Fk(I1) 和红色的 Fk(I2),k ∈ [1, 3])。 NetE 产生多尺度流场,每个流场都由级联流推理模块 M:S(蓝色,包括描述符匹配单元 M (descriptor matching unit M)和子像素细化单元 S(sub-pixel refinement unit S))和正则化模块 R(regularization module)(绿色 颜色)。 流推理和正则化模块分别对应传统能量最小化方法中的数据保真度和正则化项(data fidelity and regularization terms )。

​ 具体来说,对于任何子像素位移 ˙x,F2 通过 f-warp 向 F1 扭曲,如下所示:


​ 其中

​ 表示输入特征图 F 中定义样本点的源坐标,x = (x, y)> 表示正则网格中的目标坐标 在插值特征图 (interpolated feature map F)Fe上,N(xs) 表示 xs 的四个像素邻居。 上述双线性插值允许在训练期间进行反向传播,因为可以有效地计算其梯度 [15]。

3.1. 级联流推断

图 3:NetE 中的级联流推理模块 M:S。 它由描述符匹配单元 M 和子像素细化单元 S 组成。在 M 中,f-warp 通过在先前金字塔级别估计的放大流场(upscaled flow field ) 2·x↑2 将高级特征 F2 转换为 F~2。 在 S 中,F2 从 M 扭曲了 ˙xm。与剩余流量 Δ ˙xm 相比,在 Δ ˙xs 中的流动边界处存在更多的流量调整。

​ 在 NetE 的每个金字塔级别,高级特征的逐像素匹配产生粗略的流估计。 对粗流的后续细化进一步将其提高到亚像素精度。

第一流推理(描述符匹配)

​ 通过计算各个金字塔特征 F1 和 F2 中高级特征向量的相关性(correlation of high-level feature vectors),建立 I1 和 I2 之间的点对应(Point correspondence)关系如下:

​ 其中 c 是 F1 中的点 x 和 F2 中的点 x+d 之间的匹配成本(matching cost),d ∈ Z 是从 x 的位移向量,N 是特征向量的长度。 成本量 C 是通过将所有匹配成本(matching cost)聚合到 3D 网格中来构建的。

​ 我们通过三种方式减少了成本量处理 [9, 14] 带来的计算负担:1)我们在每个金字塔级别执行短程匹配(short-range matching),而不是在单个级别执行长程匹配;2)我们通过使用我们提出的 f-warp 通过流估计 ˙x 从前一个级别将 F2 扭曲到 F1 来减少 F1 和 F2 之间的特征空间距离(feature-space distance)。 3) 我们只在高空间分辨率的金字塔层级中的采样位置( sampled positions)执行匹配。 在空间维度中插入稀疏成本量以填充未采样位置的遗漏匹配成本(missed matching costs for the unsampled positions)。 前两种技术有效地减少了所需的搜索空间,而最后一种技术降低了每个金字塔级别的匹配频率。在描述符匹配单元 (descriptor matching unit)M 中,剩余流(residual flow) ∆ ˙xm 是通过对成本量 C 进行过滤来推断的,如图 3 所示 。完整的流场 ˙xm 计算如下:

第二流推理(亚像素细化)。

  由于描述符匹配单元中的成本量(cost volume in descriptor matching unit)是通过测量逐像素相关性(pixel-by-pixel correlation)来聚合的,因此来自先前推理的流估计 ˙xm 仅达到像素级精度。 我们在描述符匹配之后引入第二个流推理,如图 3 所示。它旨在将像素级流场 ˙xm 细化到亚像素精度。 这可以防止错误流( erroneous flows)被上采样放大并传递到下一个金字塔级别。 具体来说,F2 通过流量估计( flow estimate ) ˙xm 扭曲为 F~2。 子像素细化单元 S 通过计算剩余流 Δ ˙xs 来最小化 F1 和 F~2 之间的特征空间距离,从而产生更准确的流场 ˙xs 如下:

3.2. 流正则化

​ 级联流推理类似于传统最小化方法中数据保真度的作用。 单独使用数据项,流场中通常存在模糊的流边界和不希望的伪影 [32, 36]。 为了解决这个问题,我们建议使用特征驱动的局部卷积( feature-driven local convolution) (f-lcon) 来规范级联流推理(cascaded flow inference)中的流场。 f-lcon 的操作由像素值扩散的拉普拉斯公式(Laplacian formulation of diffusion of pixel values)得到很好的控制 [30]。 与传统 CNN [29] 中使用的局部卷积 (lcon) 相比,f-lcon 更通用。 不仅为特征图的每个位置使用了一个独特的过滤器,而且过滤器是针对各个流块自适应构建的(adaptively constructed for individual flow patches.)。

​ 考虑一般情况,必须正则化的向量值特征 F 具有 C 个通道和空间维度 M × N。定义 G = {g} 作为 f-lcon 层中使用的过滤器集。 f-lcon 对 F 的操作可以表述如下:

​ 其中“∗”表示卷积,f(x, y, c) 是以 F 中通道 c 位置 (x, y) 为中心的 aw × w 补丁,g(x, y, c) 是对应的 w × w 正则化滤波器 , 和 fg(x, y, c) 是 x = (x, y)> 和 c = 1, 2, …, C 的标量输出。专门用于正则化来自级联流推理(cascaded flow inference)的流场 ˙xs ,我们将 F 替换为 ˙xs。 流正则化模块 R(Flow regularization module ) 定义如下:

​ f-lcon 滤波器需要专门用于平滑流场(smoothing flow field)。 如果流向量在补丁上的变化是平滑的,它应该充当平均滤波器。 跨流边界的流场也不应该过于平滑(not over-smooth)。 我们定义了一个特征驱动的 CNN 距离度量 D,它使用金字塔特征 F1、来自级联流推断的流场 ˙xs 和遮挡概率图 ( occlusion probability map) O 来估计局部流量变化。 总之,D 是由 CNN 自适应构建的单元RD如下:

​ 随着特征驱动距离度量D的引入,f-lcon的每个过滤器g构造如下:

​ 其中 N(x, y) 表示包含以位置 (x, y) 为中心的 ω × ω 像素的邻域。

图 4:f-lcon 过滤器 {g} 的折叠和包装。 3D 张量¯G© 的 (x, y)- 条目是一个大小为 1 × 1 × w2 的 3D 列。 它对应于展开的 w × w f-lcon 滤波器 g(x, y, c) 将应用于向量值特征(vector-valued feature) F 中通道 c 的位置 (x, y)。

​ 在这里,我们提供了一种有效执行 f-lcon 的机制。 对于 C 通道输入 F,我们使用 C 张量 ¯G(1), …, ¯G© 来存储 f-lcon 滤波器组 G。 如图 4 所示,每个 f-lcon 滤波器 g(x , y, c) 折叠成 1 × 1 × w2 3D 列,然后装入 M × N × w2 3D 张量¯G© 的 (x, y)- 条目。 同样的折叠和打包操作也适用于 F 的每个通道中的每个补丁(each patch in each channel)。 这导致 C 张量 F¯(1), …, F¯©。这样,方程(5)可以重新表述 到:

​ 其中“ ”表示张量的相应列之间的逐元素点积(element-wise dot product)。 由于滥用符号,Fg© 表示正则化 C 通道特征 Fg(C-channel feature Fg.) 的第 c 个 xy 切片。 等式 (9) 将张量的维度从 M ×N ×w2(点积之前的右侧)减少到 M × N(左侧)。

4. 实验

网络细节。

  在 LiteFlowNet 中,NetC 生成 6 级金字塔特征,NetE 预测 6 到 2 级的流场。对 2 级的流场进行上采样以产生1级的流场。我们将代价量中的最大搜索半径设置为 3 个像素( 6 至 4 级)或 6 个像素(3 至 2 级)。 匹配是在金字塔特征的每个位置进行的,除了 3 到 2 级是在定期采样的网格(步长为 2)上进行的。 所有卷积层都使用 3 × 3 过滤器,除了描述符匹配 M、子像素细化 S 和流正则化 R 单元中的每个最后一层使用 5×5(级别 4 到 3)或 7×7(级别 2)过滤器。 除了 f-lcon 和 M、S 和 R CNN 单元中的最后一层之外,每个卷积层后面都有一个leaky ReLU(泄漏整流线性单元层)。 更多细节可以在补充材料中找到。

训练详情。

  我们通过以下步骤逐步训练我们的网络:1) NetC 和 NetE 的 M6:S6 训练了 300k 次迭代。 2) R6 与步骤 1 中训练好的网络一起训练 300k 次迭代。 3) 对于级别 k ∈ [5, 2],每次将 Mk:Sk 后跟 Rk 添加到训练网络中。 新的网络级联经过 200k(级别 2:300k)次迭代训练。 过滤器权重从前一级别初始化。 6 到 4、3 和 2 级的学习率最初分别设置为 1e-4、5e-5 和 4e-5。 从 120k、160k、200k 和 240k 迭代开始,我们将其减少了 2 倍。 我们使用与 FlowNet2 [14] 相同的损失权重、L2 训练损失、Adam 优化、数据增强(包括噪声注入)和训练计划 (Chairs [9] → Things3D [17])。 我们将 LiteFlowNet-pre 和 LiteFlowNet 分别表示为在 Chairs 和 Chairs → Things3D 上训练的网络。

  按照作者的建议(https://github.com/lmb-freiburg/flownet2/issues),我们排除了 Things3D 中经历极大流动位移的少量训练数据。

4.1. 结果

​ 我们将 LiteFlowNet 的几种变体与公共基准测试中的最新方法进行了比较,包括 FlyingChairs (Chairs) [9]、Sintel clean and final [8]、KITTI12 [10]、KITTI15 [18] 和 Middlebury [3]。

FlyingChairs

​ 我们首先在表 1 中比较了单独在FlyingChairs上训练的不同性能良好(well-performing networks)的网络的中间结果。报告了平均终点误差 (AEE)。 LiteFlowNet-pre 优于比较网络。 FlowNet2 [14] 没有可用的中间结果,因为每个级联都是在Chairs → Things3D 调度上单独训练的。 由于 FlowNetC、FlowNetS(FlowNet [9] 的变体)和 SPyNet [21] 的参数比 FlowNet2 少,而且后两个模型不执行特征匹配(feature matching),我们还通过删除 匹配部分(matching part)并将 NetC 和 NetE 的模型大小分别缩小了约 4 倍和 5 倍,构建了一个小型的对应LiteFlowNetX-pre 。 尽管 LiteFlowNetX-pre 分别比 FlowNetC 和 SPyNet 小 43 倍和 1.33 倍,但它仍然优于这些网络,并且与使用显式匹配(explicit matching)的 FlowNetC 相当。

表 1:FlyingChairs测试集上的 AEE。 模型在FlyingChairs训练集上训练。

MPI sintel

​ 在表 2 中,LiteFlowNetX-pre 优于 FlowNetS(和 C)[9] 和 SPyNet [21],它们在除 Middlebury 基准之外的所有情况下都在Chairs 上训练。 在 Chairs → Things3D 调度上训练的 LiteFlowNet 比预期的 LiteFlowNet-pre 表现更好。 LiteFlowNet 也优于 SPyNet、FlowNet2-S(和 - C)[14]。 我们还使用广义 Charbonnier 损失 (generalized Charbonnier loss)[27] 在 Sintel 清洁和最终训练数据 (LiteFlowNet-ft) 的混合上微调了 LiteFlowNet。 没有进行噪声增强(noise augmentation),但我们引入了图像镜像(image mirroring)来提高训练集的多样性。 对于 Sintel 最终测试集,LiteFlowNet ft 的性能优于 FlowNet2-ft-sintel [14] 和 EpicFlow [22]。 尽管 DC Flow [34](一种由 CNN 和后处理组成的混合方法)在性能上比 LiteFlowNet 更好,但它的 GPU 运行时间需要几秒钟,这使它在许多应用程序中变得难对付的。 图 5 显示了 Sintel 数据集上的一些流场示例。 LiteFlowNet-ft 和 FlowNet2-ft-sintel 在比较方法中表现最好。 由于 LiteFlowNet 具有流正则化模块,因此在生成的流场中可以观察到更清晰的流边界和更少的伪影。

表 2:不同方法的 AEE。 括号中的值是网络对它们所训练的数据的结果,因此不能直接与其他值进行比较。 Fl-all:所有像素的平均异常值百分比。 内点被定义为 EPE ❤️ 像素或 <5%(内点:正确数据(inliers,可以被模型描述的数据))。 每个类别的最佳数字以粗体突出显示。 (注:1值来自[14]。2我们使用作者提供的代码重新训练模型。3,4,5这些值是使用作者提供的训练模型计算的。4存在较大差异,因为作者错误 评估了视差数据集(disparity dataset)的结果。5 使用了最新数据集。6 在Driving和 Monkaa 上训练 [17])

图 5:来自 Sintel 训练集的不同方法的流场示例,用于干净(顶行)、最终(中间行)传递和最终传递(最后一行)的测试集。 在 LiteFlowNet 的流场中可以很好地保留精细的细节,并且可以观察到较少的伪影。

图 6:来自 KITTI15 的训练集(顶部)和测试集(底部)的不同方法的流场示例。

KITTI

​ LiteFlowNet 始终比 LiteFlowNet-pre 表现更好,尤其是在 KITTI15 上,如表 2 所示。它还优于 SPyNet [21] 和 FlowNet2-S(和 C)[14]。 我们还在 KITTI12 和 KITTI15 混合训练数据 (LiteFlowNet ft) 上微调了 LiteFlowNet,使用与 Sintel 情况相同的增强,除了我们减少了空间运动的增强量以适应驾驶场景。 经过微调,Lite FlowNet 可以很好地泛化到现实世界的数据。 LiteFlowNet ft 优于 FlowNet2-ft-kitti [14]。 图 6 显示了 KITTI 上的一些流场示例。 与 Sintel 的情况一样,LiteFlowNet-ft 和 FlowNet2-ft-kitti 在比较方法中表现最好。 尽管 LiteFlowNet 及其变体在有限的搜索范围内执行金字塔形描述符匹配( pyramidal descriptor matching),但由于引入了特征扭曲 (f-warp) 层,它为真实世界的数据产生了可靠的大位移流场。

Middlebury

​ LiteFlowNet 具有与传统方法相当的性能。 它优于 FlowNetS(和 C)[9]、FlowNet2-S(和 C)[14]、SPyNet [21] 和 FlowNet2 [14]。 在基准测试中,LiteFlowNet-ft 指的是在 Sintel 上微调的那个。

4.2. 运行时间和参数

​ 我们使用配备 Intel Xeon E5 2.2GHz 和 NVIDIA GTX 1080 的机器测量 CNN 的运行时间。对于大小为 1024 × 436 的 Sintel 图像对,时间平均超过 100 次运行。如表中所述 3,LiteFlowNet 的参数比 FlowNet2 [14] 少约 30 倍,运行时快 1.36 倍。 LiteFlowNetX 是 LiteFlowNet 的一种变体,具有较小的模型尺寸且没有描述符匹配(descriptor matching),它的参数比 FlowNetC [9] 少约 43 倍,并且具有可比的运行时间。 LiteFlowNetX 的参数也比 SPyNet [21] 少 1.33 倍。 LiteFlowNet 及其变体是目前用于流量估计的最紧凑的 CNN。

表 3:训练参数和运行时间的数量。 运行时在括号中的模型是使用 Torch 测量的,因此无法与使用 Caffe 的其他模型直接比较。 缩写 LFlowNet 是指 LiteFlowNet。

4.3. 消融研究

​ 我们通过在禁用某些组件的情况下评估不同变体的性能,研究了在椅子上训练的 LiteFlowNet-pre 中每个组件的作用。 AEE 结果汇总在表 4 中,流场示例如图 7 所示。

表 4:在禁用某些组件的情况下,在椅子数据集上训练的 LiteFlowNet 不同变体的 AEE。

图 7:在禁用某些组件的情况下,在椅子上训练的 LiteFlowNet-pre 不同变体的流场示例。 LiteFlowNet-pre 表示为“全部”。 W = 特征变形,M = 描述符匹配,S = 子像素细化,R = 正则化。

特征扭曲。

  我们考虑两个变体 LiteFlowNet pre(WM 和 WMS),并将它们与禁用扭曲的对应物(M 和 MS)进行比较。 M 和 MS 的流场更加模糊。 尤其是 KITTI12 (33%) 和 KITTI15 (25%) 的 AEE 显着下降。 通过特征扭曲,输入到流推理的金字塔特征彼此更接近。 这有助于通过计算剩余流量(residual flow)在后续金字塔级别中进行流量估计。

描述符匹配。

​ 我们将变体 WSR (没有描述符匹配( descriptor matching))与未修改的 LiteFlowNet pre (ALL) 进行比较。 WSR 和 ALL 的流场之间没有明显差异。 由于示例流场的最大位移不是很大(只有 14.7 个像素),因此仍然可以从 WSR 中产生准确的流场。 对于涵盖广泛流量位移(a wide range of flow displacement)(特别是大位移基准,KITTI)的评估,注意到 WSR 的 AEE 退化。 这表明描述符匹配对于解决大位移流( large-displacement flow)很有用。

亚像素细化

​ 与使用亚像素细化显示的WM相比,WMS生成的流场更清晰,包含更多细节。还观察到较小的流伪影(由背景上的浅色表示)。此外,WMS实现了较小的AEE。由于描述符匹配会逐像素显示对应关系( pixel-by-pixel correspondence),因此需要亚像素细化以产生细节保持流场(detail-preserving flow field)。

正规化

​ 禁用正则化的WMS相比ALL,WMS生成的流场的同质区域(由背景上非常暗淡的颜色(very dim color)表示)中存在不需要的伪影。观察到流血( Flow bleeding)和模糊的流动边界。还注意到AEE中的降解。这表明,所提出的特征驱动局部卷积(feature-driven local convolution)(f-lcon)起的作用相当于常规变分方法中的正则项,在平滑流场( smooth flow field)和保持清晰的流动边界(crisp flow boundaries)方面起着至关重要的作用。

5. 结论

​ 我们已经提出了一个用于精确流量估计的紧凑网络。 LiteFlowNet 的性能优于 FlowNet [9],在公共基准测试中与最先进的 FlowNet2 [14] 相当或优于最先进的 FlowNet2 [14],同时运行速度更快,模型尺寸小 30 倍。 (1)金字塔特征提取和特征扭曲(f-warp)帮助我们打破了需要大模型尺寸的精确流网络的事实上的规则。 (2)为了解决大位移和保留细节的流,LiteFlowNet 利用短程匹配来生成像素级流场,(3)并进一步提高级联流推理中对亚像素精度的估计。(4) 为了产生清晰的流边界,LiteFlowNet 通过特征驱动的局部卷积 (f-lcon) 来规范流场。 凭借其轻量级、准确和快速的流计算,我们希望 LiteFlowNet 可以部署到许多应用程序中,例如运动分割、动作识别( motion segmentation, action recognition)、SLAM、3D 重建等。

6. 附录

  LiteFlowNet 由两个紧凑的子网络组成,即 NetC 和 NetE。 NetC 是一个双流网络,其中两个网络流共享同一组过滤器。 NetC 的输入是一个图像对 (I1, I2)。 金字塔5层的6层NetC和NetE的网络架构分别如表5和表6至8所示。 我们使用后缀“M”、“S”和“R”分别突出显示在 NetE 中用于描述符匹配、子像素细化和流正则化单元的层。 当输出是流场时,我们将一个层声明为“流”以突出显示。 我们的代码和训练模型可从 https://github.com/twhui/LiteFlowNet 获得。 视频剪辑 (https://www.youtube.com/watch?v= pfQ0zFwv-hM) 和补充材料可在我们的项目页面 (http://mmlab.ie.cuhk.edu.hk/projects /LiteFlowNet/) 展示了 LiteFlowNet 的性能和我们网络中提议的组件的有效性。

表 5:LiteFlowNet 中 NetC 的网络详细信息。 “#Ch。 In / Out”表示输入或输出特征的通道数。 “conv”表示卷积。

表 6:LiteFlowNet 金字塔级别 5 中 NetE 的描述符匹配单元 (M) 的网络详细信息。“upconv”、“f-warp”、“corr”和“loss”表示分数步长卷积(fractionally strided convolution )(所谓的反卷积)、特征扭曲、相关性和应用训练损失的层。 此外,“conv5a”和“conv5b”表示由 NetC 在金字塔级别 5 生成的图像 I1 和 I2 的高维特征

表 7:金字塔级别 5 的 LiteFlowNet 中 NetE 的子像素细化单元 (S) 的网络详细信息。

表 8:金字塔级别 5 的 LiteFlowNet 中 NetE 的流正则化单元 ® 的网络详细信息。“rgb-warp”、“norm”、“negsq”、“softmax”和“f-lcon”表示图像扭曲 ,两个输入图像之间 RGB 亮度差异的 L2 范数、负平方、3-D 张量中每个 1 × 1 × (#Ch. In) 列的归一化指数运算(normalized exponential operation),以及特征驱动的局部卷积。 此外,突出显示卷积层输出的“conv dist”用作特征驱动的距离度量 D 。Eq。 (7) 在主要稿件中。 “im5a”和“im5b”分别表示金字塔第5层的I1和I2的缩小图像(down-sized images)

​ 【注】“im5a”、“im5b”、“conv5a”、“flow5_S”都是特征图,“conv5a”是netC产生的,其他三者是netE中产生的

LiteFlowNet:用于光流估计的轻量级卷积神经网络相关推荐

  1. 用于光流估计的无监督深度学习DSTFlow

    用于光流估计的无监督深度学习DSTFlow 原文链接 摘要 ​ 最近的工作表明,光流估计可以被表述为一个监督学习问题. 此外,卷积网络已成功应用于此任务. 然而,监督流学习由于缺乏标记的训练数据而变得 ...

  2. 基于Pytorch框架的轻量级卷积神经网络垃圾分类识别系统

    今天在查资料的时候在网上看到一篇文章,博主是基于TensorFlow实现的CNN来完成对垃圾分类识别的,想到最近正好在使用Pytorch就想也做一下,就当是项目开发实践了.先看下动态操作效果: 原文在 ...

  3. 卷积神经网络语音识别_用于物体识别的3D卷积神经网络

    本文提出了一种基于CNN的3D物体识别方法,能够从3D图像表示中识别3D物体,并在比较了不同的体素时的准确性.已有文献中,3D CNN使用3D点云数据集或者RGBD图像来构建3D CNNs,但是CNN ...

  4. 轻量级卷积神经网络的设计技巧

    点击上方"视学算法",星标公众号 重磅干货,第一时间送达 作者:zhouyuangan 来源:CVer 这篇文章将从一个证件检测网络(Retinanet)的轻量化谈起,简洁地介绍, ...

  5. 分组卷积计算量_轻量级卷积神经网络的设计技巧

    作者 | zhouyuangan 来源 | CVer 这篇文章将从一个证件检测网络(Retinanet)的轻量化谈起,简洁地介绍,我在实操中使用到的设计原则和idea,并贴出相关的参考资料和成果供读者 ...

  6. 卷积神经网络精确率不增反降_姿态跟踪论文研读--(1)利用卷积神经网络学习人体姿态估计特征...

    摘要 本文介绍了一种新的结构,就是利用多层卷积神经网络结构和模块化学习技术来习得低维特征和高维弱空间模型,以此来进行人体姿态估计.无约束的人体姿态估计是计算机视觉领域中最困难,最棘手的问题之一,而我们 ...

  7. cnn神经网络可以用于数据拟合吗_使用Keras搭建卷积神经网络进行手写识别的入门(包含代码解读)...

    本文是发在Medium上的一篇博客:<Handwritten Equation Solver using Convolutional Neural Network>.本文是原文的翻译.这篇 ...

  8. LiteFlowNet3:解决对应歧义以获得更准确的光流估计

    LiteFlowNet3:解决对应歧义以获得更准确的光流估计 LiteFlowNet3: Resolving Correspondence Ambiguity for More Accurate Op ...

  9. RAFT:使用深度学习的光流估计

    在这篇文章中,我们将讨论两种基于深度学习的使用光流进行运动估计的方法.FlowNet是第一种用于计算光流的CNN方法,RAFT是目前最先进的估算光流的方法.我们还将看到如何使用作者提供的经过训练的模型 ...

最新文章

  1. HLG 1481 Attack of the Giant n-pus【二分+二分图完全匹配】
  2. python量化交易策略实例_Python进阶量化交易场外篇3——最大回撤评价策略风险...
  3. 在线阅读计算机组成,计算机组成原理RAM.pdf
  4. MacOs桌面自动被打乱的原因
  5. github网址无法访问怎么办?
  6. 使用Jenkins来实现内部的持续集成流程(下)
  7. ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
  8. Python操作Excel最好选择什么模块?
  9. Tricks(四十三)—— 逆序的方式访问一个 list
  10. netsh命令改IP和重置winsock(可解决能上QQ不能上网的问题)
  11. 【181202】VC 屏幕画笔程序源码源代码
  12. Excel VBA 高级编程-出入库系统
  13. 微软Windows字体被诉侵权?我们来聊聊有关网站侵权被诉的那些事。
  14. U8字符串(u8前缀)的作用
  15. 我是如何通过阿里面试的?
  16. 蓝桥杯单片机学习记录(8)(PWM脉宽调制)
  17. JavaScript中的escape() 函数
  18. 有C++/C的java学习
  19. JavaScript起源及发展
  20. Mysql翻页查询数据重复怎么办?

热门文章

  1. 一种简单的2D Roguelike地图生成算法
  2. CSDN浏览器插件评测
  3. JavaScript制作网页时钟
  4. 天桥脑科学研究院推出“对话大脑”院士论坛:国际大咖畅谈脑机接口
  5. ERP系统如何通过存储过程导出报表数据
  6. 选择使用Yarn来做Docker的调度引擎
  7. Mount is denied because the NTFS volume is already exclusively opened. The volume may be already mou
  8. 菜鸟成长手册:路由器技术深入剖解
  9. 在线支付系列【4】支付安全之数字签名
  10. [ NeurIPS 2020 ] 一叶知秋 —— 基于“单目标域样本”的领域自适应方法