《Recurrent Back-Projection Network for Video Super-Resolution》论文阅读之RBPN
Recurrent Back-Projection Network for Video Super-Resolution - CVPR2019
paper:https://arxiv.org/pdf/1801.04590v4.pdf
code:https://github.com/alterzero/RBPN-PyTorch
Project page: https://alterzero.github.io/projects/RBPN.html
作者:Muhammad Haris, Greg Shakhnarovich, and Norimichi Ukita
作者提出:
流行的MISR或者VSR方法一般都是基于准确的运动估计和运动补偿(alignment),这个模式受到运动估计准确度的约束。RBPN希望改进这个模式。
另外,在绝大多数基于CNN的方法中(包括作者之前提出的DBPN),实际上都对图像做了concat以及1*1卷积的操作,或者直接把图片输入到RNN中。concat的方法导致多张图片被同步地处理,增加了训练网络的难度。RNN中,同时处理细微和明显的变化(比如同一图片中运动剧烈和缓慢的物体)是比较困难的。
DBPN中的不停向后传递的residual,实际上能比较好地应对RNN中对subtle 和 significant changes乏力的问题。
应用了循环Encoder-Decoder机制,用于通过反投影合并在SISR和MISR路径中提取的细节。RBPN中的这种机制扩大了RNN中的时间gap(t,t-1),使得时间跨度更大的帧也能被姣好地利用。
VSR + 运动估计的文献,几乎无一例外都要借助于一个精细的运动估计网络或者方法进行运动估计和运动补偿,但是效果一般有限,而且经过一些实验(比如之前的OFRNet,专门推算高分光流)表明,即使PSNR得到了一定的提升,但是这样的运动估计和运动补偿实在太容易引入伪影和帧间的不一致了。对比frame recurrent (FRVSR)和 OFRNet 网络,FRVSR的一致性非常好,这应该得益于循环利用高分帧的机制。而OFRNet相邻帧间的一致性较差,作为视频播放时(25fps)可见雪花状伪影。
1. Related Work
与DBPN论文一样,都是先总结并分类当前主流的SR做法。
主流的Deep VSR(video super-resolution)分为以下四种:
1、Temporal Concatenation:送入网络前将frames直接concat起来
2、Temporal Aggregation:将不同数量的帧(有些分路包含更多的邻居frame)丢进网络分路,最后输出前concat起来
3、RNNs:frames迭代式地进入RNN,最后输出当前这一帧的输出
4、本文提出的RBPN
2. Method
首先RBPN是根据当前帧以及多个邻居帧生成当前帧的SR图像(multi frame->single frame),并不是multi frame -> multi frame
RBPN与本文的兄弟paper图像超分辨率网络DBPN思想比较相似,核心都是残差学习。DBPN是根据浅层的特征来学习残差,RBPN是根据邻居帧以及两者的optical flow来学习残差
2.1 Network Architecture
与DBPN类似,RBPN同样划分为三个stages:
- 网络图中的Projection Module实际上只有一个,循环利用。每次向同一个Projection Module输入LR特征以及Multi-Frame的特征
Encoder-Decoder模型
序列-序列的任务,经常采用Encoder-Decoder模型解决。参考基于Encoder-Decoder模式的机器翻译模型原理及实现
为了解决seq2seq问题,有人提出了encoder-decoder模型,也就是编码-解码模型。所谓编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成输出序列。
encoder-decoder模型虽然非常经典,但是局限性也非常大。最大的局限性就在于编码和解码之间的唯一联系就是一个固定长度的语义向量C。也就是说,编码器要将整个序列的信息压缩进一个固定长度的向量中去。但是这样做有两个弊端,一是语义向量无法完全表示整个序列的信息,还有就是先输入的内容携带的信息会被后输入的信息稀释掉,或者说,被覆盖了。输入序列越长,这个现象就越严重。这就使得在解码的时候一开始就没有获得输入序列足够的信息, 那么解码的准确度自然也就要打个折扣了
网络结构
3. Experiment
- 采用L1 Loss
- 分析采用多少帧过去的帧进行SR重建
可以看出,显然用更多帧进行预测时效果更好。
然而,我在跑这个模型的时候发现,这个模型非常的慢…6frame跑不起跑不起…3frame都难
参考文献:
1.https://blog.csdn.net/nickkissbaby_/article/details/90518831
2.https://blog.csdn.net/duoganniang1006/article/details/89848187