[论文翻译]UPFlow: Upsampling Pyramid for Unsupervised Optical Flow Learning

论文翻译:

UPFlow: Upsampling Pyramid for Unsupervised Optical Flow Learning

摘要:

我们通过改进金字塔网络的上采样和学习,提出了一种用于光流估计的无监督学习方法。我们设计了一个自引导上采样模块来解决金字塔层级间双线性上采样导致的插值模糊问题。此外,我们提出了一种金字塔蒸馏损失,通过蒸馏最精细的流作为伪标签来增加对中间级别的监督。通过将这两个组件集成在一起,我们的方法在多个领先的基准测试集上获得了最佳的无监督光流学习性能,包括MPI - SIntel、KITTI 2012和KITTI 2015。特别地,我们在KITTI 2012上实现了EPE = 1.4,在KITTI 2015上实现了F1 = 9.38 %,分别比之前最好的方法提高了22.2 %和15.7 %。

 图1。一个来自Sintel Final基准的例子。与之前的SelFlow [ 22 ]、EpiFlow [ 44 ]、ARFlow [ 20 ]、SimFlow [ 12 ]和UFlow [ 15 ]等无监督方法相比,我们的方法在目标边缘处得到了更清晰、更准确的结果。

1、引言

光流估计是计算机视觉领域的一项基本任务,已经在视频编辑[ 14 ]、行为识别[ 31 ]、目标跟踪[ 3 ]等领域得到了广泛的应用。早期的解决方案主要是利用优化工具[ 4、33、30]最小化一个预定义的能量函数。目前基于深度学习的方法比较流行,可以分为有监督的[ 11、26]和无监督的[ 29、37]两类。前者利用合成或人工标记的稠密光流作为地面真值来指导运动回归。监督方法在基准评估上取得了领先的性能。然而,真实标签的获取是昂贵的。此外,在合成数据集上训练时,泛化性是另一个挑战。因此,后一类方法,即无监督方法最近引起了更多的关注,它不需要真实的标签。在无监督方法中,常用两幅图像之间的光度损失来训练光流估计网络。为了便于训练,常采用金字塔网络结构[ 34、10],使得全局和局部运动都能以由粗到精的方式捕获。然而,金字塔学习存在两个主要问题,这些问题往往被忽略。我们将这两个问题分别称为自底向上和自顶向下问题。自底向上问题是指金字塔中的上采样模块。现有方法往往采用简单的双线性或双三次上采样[ 20、15],对交叉边缘进行插值,导致预测光流出现模糊伪影。当尺度变细时,这种误差会传播和聚集。图1给出了一个实例。自上而下的问题是指金字塔式的监管。之前领先的无监督方法通常只在网络的最终输出上添加指导损失,而中间金字塔层级没有指导。在这种情况下,由于缺乏训练指导,较粗层次的估计误差会积累,损害较细层次的估计。

为此,我们提出了一种无监督光流估计的增强金字塔学习框架。首先,我们介绍了一个自引导的上采样模块,该模块通过使用自学习的插值流而不是直接的插值来支持无模糊的光流上采样。其次,我们设计了一种新的损失- -金字塔蒸馏损失,通过将最精细的输出流作为伪标签,支持显式学习中间金字塔层级。综上所述,我们的主要贡献包括:

•我们提出了一个自引导的上采样模块来解决金字塔网络中的插值问题,该模块可以生成尖锐的运动边缘;

•我们提出了一个金字塔蒸馏损失,以实现对粗金字塔层级的无监督学习的鲁棒监督;

•我们在多个领先的基准测试集上获得了比现有先进的无监督方法更高的性能。

2、相关工作

2.1 有监督的深层光流

有监督方法需要有标注的流基-真值来训练网络[ 2、43、39、40]。FlowNet [ 6 ]是第一个提出通过在合成数据集FlyingChairs上训练全卷积网络来学习光流估计的工作。随后,Flow Net2 [ 11 ]提出将多个网络进行迭代叠加进行改进。为了覆盖具有大位移的挑战性场景,SpyNet [ 26 ]构建了一个空间金字塔网络,以由粗到精的方式估计光流。PWC-Net [ 34 ]和LiteFlowNet [ 9 ]提出在每个金字塔层级上通过扭曲特征和计算代价体积来构建高效轻量级网络。IRR-PWC [ 10 ]提出通过迭代残差精化方案来设计金字塔网络。最近,RAFT [ 35 ]提出通过4D相关体积和递归网络来估计流场,取得了先进的性能。在本文中,我们工作在不需要真实标签的无监督环境中。

2.2 无监督的深度光流

