【论文阅读】PWC-Net: CNNs for Optical Flow Using Pyramid, Warping, and Cost Volume

摘要

提出了一个小型而有效的网络模型PWC-Net,根据简单和既定原则设计的金字塔过程,形变,代价体。在一个可学习的特征金字塔中投影,使用当前的光流估计来形变第二张图像的CNN特征。然后使用形变后的特征和第一个图像的特征来构造一个代价体,由CNN处理以估计光流。PWC-Net比FlowNet2模型体积小17倍,并且更容易训练。

核心思想:在保证光流估计质量和精确性的前提下,缩小训练体积。PWCNet将领域知识与深度学习相结合,利用多尺度特征来替换子网络串联,其设计遵循了三个简单原则:金字塔特征提取(Pyramid),光流映射(Warping) 和匹配相关性成本代价衡量(Cost Volume)。其中Warping和Cost Volume都不包含任何学习参数,极大减小了网络模型的体积。

1. 介绍

探索动机:能量最小化方法计算成本太高。FlowNet2证明了串联多个网络可以提高光流估计的质量,但是这样的后果是训练复杂和参数量成倍增加。

针对此问题,PWCNet利用多尺度特征来替换网络串联,其大致网络结构如下。PWCNet首先通过CNN卷积得到多层的特征,然后从低分辨率开始估计光流,并将低分辨率的光流上采样到高分辨率,同时构建cost volume和预测当前分辨率的光流,最后逐步得到最终分辨率的光流结果。

工作目标:SpyNet展示了将经典原理与CNNs相结合的潜力,认为它与FlowNets和FlowNet2的性能上的差距是由于部分经典原理的使用。对于光流的CNN模型,希望将领域知识与深度学习相结合,既提高精度又减小尺寸。

(SpyNet通过将深度学习与两种经典的光流估计原理相结合来解决模型大小问题。SpyNet使用一个空间金字塔网络,并利用初始光流将第二个图像形变向向第一个形变。第一个图像和形变图像之间的运动通常很小。因此,SpyNet只需要一个小网络就可以从这两张图像中估计出运动。)

传统的光流方法通常对原始图像进行预处理,以提取特征。在立体匹配的特殊情况下,代价体更能区分视差(1D光流)的表示。构造一个全代价体计算量大,可以在每个金字塔层级上限制搜索范围,来构造部分代价体。用形变层将不同的金字塔水平连接起来,以估计大位移光流。

2. 以前的工作

变分法。

从粗糙到精细、变分的方法是最流行的光流框架,可以解决复杂的优化问题,但对于实时应用程序来说计算成本很高。一个难以解决的问题是:在粗糙的层次上,小而快速移动的物体消失了。为了解决这个问题,可以将特征匹配嵌入到变分框架中。Epicflow可以有效地将稀疏匹配插值到密集光流中,被广泛用作后处理方法。

大多数性能最好的方法都使用CNNs作为其系统中的一个组成部分。DCFlow:学习CNN特征来构建全代价体,并使用包括EpicFlow也使用的复杂的后处理技术来估计光流。FlowFieldsCNN:学习CNN特征进行稀疏匹配,并通过EpicFlow提高匹配的密度。MRFlow:使用CNN将场景分为刚性和非刚性区域,并使用平面+视差公式估计刚性区域的几何形状和相机运动。然而,它们都不是实时的或端到端可训练的。

最新学习光流的工作。

FlowNetS和FlowNetC,基于U-Net去噪自动编码器,用来估计光流。在FlyingChairs数据集上预训练,但可以在Sintel数据集上获得快速移动物体的运动。然而,网络的原始输出在平滑的背景区域中具有很大的误差,并需要变分改进。将几个基本的FlowNet模型堆叠成一个大模型,形成FlowNet2,在Sintel基准测试上它的性能与最先进水平的方法相当。SpyNet:一个小型的空间金字塔网络。在Sintel基准测试上实现了与FlowNetC模型相似的性能。

另一项研究方向是无监督学习方法。Memisevic和Hinton提出了门限Boltzmann机器以无监督的方式学习图像变换。Long等人通过插值帧来学习用于光流的CNN模型。Yu等人训练模型使损失项最小化,该损失项将数据一致性项与空间平滑性项相结合。

代价体。代价体存储了将像素与下一帧中对应像素相关联的数据匹配代价。所有的方法都是在单个尺度上建立全代价体,计算成本高和内存占用也高。相比之下,本文展示了在多个金字塔层级上构建部分代价体可以得到有效且高效的模型。

