光流DL——2. What Matters in Unsupervised Optical Flow(2020)

这是一篇无监督光流的文章

Abstract

我们系统地比较和分析了无监督光流中的一组关键组件,以确定哪些光度损失、遮挡处理和光滑正则化是最有效的。在此基础上,我们对无监督流模型进行了一些新的改进,如成本体积归一化、停止在遮挡掩模处的梯度、在流场上采样前鼓励平滑,以及调整图像大小的持续自我监督。通过结合我们的调查结果与改进的模型组件,我们能够提出一个新的无监督流技术明显优于以前的无监督的状态和执行与监督 FlowNet2 在KITTI2015数据集,同时也明显比相关方法。

Introduction

光流是计算机视觉中描述两幅图像之间像素级对应关系的关键表示方法。由于光流对于估计运动、视差和语义对应是有用的,光流的改进直接有利于下游任务,如视觉测程、立体深度估计和目标跟踪。由于深度学习的广泛采用,光流技术的性能最近有了显著的改进。由于对于真实图像对难以获得密集光流的地面真实标签,因此有监督光流技术主要使用合成数据[5]进行训练。尽管在合成数据上训练的模型通常可以很好地推广到真实图像,但这两个数据源之间存在着固有的不匹配,这些方法可能难以克服[17,28]

虽然用于训练监督光流技术的非合成数据很少,但训练无监督模型所需的数据是丰富的:训练所需要的是未标记的视频,其中在互联网上免费提供无数小时。如果一种无监督的方法可以利用这些丰富多样的真实数据,它将产生一个光流模型,其训练数据和测试数据之间没有任何不匹配,并可能产生更高质量的结果。无监督光流技术所共享的核心假设是,物体的外观不会随着其移动而改变,这允许使用未标记的视频对这些模型进行训练,如下:该模型用于估计两幅图像之间的流场,其用于扭曲一幅图像以匹配另一幅图像,然后更新模型权值,以最小化这两幅图像之间的差异,并适应某种形式的正则化。

尽管所有的无监督光流方法都有这一基本思想,但它们的细节差别很大。在这项工作中,我们系统地比较、改进和集成关键组件,以进一步理解,并提供一个统一的框架的无监督光流。我们的贡献是:

  • 我们系统地比较了无监督光流的关键组件,如光度损失、遮挡估计技术、自我监督和平滑约束,并分析了其他选择的影响,如预训练、图像分辨率、数据增强和批处理大小。
  • 我们对这些关键组件提出了四个改进:成本体积归一化、用于遮挡估计的梯度停止、在本地流分辨率下应用平滑性,以及用于自我监督的图像大小调整。
  • 我们在一个无监督的光流(简称Uflow)的统一框架中集成了性能最好的改进组件,这设置了一种新的技术状态——甚至与从单帧或立体深度估计流的更复杂的方法相比。

2 Related Work

无监督的方法通过使用一些正则化[22,34]来优化光度一致性来规避对标签的需要,类似于上面提到的经典的基于优化的方法。传统的方法是解决对每个图像对的优化问题,无监督方法学习联合优化一个跨数据集中所有对的目标,并学习一个从图像中回归流场的函数。这种方法有两个优点:1)推理速度快,因为优化只在训练过程中进行;2)通过联合优化整个训练集,信息在图像对之间共享,这可能会提高性能。这种无监督方法被扩展到使用边缘感知平滑[30]、双向Census损失[18]、不同形式的遮挡估计[12,18,30]、自监督[14,15]和多帧[12,15]估计。其他扩展通过外极约束[35]或通过单眼[21,33,36]或立体输入的深度和自我运动模型协同训练光流和自我运动模型引入几何推理[29]

3 无监督光流预备知识

估计光流的任务可以定义如下:
给定两幅彩色图像 I ( 1 ) , I ( 2 ) ∈ R H × W × 3 I^{(1)},I^{(2)}∈R^{H×W×3} I(1),I(2)RH×W×3,我们想要估计流场 V ( 1 ) ∈ R H × W × 2 V^{(1)}∈R^{H×W×2} V(1)RH×W×2,它对于 I ( 1 ) I^{(1)} I(1)中的每个像素表示其对应像素在 I ( 2 ) I^{(2)} I(2)中的相对位置。
请注意,光流是像素运动的非对称表示: V ( 1 ) V^{(1)} V(1) I ( 1 ) I^{(1)} I(1)中的每个像素提供了一个流向量,但是要找到从图像2到图像1的映射,就需要估计 V ( 2 ) V^{(2)} V(2)