无监督方法训练[ 1、42]不需要标注,可分为两类:遮挡处理方法和对齐学习方法。遮挡处理方法主要集中在排除无法内在对齐的遮挡区域的影响。为此,许多方法被提出,包括前向后向遮挡检测[ 24 ]和距离图遮挡检测[ 37 ]的遮挡感知损失,数据蒸馏方法[ 21、22、28],以及增强正则化损失[ 20 ]。另一方面,对齐学习方法主要是在多图像对齐约束下改进光流学习,包括普查变换约束[ 29 ]、多帧形成[ 13 ]、核线约束[ 44 ]、深度约束[ 27、45、41、19]和特征相似性约束[ 12 ]。最近,UFlow [ 15 ]通过系统分析多个无监督组件并将其集成到一个统一的框架中,在多个基准上取得了最先进的性能。在本文中,我们提出用我们改进的金字塔结构来改进光流学习。

2.3 图像引导光流上采样

利用从高分辨率图像中提取的引导信息,人们发展了一系列方法对图像、深度或光流进行上采样。早期的联合双边上采样[ 16 ]和引导图像滤波[ 8 ]等工作提出通过从引导图像中提取滤波器来产生上采样结果。最近的工作[ 18、38、32]提出使用深度可训练CNNs提取引导特征或引导滤波器进行上采样。本文搭建了一个高效轻量的自引导上采样模块,用于提取插值流和插值掩模进行光流上采样。通过将该模块插入到深度金字塔网络中,可以获得高质量的结果。

3、算法

3.1 光流估计中的金字塔结构

光流估计可以表示为:

 式中:It和It + 1为输入图像,H为参数为θ的估计模型,Vf为前向流场,表示It中每个像素向It + 1中对应像素的运动。

光流估计模型H通常设计为金字塔结构,如经典的PWC - Net [ 34 ]。我们的网络的管道如图2所示。网络可以分为金字塔编码和金字塔解码两个阶段。在第一阶段,我们通过卷积层从输入图像中提取不同尺度的特征对。在第二阶段,我们使用解码器模块D和上采样模块S↑,以由粗到精的方式估计光流。解码器模块D的结构与UFlow [ 15 ]相同,包含特征扭曲、相关层代价卷构造、代价卷归一化和全卷积层流式解码。与最近的工作[ 10、15]类似,我们也使得D和S↑的参数在所有金字塔层级上共享。综上所述,金字塔解码阶段可以表述如下:

 其中i∈{ 0,1,. . .,N }是每个金字塔层级的索引,较小的数字代表较粗的层级,Fi t和Fi t + 1是从第i层级的It和It + 1中提取的特征,( Vi-1f )是第i - 1层级的上采样流。在实际应用中,考虑到精度和效率,通常将N设置为4 [ 10、34]。

通过对最后一个金字塔层级的输出直接上采样得到最终的光流结果。特别地,在Eq . 2、在以往的方法[ 10、15]中,通常使用双线性插值对流场进行上采样,这样会在物体边界处产生噪声或模糊的结果。在本文中,我们提出了一个自引导上采样模块来解决这个问题,详见Sec。3 . 2 .

 图2。展示了我们网络的方法,其中包含两个阶段:金字塔编码以提取不同尺度下的特征对和金字塔解码以估计每个尺度下的光流。注意,解码器模块和上采样模块的参数在所有金字塔层级上共享。

3.2 自引导上采样模块

在图3左,说明了双线性插值的情况。我们展示了4个圆点代表4个流矢量,分属两个运动源,分别标记为红色和蓝色。然后对缺失区域进行无语义引导的双线性插值。从而在红色运动区域产生混合插值结果,产生非确定性重复插值。为了缓解这一问题,我们提出了自引导上采样模块( SGU ),通过插值流来改变插值源点。SGU的主要思想如图3右所示。我们首先通过点的包围红色运动进行插值,然后利用学习到的插值流(图3 ,绿色箭头)将结果带到目标位置。因此,可以避免混合插值问题。

 图3。双线性上采样(左)的说明和我们的自引导上采样(右)的思想。红点和蓝点是来自不同物体的运动矢量。双线性上采样往往会产生非确定性重复插值。我们提出先在没有交叉边的其他位置插值一个流矢量,然后通过学习的插值流将其带到期望位置。

 图4。说明了我们的自引导上采样模块。我们首先通过双线性上采样对输入的低分辨率流Vi - 1f进行上采样,并使用稠密块计算插值流U i f和插值映射Bi f。然后我们通过扭曲和融合生成高分辨率流。

