摘要:我们通过结合深度学习和经典空间金字塔结构的方式来计算光流。通过使用每个金字塔级别的光流评估warp图像和更新光流,这种方法以一个粗到精的方式评估图像中的大运动。不同于在每个金字塔层级最小化对象函数。我们在每个层级训练网络,以计算光流更新。不像最近的FlowNet光流网络,本网络不需要处理大运动,由网络中的金字塔层级处理大运动。这有几个优点:(1)在模型参数上我们的SpyNet更简单,比FlowNet小96%,这使得网络在嵌入式应用领域非常高效。(2)因为每个层级的光流比较小(小于一个pixel),对一对warp图像应用卷积方法是合适的。(3)不像FlowNet,本网络学习的卷积滤波器与传统的时空滤波器相似,这让我们能够洞察到网络的内部以及如何提升它。在多个数据集上的结果显示我们的方法比FlowNet更加高效。
paper地址:https://arxiv.org/abs/1611.00850
主要贡献点
(1)结合深度学习与传统由粗到精(coarse-to-fine)金字塔结构评估光流;
(2) 提出一个新的模型SpyNet,比FlowNet更快,参数量少96%;
(3)在公共数据集(Sintel, KITTI和MiddleBurry)上,SPyNet实现了比FlowNet更低的错误率。
相关工作
空间金字塔(spatial pyramids)和光流(optical flow) Horn和Schunck提出了解决光流问题的传统结构,他们的工作包含优化计算基于亮度常数项和空间平滑项的数据的和。这些传统方法通常受限于一个事实:他们对图像亮度变化和光流空间结构做非常近似的假设。通过学习的方法计算光流的最大好处是,我们不需要手动更改这些假设。另外,图像亮度变化和空间平滑改变嵌入到网络结构中。利用空间金字塔的思想有一个非常长的历史。解决大运动的基本动机使得人们提出经典的Gaussian和Laplacian金字塔来解决光流评估问题。这些方法在处理小物体的快速运动时通常会出现问题。Brox将大范围匹配包含到传统光流对象函数里面。这种结合图像匹配捕捉大运动和离散优化处理小运动的方法能够获得精确的结果。
时空滤波器(Spatio-temporal filters)Burt和Adelson展示了运动评估的时空模型的理论。Heeger提供了一个计算具体化方法。当使用人类感知来评估效果时,这些方法在那个时候往往不能产生较好的结果。许多基于学习的时空滤波器方法已经出现,例如使用独立的组件分析,稀疏性和多层模型。Hinton使用一个置限玻尔兹曼机学习简单的空间转换,以发现不同的滤波器。Taylor使用合成数据学习"像光流(flow like)"特征,同样使用置限玻尔兹曼机,但是不能评估光流准确率。Dosovitskiy使用深度网络来学习光流评估的时空滤波器,然而这些滤波器并不像那些受神经科学启发设计的经典滤波器。通过使用金字塔结构,我们学习视觉上非常像传统时空滤波器的滤波器,因为这些滤波器通过数据学得,所以通常能够产生较好的光流评估。
方法
(1)空间采样 表示将一个m * n的图像I下采样到 m/2 * n/2。表示上采样。这两个操作也被应用于中间光流场的上采样和下采样。表示使用光流场V 空间扭曲输入图像I,使用双线性插值方式。
(2)推断 表示已经计算好的卷积神经网络模型集,其中每一个模型计算残差光流。k表示第几层。
卷积网络通过以下输入变量计算第k层的残差光流:上一级金字塔的上采样光流和视频帧。第二帧在传入卷积网络之前使用光流进行图像扭曲变换。在第k层级的光流的计算公式如下:
主网络结构图如下:
值得注意的是该网络是分段按依次训练,并不是一次性端到端训练。子网络的网络结构图如下:
其中是上一级的光流场经过上采样后的结果,对于卷积网络,为0。
实验
训练数据集:Flying Chairs datasets
网络模型:5个子卷积网络,其中由5个卷积层组成,每个卷积层后面接一个ReLU激活函数。卷积核大小为7。这5个卷积层的中间通道数依次为。
训练参数: 优化器Adam(),batch=32, 每个epoch 4000次迭代。前60个epoch的学习率是1e-4, 然后降到1e-5直到网络收敛。
数据增广:1.随机改变图像尺寸,缩放因子{1, 2}。2.在[-17, 17]随机旋转图像。3.随机裁剪匹配网络输入的分辨率。4.随机添加高斯白噪声,N(0, 0.1)。5.随机添加色彩晃动(亮度、对比度、饱和度),N(0, 0.4)。
在公共数据集上的实验结果
参数量
综合性能
后记: 我使用GIthub上的一个非官方的Pytorch实现(SPyNet),应用提供的模型权重计算光流,然后warp图像时,结果图像中出现了尾影现象,部分边缘区域像素值为零。