Optical Flow & Deep Learning

2020年重新开坑营业,这几周抽空把FlowNet系列的综述翻一下

Optical Flow Estimation in the Deep Learning Age

概述

传统的光流估计是基于能量(energy-based)模型,即将光流估计过程公式化为能量最小化问题。
当前CNN成为光流估计中的SOTA,本文从以下几点论述:

  1. 从早期的CNN光流估计过渡到现状
  2. 讨论和比较技术细节,并总结出哪项具体方法可以获得显著性能提升
  3. 给出在深度学习时代被提出的多种光流方法的综述(包括,有/无监督,多帧方案)

基于DL光流估计

手动设计传统的能量模型 —> 端到端模型

  1. 概述早期用深度学习的方法
  2. 总结多个典型的主流端到端光流估计CNN模型

能量模型 —> CNN

Horn和Schunck用变分法(variational approach)来研究光流估计影响了学术界30多年。
能量最小化模型

  • 数据(data)项, 促进时间上对应的像素保持亮度恒定
  • 空域(spatial smoothness)平滑项,正则化相邻像素有着相似运动来处理光圈的问题

空域连续光流场表示为${\rm u}=(u_x,u_y)$

$I_x,I_y,I_t$是图像光强$I$在$x,y,t$上的偏微分。
实际操作中,会做空域离散化,Horn-Schunck模型改写马尔可夫随机场(MRFs)

$D(\cdot)$:一维数据项;$S(\cdot, \cdot)$:平滑项;$\mathcal{I}$:图像像素集合;$\mathcal{N}$:空间相邻像素

基于此方法,设计更好的能量模型来获得更高的光流精度,在后来渐渐出现了局限。在此之间,出现了Middlebury[4], MPI Sintel[8]和KITTI Optical Flow[14,37]的标杆数据集,这些数据集具有位移大,光照强度变化剧烈,并且还有遮挡。为光流估计提供了公平的比较方式,也促进了更加可信的能量模型。

同时,CNN开始应用到大规模分类任务,并逐步推广到包括光流估计在内的视觉任务。早期的光流法将CNN作为高级特征提取器[2,3,12,16],如图1b。该法的核心思想在于用CNN特征匹配项来替换能量模型中的数据项,而不是用图片强度,图片梯度等手工特征。其他的平滑项和优化策略和之前保持一致。
CNN另一种使用方式,直接用一对输入图片来端到端估计光流的回归结构,如图1c。
FlowNet[10]是第一个端到端采用回归方式的CNN光流估计方案,使用encode-decode的方法。由于稠密光流的GT很难获取,作者使用了椅子的CAD模型来做仿真。此时的端到端方案并没有超过最好的能量模型。
通过设计新的结构,比如堆叠多个网络来优化之前的估计[25]或者构造金字塔结构以由粗到细的方式估计光流[23,41,48]。回归法CNN的好处在于可以在GPU可以实时运行并且精度还比能量模型好。用CNN端到端回归来估计光流已经变成该领域的主导范式,但仍旧还受限于一些问题没有被解决,比如大规模标注数据,以及在没有见过的数据集上精度下降等。为了解决此类问题,正在寻找无监督或者半监督的训练范式。

CNN 特征提取器

早期[18,46,51,61]用孪生网络(Siamese)结构分别来学习两个输入图patch的特征描述子,然后用一个浅层的连接网络来匹配这两个特征表述,(孪生网络的两个子网络的权值是相同的)。提取的特征,输入给MRF的能量模型。主要想法:强大的特征提取器+充分证明的能量模型

PatchBatch[12]
Siamese CNN特征提取器,5层网络

  • 输入:$51 \times 51$Patch
  • 输出:512维向量

然后,采用Generalized PatchMatch[5]作为近似最近邻(ANN, Approximate Nearest Neighbor)算法来实现搜索匹配两张图片中提取的特征。

训练集构建,搜集正相关patch光流和非匹配的patch光流

损失函数,DrLIM loss[17],最小化正项patch的$L_2$平方误差,和最小化负向patch的$L_2$平方误差

Bailer[3]等人的改进,阈值合页嵌入损失(thresholded hinge embedding loss),
3.

4.

其中,$F(P_1)$和$F(P_2)$是第一个图像$P_1$的patch和第二个图像$P_2$的patch的特征描述子,$L_2(P_1,P_2)$计算两个描述子的$L_2$损失;$M^+$和$M^-$是正向数据集和负向数据集。

然而,最小化一些有挑战的正向例子的$L_2$损失(比如,亮度变化、外观差异),会将决策边界移动到不希望的方向,并且导致在靠近决策边界时错分类。因此,Bailer[3]在合页嵌入损失中引入了阈值t,防止网络在最小化$L_2$距离中太过激进,相比于公式3或者DrLIM损失,这使得光流估计更加精确。
5.

同一时间上
Guney和Geiger[16]成功结合了基于MRF模型MAP估计的CNN特征匹配机制。该CNN输出每个像素的描述子,描述子通过计算匹配样本间的特征距离构建。这是一个离散的MAP估计方法来预测光流。为了保证训练效率,Guney和Geiger[16]遵循piece-wise方式,首先单独训练CNN,然后联合训练CNN-MRF。
Bai[2]整体上使用相似的方式,差别在于使用了半全局块匹配(SGM)[19]从a-cost-volume来输出光流,a-cost-volumee被构建通过计算CNN特征距离。
小结,这些方法受益于结合经典能量模型和CNN强力的表达能力。特别地,相比于手工设计的特征,这些方法在物体边界上有更加精准的估计。

端到端光流估计

CNN全部搞定,取代能量最小化的过程。
第一个端到端结构,FlowNet[10],包含两条主结构线,FlowNetS和FlowNetC。两个模型都是基于形似hourglass的架构,包含一个encoder和一个deconder,差别只在encoder部分。在FlowNetS中,一对输入图片简单地concate,然后输入到那个hourglass网络中直接输出光流。FlowNetC中,两个输入图片分别共享一个encoder来提取各自的feature map,然后通过在两个feature map间计算patch级相似度,构建起a-cost-volume。这两个网络的结构,随后会输入进一个网络层中。

对于监督训练,大量图片+光流GT,但是当时只有数百张可用[4,14,37];从现实世界中获取稠密光流GT,直到当前仍是一项挑战。Dosovitskiy[10]利用了自然图像渲染椅子的CAD模型,建立了一个叫”FlyingChairs”的仿真数据集。