此处主要是整理了关于用深度学习来实现实时视频超分辨的方法。
关于超分辨(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更优