Quadratic Video Interpolation
- 1. 网络整体结构
- 2. 主要模块
- 2.1 quadratic flow prediction 模块
- 2.2 flow reversal 模块
- 2.3 frame synthesis
- 3. 实验结果
- References
这篇文章来自NeurIPS 2019,主要关于视频插帧。视频插帧的目的是在视频中合成新的中间帧,以提高视频的帧率。
以前的关于视频插帧工作的主要特点:
- 通常假设物体帧间运动是匀速的,所以通常采用线性模型进行插帧
这篇论文的主要创新点是:
- 考虑视频中帧间物体运动的加速度信息,能够更加准确刻画视频中物体的真实运动轨迹。(为了简单,文中考虑的是匀加速运动)
下面详细分析改论文的主要内容。
1. 网络整体结构
首先来看下,改论文进行二次视频插帧的整体网络框架。
从上图可以看出,为了实现二次视频插帧,作者提出了两个关键模块:quadratic flow prediction 和 flow reversal模块,来实现两个方向的光流计算,用于计算最终的插入视频帧。下面来分析这两个光流计算模块。
2. 主要模块
为了叙述的方便,先对下文中要用到的符号进行简单的说明。
- 不失一般性,下文以在
连续两帧之间插入新的帧
表示像素从 0 时刻到
表示像素在
表示像素在
2.1 quadratic flow prediction 模块
对于一般的运动,有如下的关系式:
- 假设
,即得到常用的线性模型
线性模型只需要两点,即
。
- 原文中为了兼顾运动高阶信息和模型复杂性,假设
,为一个常数,即采用匀加速运动模型。易得,
这即一个二次模型,需要三个点的信息,即三个点的信息。也就是原文中提到的用到了更多相邻帧的信息。(当然,高阶模型必然用到更多的点去进行拟合,自然就用到了更多帧的信息)
Quadratic Video Interpolation 一文中用到的就是匀加速运动模型。显然,高阶模型能够更加准确刻画一些复杂的运动,如下图所示:
2.2 flow reversal 模块
为了插入高质量的帧,需要用到光流 (可参考文献[1,2])。为了更好的适应文中提出的二次模型,文中作者提出了“flow reversal layer” 来计算流
, 具体如下:
其中 表示
帧上的像素,
表示
的邻域,
表示高斯权重,原文实验中
。之所以用到邻域而非单个像素点,是为了使得算法更加鲁棒。
2.3 frame synthesis
实则上得到了backward flow 之后,已经可以进行新的视频帧的合成(如下面的公式(6),只需将(6)中的
替换为
即可)。但是一般地,
具有边缘震荡效果(ringing artifacts),文中作者希望对
进行中值滤波,但为了使得操作更加简单,使用如下方式来模拟一个中值滤波过程:
其中 表示
滤波后的值;
,用
来实现,是可学习的(原文中用U-Net来估计
),(这个有点类似可形变卷积deformable convolution过程),原文实验中
;
在得到了滤波后的 之后,同理可得
;然后,就可以根据下面的公式进行新的视频帧的合成,即
其中
这样,经过上面的三个步骤就可以计算得到新的插入视频帧。(这些操作,都是建立已经估计好光流信息的前提下,至于估计光流的网络,文中用的PWC-Net;当然也可以是其他的光流估计方法。)
注意: 原文中在提到希望对 进行中值滤波时,作者说到 “While the classical median filter involves indifferentiable operation and cannot be easily trained in our end-to-end model”,个人觉得这句话表述有误,中值滤波仅仅涉及元素的排序及取中值,这与CNN中常用的
是类似的(它相当于排序及取最大值)。所以原文中的表述说“不可微”是不恰当的。
3. 实验结果
在UCF101, DAVIS数据集上的PSNR,SSIM指标
References
[1]. High quality estimation of multiple intermediate frames for video interpolation.
[2]. Video frame synthesis using deep voxel flow.