数据集。获得现实世界序列的真实光流是极其困难的。早期关于光流的工作主要依赖于合成数据集。这些方法可能对合成数据过拟合,在真实数据上也表现不佳。KITTI和Sintel是目前应用最广泛的光流基准。 KITTI基准是针对自动驾驶应用的,使用LI-DAR收集半稠密的真实值。具有大运动、严重的光照变化和遮挡。Sintel基准测试使用开源图形电影“Sintel”创建的,有两个通道,clean and final。final pass包含强烈的空气效果、运动模糊和相机噪声。

视觉中用于密集预测任务的CNN模型。去噪自动编码器通常用于计算机视觉中的密集预测任务,尤其是在编码器和解码器之间具有跳跃连接的任务。扩张卷积层可以更好地利用上下文信息和改进用于语义分割的细节。这里使用扩张卷积来整合用于光流的上下文信息,并获得适度的性能提高。DenseNet结构以前馈的方式直接将每一层连接到其他每一层,在图像分类任务中已经展示出比传统的CNN层更准确,也更容易训练。此思想可用于密集光流预测。

3. 方法

首先,由于原始图像是阴影和光照变化的变体,我们用可学习的特征金字塔代替不变的图像金字塔。其次,将传统方法中的形变操作作为网络中的一层来估计大运动。第三,由于代价体是一种比原始图像更能辨别光流的表示,我们的网络有一个层来构造代价体,然后由CNN层处理代价体来估计光流。形变层和代价体层没有可学习的参数,减小了模型的大小。最后,PWC-Net使用上下文网络来利用上下文信息改进光流。与能量最小化相比,形变、代价体和CNN层的计算量很小。

组成部分:金字塔特征提取器、光流模型、上下文网络。

特征金字塔提取器。

PWC-Net 使用金字塔结构分别对两张输入图像I1,I2进行多尺度的特征提取,生成特征表示的 L 层(L=6)金字塔,底部(第 0 层)是输入图像数据。随着金字塔层数的增加,使用卷积Filter对第l−1层金字塔层的特征进行下采样,特征尺寸逐步减小。从第一层到第六层,特征通道的数量分别为16、32、64、96、128和196。不同的特征尺度,可以认为具有不同感受野,能够提供更多的特征信息。

图3.传统的从粗糙到精细的方法vs.PWC-Net。左:图像金字塔和通过能量最小化方法改进一个金字塔层级。右:特征金字塔和通过PWC-Net改进一个金字塔层级。PWC-Net使用上采样光流形变第二张图像的特征,计算代价体,并使用CNNs处理代价体。后处理和上下文网络是可选的。箭头表示光流估计的方向,金字塔在相反的方向上构造。

形变层。

Warping layer其实就是FlowNet中的Optical Flow Backwarping操作,用于将生成光流应用到目标图像上来生成映射后的图像数据。

在第L层,使用从L+1层上采样2倍的光流将第二个图像的特征向第一个图像形变: 

其中x是像素索引。

上采样的目的是将上层生成光流统一到当前尺寸,将第二张图像的特征backwarp到第一张图像特征视角,为后续匹配计算原始特征图像和warp特征图像做准备,该层不包含任何学习训练参数。

Warping 操作的目的,就是将上层较为粗糙的 flow 应用到下层的光流估计中,使每一层都是在上一层的基础上对光流进一步 refine,因此这种做法被称为 coarse-to-fine 方法,对于最顶层输入的 coarse flow 初始化为0或None

代价体层。

使用这些特征来构造一个代价体,该代价体存储了像素与下一帧中对应的像素相联系的匹配代价。将匹配代价定义为第一幅图像的特征和第二幅图像的形变特征之间的相关:

N是列向量cl1(x1)的长度。对于L层金字塔,只需要计算有限范围d像素的部分代价体,即|x1-x2|<d。将 Correlation 的搜索范围限制为d,则该搜索窗的长宽为 D = 2d+1 ,Cost volume layer 输出成本量的维度为 (H_l,W_l,D^2) , 其中H_lW_l分别表示第l层金字塔的图像数据宽高。

光流估计器。

用于在每个特征层中输出预测的粗糙光流,一方面为多尺度训练损失提供flow,另一方面为下层提供refine的基础流。它是一个简单的多层 CNN 网络,其采用DenseNet架构,输入是本层计算的Cost volume、第一张图像在本层的提取特征(feature l)和上层的上采样光流(upflow) 的拼接,它的输出是第 l 层的预测光流 flow_l 。每个卷积层的特征通道数分别为128、128、96、64、32,2。
输入是代价体、第一个图像的特征和上采样后的光流,输出是第l层的光流Wl。不同层的估计器有自己的参数,而不是共享相同的参数。重复估计过程直到层L0。

上下文网络。