在我们的设计中,为了保持平面区域的插值不被改变,并且使插值流只应用于运动边界区域,我们学习了一个每像素的权重图来指示应该禁用插值流的位置。因此,我们的SGU的上采样过程是双线性上采样流与插值流对上采样流进行变形得到的修正流的加权组合。SGU模块的详细结构如图4所示。给定来自第i - 1层的低分辨率流Vi - 1f,我们首先通过双线性插值生成更高分辨率的初始流Vi - 1f:

其中p为更高分辨率的像素坐标,s为尺度放大倍数,N为四个相邻像素,w( p / s , k)为双线性插值权重。然后,我们从特征Fit和Fit + 1中计算一个插值流Uif,通过变形来改变Vi - 1f的插值:

 其中" Vi-1 f "是插值流U i f翘曲Vi - 1 f的结果.由于插值模糊只发生在物体边缘区域,因此无需学习平坦区域的插值流。因此,我们使用插值映射Bi f显式地迫使模型仅在运动边界区域学习插值流。最终的上采样结果是" Vi-1f "和" Vi-1f "的融合:

其中υ - 1f是我们的自引导上采样模块的输出,⊙是元素乘子. 

为了产生插值流U i f和插值图Bi f,我们使用具有5个卷积层的密集块。具体来说,我们将特征图F i t和变形后的特征图F i t + 1级联作为稠密块的输入。密集块中每个卷积层的核数分别为32、32、32、16、8。密集块的输出为3个通道的张量图。

我们使用张量图的前两个通道作为插值流,使用最后一个通道通过sigmoid层形成插值图。需要说明的是,对于插值流和插值图的学习没有引入监督。图5展示了来自MPISintel Final数据集的一个例子,与双线性方法相比,我们的SGU在对象边界处产生了更干净和更尖锐的结果。有趣的是,自学习的插值图几乎是一个边缘图,并且插值流也集中在对象边缘区域。

 图5。我们在MPI - Sintel Final数据集上的自引导上采样模块( SGU )的可视化示例。给出了双线性方法和我们的SGU的结果。为了更好地进行比较,在每个样本的右边也显示了缩放补丁。

3.3 金字塔层级的损失引导

在我们的框架中,我们使用几种损失来训练金字塔网络:最终输出流的无监督光流损失和不同金字塔层级的中间流的金字塔蒸馏损失。

 图6。在KITTI ( a )和Sintel ( b )标准测试集上,将我们的方法与最先进的UFlow [ 15 ]方法进行了可视化比较。基准网站可视化的误差图显示在黄色方框标注的差异明显区域的最后两列。

3.3.1 无监督光流损失

为了在无监督环境下学习流估计模型H,我们使用基于亮度恒常性假设的光度损失Lm,即It和It + 1中相同的物体必须具有相似的强度。然而,一些区域可能被运动物体遮挡,使得它们对应的区域不存在于另一幅图像中。由于光度损失不能在这些区域发挥作用,因此我们只在非遮挡区域添加Lm。光度损失可以表示为如下形式:

 式中Mt为遮挡掩模,Ψ为鲁棒惩罚函数[ 21 ]:Ψ ( x ) = ( | x | + ǫ)q,q,ǫ分别为0.4和0.01。在前向-后向检测[ 24 ]估计的遮挡掩膜Mt中,1表示It中未被遮挡的像素,被遮挡的像素为0。为了提高性能,还加入了一些以前有效的无监督成分,包括平滑损失[ 37 ] Ls、普查损失[ 24 ] Lc、增强正则化损失[ 20 ] La和边界膨胀扭曲损失[ 23 ] Lb。为了简单起见,我们省略了这些成分。具体参见前文。这些组件的能力将在4.3第二节中讨论。 

3.3.2 金字塔精馏损失

为了学习每个金字塔层级的中间流,我们提出通过我们的金字塔蒸馏损失Ld将最精细的输出流蒸馏到中间流。直观上,这相当于计算了每个中间输出上的所有无监督损失。然而,光度一致性测量对于低分辨率下的光流学习不够准确[ 15 ]。因此,在中间层执行无监督损失是不合适的,特别是在较低的金字塔层。因此,我们提出使用最精细的输出流作为伪标签,并为中间输出添加监督损失而不是无监督损失。

为了计算Ld,我们直接对最终输出流进行降采样,并评估其与中间流的差异。由于遮挡区域被排除在Lm之外,因此遮挡区域的流估计是有噪声的。为了消除伪标签中这些噪声区域的影响,我们还对遮挡掩码Mt进行降采样,从Ld中排除遮挡区域。因此,我们的金字塔蒸馏损失可以表述如下:

 其中si为金字塔层级i的尺度放大倍数,S↓为下采样函数。

