本文总结一下PaperWithCode中VID4榜上的几篇超分论文。
相关的论文可以查看地址
经典视频超分论文总结1 https://blog.csdn.net/longshaonihaoa/article/details/120906670
经典视频超分论文总结2 https://blog.csdn.net/longshaonihaoa/article/details/121910411
经典视频超分论文总结3 https://blog.csdn.net/longshaonihaoa/article/details/121923207
经典视频超分论文总结4 https://blog.csdn.net/longshaonihaoa/article/details/121955797
经典超分论文总结5 https://blog.csdn.net/longshaonihaoa/article/details/122035149
1、Bidirectional Recurrent Convolutional Networks for Multi-Frame Super-Resolution(BRCN, NeurIPS 2015)
https://proceedings.neurips.cc/paper/2015/file/c45147dee729311ef5b5c3003946c48f-Paper.pdfhttps://proceedings.neurips.cc/paper/2015/file/c45147dee729311ef5b5c3003946c48f-Paper.pdf
首次提出使用双向循环卷积神经网络来处理多帧视频超分任务。
网络包含3个组件。1)前向卷积(黑色箭头)学习LR与HR之间的视觉空间独立性。2)循环卷积(蓝色箭头)通过连接连续帧的相邻隐藏层,对视频帧之间的长期时间依赖性进行建模,其中当前隐藏层在前一时间步的隐藏层上进行调节。前向反向均使用来充分利用时间动态。3)条件卷积(红色箭头)将上一时间步的输入层连接到当前隐藏层,使用以前的输入提供长期上下文信息。
隐藏层 网络使用两层隐藏层,表示为:
Xi为输入,Xi+1 相邻帧,Hi+1相邻帧的隐藏层,W权重,B偏置。激活函数为ReLU
输出层 结合了正向反向 条件卷积和前向卷积的输出和偏置,公式如下:
损失函数 MSE loss
2、Image Super-Resolution Using Deep Convolutional Networks(SRCNN,TPAMI2015)
何凯明、汤晓鸥两位大佬的巨作,据说是开创DNN用于图像重建的先河。网上资料巨多,我鹦鹉学舌简单讲讲。
2. 1、网络结构
网络如上图所示,包含三层卷积。分别叫 Patch extraction and representation(块析出与表示)、Non-linear mapping(非线性映射)、Reconstruction(重构)
Patch extraction and representation:对输入图像进行特征提取,卷积+ReLU,ks=9 x 9 c = 64
Non-linear mapping:特征非线性映射,卷积+ReLU,ks=1 x 1 c = 32
Reconstruction:特征重建,生成高分辨率图像,卷积,ks=5 x 5 c = 1
最后c=1是因为只采用Y通道进行重建。
2.2 损失函数 MSE
3、Deep Back-Projection Networks For Super-Resolution(DBPN,CVPR2018)
论文是这么想的:原来的超分要么是a)直接把图像差值到HR大小。 b)最后阶段上采。c)慢慢分几次上采。作者说 你们太单调了,让我们一会上采一会下采。于是提出了以下两组上采和下采的结构。
第一组左边,用于DBPN的上采下采模块
第二组右边,用于Dense-DBPN的上采下采模块
所以将第一组嵌入图1的(d)就是DBPN。将第二组模块嵌入下面的网络,得到Dense-DBPN。
其中DBPN包含S,M,L三种网络,分别对应t=2,t=4,t=6。所以主体结构基本看图就可以了解了。
4、Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network(ESPCN, CVPR2016)
SISR工作,本文比论文3更早。他说你们现在超分都是开始就先上采,然后再重建,所以你们的操作都是在HR空间进行的,但是这样速度太慢了。因此我们直接在LR空间一直卷卷卷,最后再上采好了,这样速度多快。
更重要的是,本文首次提出了一个亚像素卷积层 (sub-pixel convolutional layer)。在网络最后的输出RxR通道,然后重排成RxR尺寸
我就喜欢这种凭空创造点新玩意的创新,膜拜一波
损失函数: MSE
5、Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation(VESPCN,CVPR2017)
论文地址: https://arxiv.org/pdf/1611.05250v2.pdf
代码地址:GitHub - JuheonYi/VESPCN-PyTorch
VSR的工作。看看这名字,比4的ESPCN只多一个V。本文主要是说,SISR不能利用帧间的时序信息,但是其他人利用时序信息又速度太慢。让我来,即利用时序信息,又能满足实时性的要求。
5.1 动量补偿
咱先学习一下这个文章最难搞懂的地方,就是开始对输入进行的Warp操作。该操作图示为
首先一个网络估计粗糙的光流,并生成粗糙的目标帧,这两个再和原始两个帧输入网络,得到精细的光流,和粗糙光流一起得到最后的帧。这个估计光流的网络结构如下:
网络的损失函数 Huber loss, MSE
warp的实现如下。关于这个grid_sample函数可以看这篇知乎文章,讲解的超级详细。
def warp(self, img, flow):
img_compensated = torch.nn.functional.grid_sample(
img,
(-flow.permute(0,2,3,1)+self.identity_flow).clamp(-1,1),
padding_mode='border')
return img_compensated
5.2 时序
空间的有了,咱继续搞搞时空相关性(spatio-temporal correlations)。这里作者对比了early fusion,slow fusion,3D convolution三种。
结果如下表所示,其中SF为单帧,E5为5帧图像早期融合,S5为5帧图像慢速融合,S5-SW为5帧图像3D卷积。可以看出早期融合效果最好。
6、 Deep Video Super-Resolution using HR Optical Flow Estimation(SOF-VSR, TIP2020)
书接上回,咱说了很多论文考虑在LR空间做还是HR空间做SR,或者HR-LR空间互换对图像做SR。这篇论文说,你看你图片在HR,但是你光流是在LR,这怎么能匹配呢?因此通过一个网络将光流也超分到HR空间,这不就可以了嘛!所以名字就叫HR光流估计。
6.1 贡献点
1)将光流和图像的HR合并到一个SOF-VSR net,对光流的SR可以对图像的SR有帮助
2)提出OFRnet得到HR光流,用一种coarse-to-fine的方式
3)SOTA
6.2 整体架构
看图学论文,基本上大体架构看上图就能了解。说一点细节。
1)图中每个经过OFRnet输出的HR光流C=2,即分别为X,Y轴运动,详见上篇中论文5对Warp的部分。对应的经过Space2depth后得到的Flow cube就有2*S*S,S为放大尺寸。
2)每次输入图像为T=2*N+1帧,即包含N帧前面的,N帧后面的,1帧中间预测的。图示为N=1的情况。
3)得到的Draft cube包含2*S*S*N(N帧前面的图像生成的Flow cube经过动量补偿后结果) + 1 (中间帧) + 2*S*S*N(后面的)
4)SRnet输出结果通道为1,因为在输入时将RGB转到YCbCr通道,并只是用亮度维作为输入。
6.3 OFRnet
文章通过OFRnet得到HR光流,虚线部分共享权重,采用循环思想对相同网络多次训练。
1)Level1:F初始化全0; I 为降采的图像 ;三个残差block包含channel split,channel shuffle,depth-wise Conv;第一个卷积C=320, 第二个C=2; 上采使用线性插值
2)Level2:比Level 1多了warp,其余相同
3)Level3: 多了三个卷积Block,sub-pixel Conv 上采
6.4 损失函数
1)超分监督:MSE
2)OFRnet监督:
对每层warp后的结果与中间帧做L1 loss,同时对光流进行L1 正则化限制其平滑度。