传统的光流方法使用上下文信息对光流进行后处理。因此使用一个子网络——上下文网络,在金字塔层次上扩大每个输出单元的感受野大小。从光流估计器中提取第二个图像的最后一层的估计光流和特征,并输出一个改进的光流。

它由 7 个卷积层组成,每个卷积层的卷积核为 3×3,不需要降低分辨率。这些层具有不同的膨胀系数(dilation),具有膨胀系数 k 的卷积层意味着层中filter的输入单元与层中filter的其他输入单元在垂直和水平方向上相距 k 个单位。具有大膨胀系数的卷积层扩大了每个输出单元的感受野,而不会产生大量的计算负担。每层的膨胀系数分别为 1、2、4、8、16、1 和 1。
 

训练损失。

设Θ是最终网络中所有可学习参数的集合,它包括特征金字塔提取器和不同金字塔层级的光流估计器(形变层和代价体层没有可学习参数)。设W表示网络预测的第L层金字塔层的光流场,Wl表示对应的监督信号。我们使用FlowNet中提出的相同的多尺度训练损失:

其中I•I2计算向量的L2范数,第二项正则化模型参数。对于微调,我们使用以下鲁棒训练损失:

其中I•I表示L1范数,q<1对离群值的惩罚较小,ǫ是一个小常数。

4. 实验结果

实施细节。

 网络多尺度训练损失中的权重设置为 α6 = 0.32,α5 = 0.08,α4 = 0.02,α3 = 0.01,α2 = 0.005。权衡权重γ设置为0.0004。同时,网络的学习率设置为从 0.0001 开始,在 0.4M、0.6M、0.8M 和 1M 时将学习率减半迭代。

文章将 ground truth flow 缩放 20 倍并对其进行下采样以获得不同级别的监督信号(ground truth flow_l)。要注意的是,和FlowNet一样,文章并没有进一步缩放每个特征层上的监督信号。因此,需要在每个金字塔层中的warping layer缩放上采样流。比如第二层的warping layer中,我们在 image2 的warp之前需要将来自上层第三层(l=3)的上采样流数值扩大 5 倍(= 20/4)。文章使用 7 级金字塔并将 l_0 设置为 2,即模型输出四分之一分辨率的光流并使用双线性插值获得全分辨率光流(与FlowNet一致)。在Cost volume中,使用 4 个像素的搜索范围(range=4,d=9)来计算每个级别的成本量。
 

4.1. 主要结果

MPI Sintel。在Sintel上进行微调时,用式4中的鲁棒损失函数,其中E=0.01,q=0.4。验证了两种微调方案。第一个是PWC-Net-ft,在整个微调过程中使用Sintel训练数据的clean和final pass。第二个是PWC-Net-ft-final,只使用final pass用于微调第二部分。测试第二个方案是因为DCFlow方法只使用训练数据的final pass来学习特征。

在MPI-Sintel基准测试的final pass上PWC-Net的平均端点错误(EPE)比所有已公布的方法都要低(表1)。可以通过去掉DenseNet连接来进一步减少运行时间,即PWC-Net-Small模型,精度比PWC-Net小约5%,但快40%。

表1.在MPI Sintel集上的平均EPE结果。“-ft"表示在MPI Sintel训练集上进行微调,括号中的数字是对这些方法在这些数据上微调后的结果。ft-final是微调时给final pass更多的权重。

PWC-Net在clean pass上不如传统方法准确。许多传统的方法使用图像边缘来改进运动边界,因为两者在clean pass中是完美对齐的。然而,final pass中的图像边缘会被运动模糊、空气变化和噪声破坏。因此,final pass更加真实并富有挑战性。clean pass和final pass的结果表明,PWC-Net可能更适合于图像边缘尝尝被破坏的真实图像。

与FlowNet2相比,PWC-Net在训练集上有更高的误差,但在测试集上有更低的误差,这表明PWC-Net可能有更合适的能力来完成这项任务。表2汇总了不同区域的误差。PWC-Net在运动较大的区域和远离运动边界的区域表现相对较好,这可能是因为它只使用了运动较大的数据进行训练。图4显示了PWC-Net的不同变体在MPI Sintel的训练和测试集上的可视化结果。PWC-Net可以恢复尖锐的运动边界,但在小而快速运动的物体上可能会失败。

表2. 关于在Sintel基准上不同区域、速度(s)和运动边界(d)的距离的详细结果。

图4.在Sintel训练和测试集上的结果。上下文网络、DenseNet连接和微调都可以改善结果。

KITTI。微调时,我们裁剪了896×320大小的图像块,减少了数据增强过程中的旋转、缩放和压缩。批量大小4。在KITTI数据集中大图像块可以获得大型运动。将四分之一分辨率的预测光流进行上采样,与全分辨率下缩放的真实值进行比较。在计算损失函数时去除了无效像素。