最终,我们的训练损失L表示如下:

 其中λ d、λ s、λ c、λ a和λ b是超参数,我们取λ d = 0.01,λs = 0.05,λc = 1,λa = 0.5和λ b = 1。

4、实验结果

4.1 数据集和实现细节

我们在MPISintel [ 5 ]、KITTI 2012 [ 7 ]和KITTI 2015 [ 25 ]三个数据集上进行实验。我们使用与之前的无监督方法[ 20、15]相同的数据集设置。对于MPI - Sintel数据集,该数据集包含1,041个训练图像对,在两个不同的通道( '干净'和'最后')中呈现,我们使用来自" Clean "和" Final "的所有训练图像来训练我们的模型。对于KITTI2012和2015数据集,我们使用来自KITTI原始数据集的28,058个图像对预训练我们的模型,然后在多视角扩展数据集上微调我们的模型。流式地面真值仅用于验证。

表1。与以往方法的比较。除KITTI 2015基准测试外,我们使用平均EPE误差(越低越好)作为所有数据集的评价指标,其中F1度量使用(越低越好)。缺失项' - '表示未在对比论文中报告结果,( · )表示在无监督训练时使用了测试图像。最好的无监督结果用红色标记,次好的结果用蓝色标记。值得注意的是,对于有监督方法的结果,' + ft '表示模型在目标域上训练,否则,模型在Flying Chairs [ 6 ]和Flying Chairs occ [ 10 ]等合成数据集上训练。对于无监督方法,我们报告了使用目标域图像训练的模型的性能。

我们用PyTorch实现了我们的方法,并在1000k次迭代中完成了批量大小为4的训练。我们模型的总参数量为3.49 M,其中提出的自引导上采样模块有0.14 M的可训练参数。此外,对于分辨率为436 × 1024的Sintel图像对,全模型的运行时间为0.05 s。采用标准平均端点误差( EPE )和错误像素百分比( F1 )作为光流估计的评价指标。

4.2 与现有方法的比较

我们将我们的方法与现有的有监督和无监督方法在领先的光流基准上进行了比较。定量结果如表1所示,我们的方法在所有数据集上都优于之前所有的无监督方法。在表1中,我们用红色标注了无监督方法中最好的结果,用蓝色标注了次好的结果。

与非监督方法的比较。在KITTI 2012在线评测上,我们的方法达到了EPE = 1.4,比之前最好的方法ARFlow [ 20 ]的EPE = 1.8提高了22.2 %。此外,在KITTI 2015在线评测上,我们的方法将UFlow [ 15 ]中11.13 %的F1 - all值降低到9.38 %,提升了15.7 %。

在MPI - Sintel数据集的测试基准上,我们在" Clean "通过率上取得了EPE = 4.68,在" Final "通过率上取得了EPE = 5.32,均优于之前的所有方法。一些定性的比较结果如图6所示,其中我们的方法比最先进的方法UFlow [ 15 ]产生更精确的结果。

与监督方法的比较。如表1所示,还报告了具有代表性的监督方法进行比较。在实际应用中,在无法获得流动真实的情况下,有监督的方法只能使用合成数据集训练模型。相比之下,无监督方法可以直接使用来自目标域的图像来实现。因此,在KITTI和Sintel Final数据集上,我们的方法优于所有在合成数据集上训练的有监督方法,尤其是在KITTI 2015数据集这样的真实场景中。

在域内能力方面,我们的方法也与有监督的方法具有可比性。有趣的是,在KITTI 2012和2015数据集上,我们的方法取得了EPE = 1.4和F1 = 9.38 %,优于PWC - Net [ 34 ]和LiteFlowNet [ 9 ]等经典的有监督方法。

4.3 消融研究

为了分析每个单独组件的能力和设计,我们按照[ 22、12]的设置,在KITTI和MPI - Sintel数据集的训练集上进行了大量的消融实验。为了进行定量比较,报告了所有像素( ALL )、非遮挡像素( NOC )和遮挡像素( OCC )的EPE误差。

表2。非监督成分的消融研究。CL:普查损失[ 24 ],BDWL:边界膨胀扭曲损失[ 23 ],ARL:增强正则化损失[ 20 ],SGU:自引导上采样,PDL:金字塔蒸馏损失。最好的结果用粗体标出。

