Real-Time Video SR with Spatio-Temporal Network and MC

最近看了挺多关于video super resolution的论文,赶紧来总结分享一下。

Real-Time Single Image and Video Super-Resolution using an Efficient Sub-Pixel Convolutional Neural Network

首先是2016CVPR的这篇提出的sub-pixel convolutional layer,这是简单的思想,却确实指出了以前做SR思路上的问题。
Architecture
主要思想是:卷积网络应该主要在LR图像上做,然后在最后一层用更多的kernel number生成$r^2$的LR feature maps.然后直接映射出HR图像。
这个Efficient Sub-Pixel Convolution Layer就是对应映射,不需要训练参数,然后将前向训练的时候将训练误差传递到对应的LR feature maps就好了。

非常简单的思想,但有效:1.以前的SR都是将RGB->YCrCb上,对Y做SR;做之前用Bicubic插值成大图,然后卷出结果。2.这导致很多计算量浪费了,同样参数的同样效果效果下,在HR上做卷积运算是在LR上做卷积的(2,3,4,对应超分辨的)倍数 3.另一个角度思考,这意味着Bicubic并没有增加原始数据的信息量,只是为了容易学习;但利用sub-pixel的话,减少了不必要的运算,达到非常快的效果。

看看实验结果:作者用三层卷积网络: 5564->3332->33r^2

Experiment

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

对于VIDEO的复原问题而言,主要分为两步:Register and Fusion, Register就是解决视频模糊抖动等干扰问题,然后让相邻帧提供更多有效信息给参考帧(Reference Frame), 这里一般涉及运动补偿(Motion Estimation/Motion Compensation); Fusion的话主要是如何将获得的复原特征或者复原数据进行融合得到最终复原结果。

其中Register的目标是:让相邻帧更好地提供空域上冗余的有效信息,一般需要知道相邻帧相对于参考帧的dense pixel-wise distance,(个人见解:这些像素应该如何用可以分三类:确定可用,可参考用,不可用);现在学术上一般比较有效的方法:optical flow, CNN optical flow, Spatial Transform等。限制:一般Register都是cost expensive and not end-to-end trainable
Fusion的话:可以简单的堆砌concat,然后分为:early fusion, slow fusion and 3D convolution;其中得到的4D CUBES是序列,也能使用RNN(LSTM)的方法来更好挖掘空域信息。

回到这篇论文,2017 April, Arxiv上出了两篇做VSR还不错的文章,一篇是这个也是Twitter Wenzhe SHI等一帮人做的,上一节那个sub-pixel convolutional就是他们的工作。

Architecture
整个网络是end-to-end的,使用了Spatial Transform Network做Register,然后用Data Fusion融合在一起,最后结合一个Video-based Sub-pixel Convolutional Layer.

Fusion Tricks
其中比较了以上Fusion Tricks:slow fusion用shared kernel parameters则跟3D convolutional layer一样。 Spatial Loss 用的是Huber Loss(具体看论文,结合了flow map gradients); early fusion效果更好,slow fusion则参数小

register net
这个是具体spatial transform network的使用策略,构建了coarse to fine的flow estimation.

实验
网络参数: 300030 pair samples训练集, 5%做验证集, Adam 10-4,
测试时间:512
383 29ms with GPU, 10^3 slower than VESPCN
结果: 9L-E3-MC(9层,3帧,做MC)
Experiment

坚持分享,支持原创