表3.KITTI数据集的结果。“ft”表示在KITTI训练集上进行微调,括号中的数字是在数据上已微调方法的结果。

图5.KITTI 2015训练和测试集的结果。微调修复了大面积误差,并恢复了尖锐的运动边界。

如表4所示,FlowNet2和PWC-Net在前景区域有最准确的结果,两者都优于已发表的最佳场景流方法ISF。然而,场景流方法在静态背景区域的误差要低得多。结果表明,光流和场景流的协同进行可以产生更准确的结果。

表4.在KITTI 2015基准测试中,前三个光流和两个场景流方法的详细结果。

4.2. 消融实验

特征金字塔提取器。PWC-Net使用两层CNN在每个金字塔层次上提取特征。表5a总结了分别使用一层(↓)和三层(↑)的两个变体的结果。在训练数据集和验证数据集上容量更大的特征金字塔提取器都始终能取得更好的结果。

表5.消融实验。除非明确说明,否则模型已经在FlyingChairs数据集上进行了训练。

光流估计器。PWC-Net在每一层级光流估计器中使用五层CNN。表5b显示了分别使用四层(↓)和七层(↑)的两个变体的结果。一个大容量的光流估计器产生更好的性能。然而,我们在实验中观察到,一个更深的光流估计器可能陷入糟糕的局部极小值,这可以通过在几千次迭代后检查验证误差来检测,并通过从不同的随机初始化运行来修复。

在训练和验证集上去掉上下文网络会产生更大的误差(表5c)。当模型在FlyingChairs上训练时,去除DenseNet连接会产生更高的训练误差,更低的验证误差。然而,在FlyingThings3D上对模型进行微调后,DenseNet导致了更低的误差。

我们还测试了光流估计器的残差版本,它估计了一个光流增量,并将其添加到初始光流中,以获得改进后的光流。如表5f所示,该残差版本略微改善了性能。

代价体。测试搜索范围以计算代价体,如表5d所示。较大的范围会产生较低的训练误差。然而,这三种设置在Sintel上都有相似的性能,因为每层级上2的范围可以处理在输入分辨率下高达200像素的运动。在KITTI上较大的范围有较低的EPE,可能是因为来自KITTI数据集的图像比来自Sintel的图像有更大的位移。然而,更小的范围似乎迫使网络忽略具有非常大的运动的像素,而更多地关注小运动的像素,从而获得较低的Fl-all分数。

形变。形变让每个金字塔水平上估计的小的光流(增量)来处理大的光流。去除形变层会导致相当大的精度损失(表5e)。没有形变层,PWC-Net仍然产生合理的结果,因为计算代价体的默认搜索范围为4,足以获得低分辨率金字塔水平上大多数序列的运动。

数据集计划。还使用不同数据集计划方案,如表6所示。在FlyingChairs、FlyingThings3d和Sintel依次训练,逐渐提高了性能。

表6.训练数据集计划产生更好的局部最小值。()表示该方法在数据集上进行训练的结果。

模型大小和运行时间。表7总结了不同CNN模型的模型大小。PWC-Net拥有的参数大约比FlowNet2小17倍。通过删除DenseNet连接进一步将PWC-Net-Small减少了2倍,更适合于内存有限的应用程序。

表7. 模型大小和运行时间。PWC-Net-small去掉DenseNet连接。对于训练,FlowNet2的14天的下限为6(FlowNetC) + 2×4 (FlowNetS)。

讨论。

PWC-Net和SpyNet对比:SpyNet使用图像金字塔,而PWC-Net学习特征金字塔。SpyNet为CNNs提供图像,而PWC-Net提供代价体。

代价体是光流搜索空间的一个更具辨别性的表示,因此CNN的学习任务变得更容易。就性能而言,PWC-Net的性能明显优于SpyNet。此外,SpyNet顺序训练,而PWC-Net可以从头进行端到端训练。

FlowNet2通过将几个基本模型堆叠成一个大容量模型。PWC-Net通过将经典原理加入到网络结构中来获得类似或更好的性能。可以用PWC-Net作为构建块来设计大型网络。

5. 结论

开发了一个用于光流的小型但有效的CNN模型,使用了简单和既定的原理:金字塔处理,形变和代价体。将深度学习与领域知识相结合,不仅减小了模型的大小,而且提高了模型的性能。大小比Flownet2小17倍,推断速度快2倍,并且更容易训练。在Sintel final pass和KITTI基准测试上,超过了迄今为止所有光流方法,在Sintel分辨率(1024x436)图像上以大约35 fps的速度运行。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值