在无监督学习的背景下,我们想要找到一个函数 V ( 1 ) = f θ ( I ( 1 ) , I ( 2 ) ) V^{(1)}=f_\theta(I^{(1)},I^{(2)}) V(1)=fθ(I(1),I(2)),参数 θ θ θ从一组图像序列 D = ( I ( 1 ) , I ( 2 ) , . . . , I ( N ) ) D={(I(1),I(2),...,I(N))} D=(I(1),I(2),...,I(N)),因为我们缺乏真实流,所以我们必须定义一个代理目标 L ( D , θ ) \mathcal{L}(D,θ) L(D,θ),如根据一些估计的 V ( 1 ) V^{(1)} V(1)进行扭曲后的 I ( 1 ) I^{(1)} I(1) I ( 2 ) I^{(2)} I(2)之间的光度一致性。为了对于可以从其他图像中重建的像素加强光度一致性,我们还必须估计一个遮挡掩模 O ( 1 ) ∈ R H × W O^{(1)}∈R^{H×W} O(1)RH×W,例如,基于估计的正向和反向流场 O ( 1 ) = g ( V ( 1 ) , V ( 2 ) ) O^{(1)}=g(V^{(1)},V^{(2)}) O(1)=g(V(1),V(2)). L ( ⋅ ) \mathcal{L}(·) L()可能包括其他项,例如,平滑或自我监督。如果 L ( ⋅ ) \mathcal{L}(·) L()相对于θ是可微的,则可以使用基于梯度的优化来恢复最小化该损失的参数 θ ⋆ = a r g m i n ( L ( D , θ ) ) \theta^\star=argmin(\mathcal{L}(D,\theta)) θ=argmin(L(D,θ)).

4 Key Components of Unsupervised Optical Flow

本节比较和改进了无监督光流的关键组件。我们将首先讨论一个基于PWC-Net[25]的模型 f θ ( ⋅ ) f_θ(·) fθ(),并通过成本体积标准化cost-volume normalization进行改进。然后,我们通过目标函数 L ( ⋅ ) \mathcal{L}(·) L()的不同组成部分:遮挡感知的光度一致性、平滑度和自我监督。在这里,我们提出了对每个组件的改进:在遮挡掩模处停止梯度,computing smoothness at the native flow resolution,以及调整图像大小以进行自我监督。我们将通过讨论数据增强和优化来结束这一节。

如图1所示,我们的模型将图像 I ( 1 ) I^{(1)} I(1) I ( 2 ) I^{(2)} I(2)输入到一个共享的CNN中,该CNN生成一个特征金字塔,其中特征被用作扭曲(W)、成本体积计算(C)和流量估计(F)的输入。在每个层 l l l,从上面的估计流 V ( 1 , l + 1 ) V^{(1,l+1)} V(1,l+1)被放大,传递到较低的水平 V ^ ( 1 , l + 1 ) \hat{V}^{(1,l+1)} V^(1,l+1),然后用于扭曲图像2的特征 F ( 2 , l ) F^{(2,l)} F(2,l). 扭曲特征 w ( F ( 2 , l ) , V ^ ( 1 , l ) ) w(F^{(2,l)},\hat{V}^{(1,l)}) w(F(2,l),V^(1,l)) F ( 1 , l ) F^{(1,l)} F(1,l)用于计算成本体积。成本量考虑了所有像素的特征相关性,以及 w ( F ( 2 , l ) , V ^ ( 1 , l ) ) w(F^{(2,l)},\hat{V}^{(1,l)}) w(F(2l),V^(1,l))左右移动4像素的特征相关性,这导致了一个成本卷 C ℓ ∈ R W 2 ℓ × H 2 ℓ × 81 C^{\ell} \in \mathbb{R}^{\frac{W}{2^{\ell}} \times \frac{H}{2^{\ell}} \times 81} CR2W×2H×81中的每个像素与 F ( 2 , l ) F^{(2,l)} F(2,l)中其位置周围的81个像素的相似程度。成本量,图像1的特征,更高级的流和上下文——流估计网络的第二层到最后一层的输出——被输入CNN,估计流 V ( 1 , l ) V^{(1,l)} V(1,l)。在多个流估计级别之后,在第二级有一个流细化的最后阶段,其中流和上下文被输入一个上下文网络(CN),这是一个扩展卷积的堆栈。
在这里插入图片描述
Model Shrinking, Level Dropout and Cost Volume Normalization
PWC-Net被设计用于光流[25]的监督学习,为了处理由于双向损失、遮挡估计和自我监督而增加的无监督学习的内存需求,我们删除了第6级,在所有级别使用32个通道,并向所有流估计模块添加残差连接(图1右下角的“+”)。此外,我们舍弃了所有水平的残差流估计,以进一步规范学习,即我们随机将调整大小和调整的流量估计从上面的水平直接传递到下面的水平。

