基于深度学习的实时视频超分辨方法

此处主要是整理了关于用深度学习来实现实时视频超分辨的方法。

关于超分辨(Super Resolution, SR)方法github上有人整理过,链接
一篇很全的关于目前SR方面的博客

VESPCN

论文:Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation

这篇论文是推特发表在CVPR2017上的,主要是基于ESPCN引入了运动补偿(Motion Compensation, MC)机制,对比了early fusion、slow fusion、3D convolutions几个方法的性能,实现了实时、多尺度视频超分辨。

网络结构

主要分为运动补偿模块和ESPCN模块。为了有效运用连续多帧输入中的冗余信息,通过左边的运动估计来实现运动补偿,从而使得在内容上更加相似,使得将此方法区分于单图像超分辨。

Spatio-temporal Models

输入连续多帧,目标是实现正中间帧的超分辨,这个步骤的目标函数可以写为:

论文基于ESPCN改进而来,对比了以下三个模型在此应用场景下的性能

模型名称 以前的应用 参数个数 性能
Early fusion 视频分类和运动识别 最多 适合浅层网络
Slow fusion 视频分类 中间 适合深层网络
3D convolution 视频识别 最少 不推荐此模型

参数说明

  • 表示当前层有多少帧,表示输入的是连续的5帧,而超分辨的目标是中间帧,对于Early fusion经过第一层的卷积之后,便成为一个单帧模型;
  • 是当前层某帧下的节点数,举例Slow fusion第一层有4帧,即,每帧下重叠数
  • 为放大倍数,此模型不需要在输入时候做bicubic插值处理,在最后一层做一次卷积操作,使得图像重叠数为1,分辨率为变为

运动补偿机制(MC)

MC中用到了两个深度学习网络来学习中间结果,又通过光流法的思想,利用中间结果结合来做双线性插值。两个深度学习网络分别称为粗光流和精光流,使用的模型还是上面提到的Early fusion,具体每个模型的参数可以参看图中的表格。
这一步骤的优化函数如下:

其中,正则项为huber损失用于平滑

从对比结果中可以看到增加了MC模块之后,残差图明显区别更少,从而有效的增加了冗余输入。

当MC和ESCPN分别初始化之后,再将这两个模型拼接之后训练,损失函数为:

实验与结果

实验结果从以下几个角度说明了性能

  • 增加MC对图像结构更有利
  • 增加MC在时间质量上更优
  • PSNR、SSIM、MOVIE指标更优
  • 在相同性能下时间复杂对于ESPCN更优