无监督组件。在我们的框架中使用了几个无监督的成分,包括普查损失[ 24 ] ( CL ),边界膨胀扭曲损失[ 23 ] ( BDWL ),增强正则化损失[ 20 ] ( ARL ),我们提出的自引导上采样( SGU )和金字塔蒸馏损失( PDL )。我们在表中评估了这些成分的影响。2 .在表的第一行。2、在SGU失效的情况下,我们只使用光度损失和平滑损失来训练金字塔网络。对表中的前四行进行比较。2,可以看出,通过结合CL、BDWL和ARL,可以提高光流估计的性能,这与UFlow [ 15 ]中报道的目前最好的性能相当。对表中最后四行进行比较。2,可以看出:( 1 )利用SGU求解自底向上的插值问题可以减小EPE误差;( 2 )我们的PDL自上而下的监督信息也可以提高性能;( 3 )将SGU和PDL结合使用,可以进一步提高性能。

一些定性比较结果如图7所示,其中" Full "表示我们的全方法," W / O SGU "表示我们网络的SGU模块被禁用," W / O PDL "表示在训练时不考虑PDL。与全方法相比,当去除SGU时,预测流量的边界变得模糊,而当去除PDL时,误差增大。

 表3。比较SGU与不同的上采样方法:基本的双线性上采样,图像引导的上采样方法包括JBU [ 16 ]、GF [ 8 ]、DJF [ 17 ]、DGF [ 38 ]和PAC [ 32 ],以及SGU的变体如SGU - FM,其中插值流和权重图都被移除,SGUM,其中唯一的插值图被移除

自引导上采样模块。目前已有JBU [ 16 ]、GF [ 8 ]、DJF [ 17 ]、DGF [ 38 ]和PAC [ 32 ]等利用图像信息指导上采样过程的方法。我们将它们实现到我们的金字塔网络中,并使用相同的损失函数进行训练以进行比较。表3中报告了验证集的平均EPE误差。因此,我们的SGU优于图像引导的上采样方法。其原因在于两个方面:( 1 )直接从图像中提取的引导信息可能不利于光流的无监督学习,尤其是对于易出错的遮挡区域;( 2 )我们的SGU可以从解码器计算光流的对齐特征中学习到细节匹配信息。

在表的最后三行。3,我们还比较了SGU和它的变体:( 1 ) SGU-FM,其中插值流和插值图都被移除,这样上采样的流直接由图4中的稠密块产生,而不发生扭曲和融合;( 2 ) SGU-M,其中插值映射被禁用。虽然SGU - FM的性能略优于基线双线性方法,但比SGU - M差,这表明使用插值流解决插值模糊比直接学习预测新的光流更有效。此外,当插值映射从SGU中移除时,性能有所下降,证明了插值映射的有效性。

 图7。在Sintel Clean (第一个样本)和Sintel Final (第二个样本)上从我们的完整方法中移除SGU或PDL的可视化结果。房间流图和误差图显示在每个样本的右下角。

 表4。比较不同的金字塔损失:无金字塔损失( w / o PL )、通过上采样中间流到图像分辨率计算无监督目标函数的金字塔无监督损失( PUL-up )和通过下采样图像到中间分辨率的金字塔无监督损失( PUL-down )、不掩盖遮挡区域的金字塔蒸馏损失( PDL w / o occ)和金字塔蒸馏损失( PDL )。所有的中间输出流都在Sintel Clean and Final的列车集合上进行评估。

金字塔精馏损失。表中比较了我们的PDL与不同的金字塔损耗。4,其中' w / o PL '表示没有计算金字塔损失,' PUL-up '和' PUL-down '表示通过上采样中间流到图像分辨率并相应地将图像降至中间分辨率的金字塔无监督损失。PDL w / o occ '表示在我们的PDL中,金字塔层上的遮挡掩模被禁用。在" PUL-up "和" PUL-down "中,对每个金字塔层级使用光度损失、平滑损失、普查损失和边界膨胀扭曲损失,并在实验中对它们的权重进行了调整。为了消除变量,在' PUL-up '和' PUL-down '中使用的遮挡掩码采用与我们PDL中相同的方法计算。因此,使用我们的金字塔蒸馏损失训练的模型在每个金字塔级别上都能产生比使用金字塔无监督损失训练的模型更好的结果。这是因为我们的伪标签可以提供比无监督损失更好的低分辨率监督。此外,在我们的PDL中,当遮挡掩码被禁用时,误差增加,表明排除噪声遮挡区域可以提高伪标签的质量。

5、结论

我们通过自底向上和自顶向下的金字塔层级优化,提出了一种无监督学习光流估计的新框架。针对金字塔网络自底向上上采样过程中的插值问题,我们提出了自引导上采样模块来改变插值机制。对于金字塔网络自顶向下的引导,我们提出了金字塔蒸馏损失来改进网络中间层级的光流学习。大量的实验表明,我们的方法可以产生高质量的光流结果,在多个领先的基准测试集上优于之前的所有无监督方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值