当使用该模型用于无监督学习而不是监督学习时,另一个不同之处是,无监督损失通常只强加于最终输出(可能是因为光度一致性和其他目标在更高的分辨率下工作得更好)。但如果没有中间流预测的监督损失,该模型很难在更高的层次上学习流估计。我们发现,这是由于在较高层次的特征激活消失,估计成本量值非常低。

我们通过成本量的标准化来解决这个问题。让我们将位于 l l l级的图像 i i i的特征表示为 F ( i , ℓ ) ∈ R H 2 ℓ × W 2 ℓ × d F(i, \ell) \in \mathbb{R} \frac{H}{2^{\ell}} \times \frac{W}{2^{\ell}} \times d F(i,)R2H×2W×d。对于所有图像位置(x, y)和所有考虑的图像位移(u, v),图像1和图像2之间的成本体积是两个图像归一化特征的内积: C x , y , u , v ( ℓ ) = ∑ d ( F x , y , d ( 1 , ℓ ) − μ ( 1 , ℓ ) σ ( 1 , ℓ ) ) ( F x + u , y + v , d ( 2 , ℓ ) − μ ( 2 , ℓ ) σ ( 2 , ℓ ) ) C_{x, y, u, v}^{(\ell)}=\sum_{d}\left(\frac{F_{x, y, d}^{(1, \ell)}-\mu^{(1, \ell)}}{\sigma^{(1, \ell)}}\right)\left(\frac{F_{x+u, y+v, d}^{(2, \ell)}-\mu^{(2, \ell)}}{\sigma^{(2, \ell)}}\right) Cx,y,u,v()=d(σ(1,)Fx,y,d(1,)μ(1,))(σ(2,)Fx+u,y+v,d(2,)μ(2,))我们发现,成本体积归一化提高了无监督光流的收敛性和最终性能。这些发现与之前的工作一致,即使用类似的归一化形式来改进几何匹配[23]。

Unsupervised Learning Objectives 定义一个学习目标 L ( ⋅ ) \mathcal{L}(·) L(),指定了不访问标签的学习光流的任务,是无监督光流的核心问题。与相关的工作[14,15,18,30]类似,我们通过估计光流和在两个方向上应用各自的损耗来训练我们的模型。在这项工作中,我们考虑一个学习目标,它包括三个术语:遮挡感知光度一致性、边缘感知平滑度和自我监督,现在我们将详细讨论。

