Quadratic Video Interpolation

  • 1. 网络整体结构
  • 2. 主要模块
  • 2.1 quadratic flow prediction 模块
  • 2.2 flow reversal 模块
  • 2.3 frame synthesis
  • 3. 实验结果
  • References



这篇文章来自NeurIPS 2019,主要关于视频插帧。视频插帧的目的是在视频中合成新的中间帧,以提高视频的帧率。

以前的关于视频插帧工作的主要特点:

  • 通常假设物体帧间运动是匀速的,所以通常采用线性模型进行插帧

这篇论文的主要创新点是:

  • 考虑视频中帧间物体运动的加速度信息,能够更加准确刻画视频中物体的真实运动轨迹。(为了简单,文中考虑的是匀加速运动)

下面详细分析改论文的主要内容。

1. 网络整体结构

首先来看下,改论文进行二次视频插帧的整体网络框架。

视频插帧技术 opencv 插帧原理_算法

从上图可以看出,为了实现二次视频插帧,作者提出了两个关键模块:quadratic flow prediction 和 flow reversal模块,来实现两个方向的光流计算,用于计算最终的插入视频帧。下面来分析这两个光流计算模块。

2. 主要模块

为了叙述的方便,先对下文中要用到的符号进行简单的说明。

  • 视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_02
  • 不失一般性,下文以在视频插帧技术 opencv 插帧原理_线性模型_03 连续两帧之间插入新的帧 视频插帧技术 opencv 插帧原理_线性模型_04
  • 视频插帧技术 opencv 插帧原理_算法_05 表示像素从 0 时刻到 视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_06
  • 视频插帧技术 opencv 插帧原理_线性模型_07 表示像素在 视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_06
  • 视频插帧技术 opencv 插帧原理_ide_09 表示像素在 视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_06
2.1 quadratic flow prediction 模块

对于一般的运动,有如下的关系式:
视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_11

  • 假设 视频插帧技术 opencv 插帧原理_线性模型_12,即得到常用的线性模型 视频插帧技术 opencv 插帧原理_算法_13 线性模型只需要两点,即 视频插帧技术 opencv 插帧原理_视频处理_14
  • 原文中为了兼顾运动高阶信息和模型复杂性,假设 视频插帧技术 opencv 插帧原理_算法_15,为一个常数,即采用匀加速运动模型。易得,视频插帧技术 opencv 插帧原理_视频处理_16
    这即一个二次模型,需要三个点的信息,即 视频插帧技术 opencv 插帧原理_线性模型_17 三个点的信息。也就是原文中提到的用到了更多相邻帧的信息。(当然,高阶模型必然用到更多的点去进行拟合,自然就用到了更多帧的信息)
    Quadratic Video Interpolation 一文中用到的就是匀加速运动模型。显然,高阶模型能够更加准确刻画一些复杂的运动,如下图所示:
2.2 flow reversal 模块

为了插入高质量的帧,需要用到光流 视频插帧技术 opencv 插帧原理_线性模型_18 (可参考文献[1,2])。为了更好的适应文中提出的二次模型,文中作者提出了“flow reversal layer” 来计算流 视频插帧技术 opencv 插帧原理_线性模型_18, 具体如下:

视频插帧技术 opencv 插帧原理_ide_20

其中 视频插帧技术 opencv 插帧原理_算法_21 表示 视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_22 帧上的像素,视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_23 表示 视频插帧技术 opencv 插帧原理_算法_21 的邻域,视频插帧技术 opencv 插帧原理_算法_25 表示高斯权重,原文实验中 视频插帧技术 opencv 插帧原理_线性模型_26。之所以用到邻域而非单个像素点,是为了使得算法更加鲁棒。

2.3 frame synthesis

实则上得到了backward flow 视频插帧技术 opencv 插帧原理_线性模型_18 之后,已经可以进行新的视频帧的合成(如下面的公式(6),只需将(6)中的 视频插帧技术 opencv 插帧原理_ide_28 替换为 视频插帧技术 opencv 插帧原理_线性模型_18 即可)。但是一般地, 视频插帧技术 opencv 插帧原理_线性模型_18 具有边缘震荡效果(ringing artifacts),文中作者希望对 视频插帧技术 opencv 插帧原理_线性模型_18 进行中值滤波,但为了使得操作更加简单,使用如下方式来模拟一个中值滤波过程:
视频插帧技术 opencv 插帧原理_ide_32
其中 视频插帧技术 opencv 插帧原理_ide_28 表示 视频插帧技术 opencv 插帧原理_线性模型_18 滤波后的值;视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_35,用 视频插帧技术 opencv 插帧原理_线性模型_36 来实现,是可学习的(原文中用U-Net来估计 视频插帧技术 opencv 插帧原理_算法_37),(这个有点类似可形变卷积deformable convolution过程),原文实验中 视频插帧技术 opencv 插帧原理_视频处理_38

在得到了滤波后的 视频插帧技术 opencv 插帧原理_ide_28 之后,同理可得 视频插帧技术 opencv 插帧原理_算法_40;然后,就可以根据下面的公式进行新的视频帧的合成,即

视频插帧技术 opencv 插帧原理_视频处理_41

其中 视频插帧技术 opencv 插帧原理_视频插帧技术 opencv_42

这样,经过上面的三个步骤就可以计算得到新的插入视频帧。(这些操作,都是建立已经估计好光流信息的前提下,至于估计光流的网络,文中用的PWC-Net;当然也可以是其他的光流估计方法。)

注意: 原文中在提到希望对 视频插帧技术 opencv 插帧原理_线性模型_18 进行中值滤波时,作者说到 “While the classical median filter involves indifferentiable operation and cannot be easily trained in our end-to-end model”,个人觉得这句话表述有误,中值滤波仅仅涉及元素的排序及取中值,这与CNN中常用的 视频插帧技术 opencv 插帧原理_视频处理_44 是类似的(它相当于排序及取最大值)。所以原文中的表述说“不可微”是不恰当的

3. 实验结果

在UCF101, DAVIS数据集上的PSNR,SSIM指标

视频插帧技术 opencv 插帧原理_ide_45

References

[1]. High quality estimation of multiple intermediate frames for video interpolation.
[2]. Video frame synthesis using deep voxel flow.