**光度一致性:**光度一致性项鼓励估计的流通过惩罚光度差异来对齐具有相似外观的图像斑块。测量外观相似度的度量对于任何无监督光流技术都是至关重要的。相关的方法在这里使用了三个不同的目标(有时是结合起来的),(i)广义Charbonnier loss[12,18,22,30,34,35],(ii)结构相似性指数(SSIM)损失[33,21,29],以及(iii) Census损失[18,35,36]。我们在本文中比较了所有这三种损失。广义 Charbonnier loss[24]为 L C = 1 n ∑ ( ( I ( 1 ) − w ( I ( 2 ) ) 2 + ϵ 2 ) α \mathcal{L}_{C}=\frac{1}{n} \sum\left(\left(I^{(1)}-w\left(I^{(2)}\right)^{2}+\epsilon^{2}\right)^{\alpha}\right. LC=n1((I(1)w(I(2))2+ϵ2)α我们的实验使用 ϵ = 0.001 \epsilon=0.001 ϵ=0.001和α=0.5,并与使用改良的L1损失进行比较, L L 1 = ∑ ∣ I ( 1 ) − w ( I ( 2 ) ) + ϵ ′ ∣ \mathcal{L}_{L 1}=\sum\left|I^{(1)}-w\left(I^{(2)}\right)+\epsilon^{\prime}\right| LL1= I(1)w(I(2))+ϵ ,对于SSIM[31]损失,我们使用最近工作[9]的遮挡感知实现,对于Census损失,我们在软汉明距离[18]上使用Census转换的图像补丁。根据下面讨论的实证结果,除非另有说明,否则我们使用Census损失。所有光度损失都使用所有像素[30]的遮挡掩蔽平均值计算。

Occlusion Estimation: 根据定义,被遮挡的区域在其他图像中没有对应关系,所以在计算光度损失时应该忽略它们。相关方法有:
(i)检查一致的前向和后向流[30],
(ii)使用后向流[3]的范围图,
(iii)学习遮挡估计[12]的模型。
我们在这里考虑和比较前两个变量,并通过梯度停止改进第二个变量。除了考虑遮挡外,我们还屏蔽了那些流向量位于图像[30]帧外的“无效”像素。前后一致性检查定义了一个像素,其中流和反向投影的向后流不一致超过一个阈值,因此遮挡掩模被定义为 O ( 1 ) = 1 ∣ V ( 1 ) − w ( V ( 2 ) ) ∣ 2 < α 1 ( ∣ V ( 1 ) ∣ 2 − ∣ w ( V ( 2 ) ) ∣ 2 ) + α 2 O^{(1)}=\mathbb{1}_{\left|V^{(1)}-w\left(V^{(2)}\right)\right|^{2}<\alpha_{1}\left(\left|V^{(1)}\right|^{2}-\left|w\left(V^{(2)}\right)\right|^{2}\right)+\alpha_{2}} O(1)=1V(1)w(V(2))2<α1(V(1)2w(V(2))2)+α2,另一种方法计算“range map” R ( i ) ∈ R H × W R^{(i)}∈R^{H×W} R(i)RH×W软直方图有多少像素在其他图像映射到一个给定的像素,这是由每个流向量分布总权重1的四个像素的终点根据双线性核[30]。没有一个反向流向量指向的像素被假定在另一幅图像中没有对应关系,因此被遮挡。根据Wang等人提出的[30],我们通过阈值为1来计算遮挡掩模 O ( i ) ∈ R W × H O^{(i)}∈R^{W×H} O(i)RW×H。基于下面的经验结果,我们默认使用基于范围图的遮挡估计,但在KITTI上使用前向后一致性检查,显著提高了性能。

Gradient Stopping at Occlusion Masks: 虽然之前的工作没有提到这个问题[30],但我们发现,当遮挡估计是可微的时,将光度损失的梯度传播到遮挡估计中会持续降低性能或导致发散,就像基于范围图的遮挡的情况一样。这种行为是可以预料到的,因为当计算光度差异上的遮挡加权平均时,应该有一个指向具有高光度误差的掩蔽像素的梯度。我们通过在遮挡掩模处停止梯度来解决这个问题,从而消除了发散,提高了性能。

Smoothness: 在传统方法[3,10,24]和最近的无监督方法[34,22,30,18,33,36,21,12,29,35]中,通常使用不同形式的平滑度来规范光流。在这项工作中,我们考虑了边缘感知的一阶和二阶平滑性[27],其中流被鼓励将它们的边界与图像 I ( 1 ) I^{(1)} I(1)中的视觉边缘对齐。在形式上,我们将第k阶平滑度定义为:
L s m o o t h ( k ) = 1 n ∑ exp ⁡ ( − λ 3 ∑ c ∣ ∂ I c ( 1 , ℓ ) ∂ x ∣ ) ∣ ∂ k V ( 1 , ℓ ) ∂ x k ∣ + exp ⁡ ( − λ 3 ∑ c ∣ ∂ I c ( 1 , ℓ ) ∂ y ∣ ) ∣ ∂ k V ( 1 , ℓ ) ∂ y k ∣ \mathcal{L}_{s m o o t h(k)}=\frac{1}{n} \sum \exp \left(-\frac{\lambda}{3} \sum_{c}\left|\frac{\partial I_{c}^{(1, \ell)}}{\partial x}\right|\right)\left|\frac{\partial^{k} V^{(1, \ell)}}{\partial x^{k}}\right|+\exp \left(-\frac{\lambda}{3} \sum_{c}\left|\frac{\partial I_{c}^{(1, \ell)}}{\partial y}\right|\right)\left|\frac{\partial^{k} V^{(1, \ell)}}{\partial y^{k}}\right| Lsmooth(k)=n1exp(3λc xIc(1,) ) xkkV(1,) +exp(3λc yIc(1,) ) ykkV(1,)

Smoothness at Flow Resolution: 一个我们还没有看到解决的问题是,在 l l l级应该应用平滑。由于我们遵循常用的估计 l = 2 l=2 l=2处光流的方法,即在输入分辨率的四分之一处,然后通过双线性插值进行上采样,因此我们的模型产生了分段的线性流场。因此,只有每四个像素可能有一个非零的二阶导数,这可能不会与相应的图像边缘对齐,从而降低了边缘感知平滑度的有效性。为了解决这个问题,我们在 l = 2 l=2 l=2级应用平滑处理,并对图像进行下采样,而不是对流进行上采样。这当然不会影响在原始图像分辨率下进行的评估。

Self-supervision: 无监督光流中自我监督的思想是将学习到的模型应用于一对图像上生成光流标签,然后对图像进行修改,使流估计更加困难,训练模型恢复原估计的流[14,15]。由于我们看到了这种技术在学习超出图像边界的像素的流估计方面的主要用途——成本-体积计算没有信息,光度损失不适用——我们建立和改进了关于自监督图像作物[14]的想法。对于我们的自我监督目标,我们将我们的模型应用到完整的图像上,通过从每条边缘去除64个像素来裁剪图像,再次应用模型,并使用从完整图像中裁剪估计的流作为从裁剪图像中得到的流估计的监督。我们将自我监督目标定义为遮挡加权的夏博尼尔损失,它只考虑裁剪图像的“学生”流中低前后一致性和原始图像的“教师”流中高前后一致性的像素,类似于DDFlow[14]。

Continual Self-supervision and Image Resizing: 与相关工作不同的是,我们不是首先训练然后冻结一个教师模型来监督一个单独的学生模型,而是有一个单一的模型来监督自己,这简化了方法,减少了所需的内存,并允许自我监督信号不断改善。为了稳定学习,我们停止将自我监督目标的梯度传播到“教师”流中。此外,在我们将图像作物输入模型之前,我们调整其大小以匹配原始分辨率(并相应地重新缩放自生成的流标签),以使自我监督的例子更能代表原始大小的图像边界之外的流推断问题。

Optimization: 为了训练我们的模型 f θ ( ⋅ ) f_θ(·) fθ(),我们最小化了一个损失的加权和: L ( D , θ ) = w photo  ⋅ L photo  + w smooth  ⋅ L smooth  + w self  ⋅ L self  \mathcal{L}(D, \theta)=w_{\text {photo }} \cdot \mathcal{L}_{\text {photo }}+w_{\text {smooth }} \cdot \mathcal{L}_{\text {smooth }}+w_{\text {self }} \cdot \mathcal{L}_{\text {self }} L(D,θ)=wphoto Lphoto +wsmooth Lsmooth +wself Lself RGB图像值被缩放到[−1,1],并通过随机交换颜色通道和随机移动色调来增强。另外,Sinterl图像被随机地向上/向下和左/右翻转。所有模型都使用Adam[13]( β 1 = 0.9 , β 2 = 0.999 , ϵ = 1 0 − 8 β_1=0.9,β_2=0.999, \epsilon=10^{−8} β1=0.9,β2=0.999,ϵ=108)进行训练,m步的学习速率为 1 0 − 8 10^{−8} 108,然后是15m步,在此期间学习速率呈指数衰减到 1 0 − 8 10^{−8} 108。所有的消融实验都使用批大小为32的m=50K,但最终的模型使用批大小为1的m=1M进行训练,这产生了略微更好的性能,如下所述。不管怎样,训练都需要三天的时间。在Sintel和KITTI上的实验始于一个最初在飞行椅上训练的模型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值