深度学习在SR应用论文总结
Image Super-Resolution Using Deep Convolutional Networks (SRCNN )
想法来源
模拟稀疏编码(sparse coding),但稀疏编码需要关注dict的学习和优化,或者是建立有效的映射函数。
贡献
- 首个使用CNN结构实现端到端的超分辨率算法,尽可能地减少了对输入图片的预处理
- 建立了稀疏编码和深度学习在SR上的联系
- 论证了深度学习在超分辨解决中有很好的质量和速度
主要方法流程
- 利用bicubic 插值,将图片转换成HR图片尺寸的大小
- path extraction and representation:用卷积网络提取patches,映射到高维空间(类似稀疏编码的映射到LR dict中)
- Non-linear mapping: 将一个高维空间映射到另一个高维空间中,类似稀疏编码的LR dict 到 HR dict
- Reconstruction: 生成SR图片
训练
三层网络,3*9*9*64,64*1*1*35,35*5*5*1,用MSE作为loss F,激活函数采用ReLU
体会
是把深度学习用到了超分辨上的开山之作,想法来自于稀疏编码器,整个网络框架的构建也是模拟稀疏编码器去解释。
Accelerating the Super-Resolution Convolutional Neural Network (FSRCNN)
提出问题
SRCNN生成SR过慢,不能满足一个实时(24fps)的效果。
1.在LR图片进入SRCNN网络之前需要bicubic插值处理
- 因为插值过后图片变大,在SRCNN的non-linear层需要一个很大的感知域
上述操作都会花费时间成本
贡献
- 采用了反卷积层,实现了原始LR图像到HR图像的端到端合成
- 速度有很大的提升的同时,也能保持效果
- We transfer the convolution layers of the proposed networks for fast training and testing across different upscaling factors, with no loss of restoration quality. (没太理解这句)
共享其中的映射层,如果需要训练不同上采样倍率的模型,只需要fine-tuning最后的反卷积层
网络结构
分为5个部分:feature extraction, shrinking, mapping, expanding, deconvolution
1.feature extraction: 用55的卷积核将图片映射到高维空间
2.shrinking:用11的卷积核并减少卷积核数量以降低参数数量,提高计算效率
3.mapping:使用m个3*3的卷积核实现映射
4.expanding: 是shrinking层的逆过程,shrinking减少了计算的参数输量,但数量少的话,恢复的图片质量会不好。实验证明,如果没有expanding的话,会损失0.3dB
5.deconvolution: 是卷积层的逆操作,实现了上采样的效果。
、
训练
使用了PReLU,,为了避免梯度消失。这样就可以用所有的参数去测试不同网络设计下的最大容量。Loss F用了MSE
体会
利用了反卷积,减小卷积核数量和卷积核大小,虽然网络层数增加,但速度还是有明显的提升。在超分辨问题中,对于原先的插值预处理可以使用反卷积来代替,而且也可以让卷积时候保持相对较小的尺寸,从而提升运算速度。
Accurate Image Super-Resolution Using Very Deep Convolutional Networks(VDSR)
问题
- SRCNN小图片区域的上下文信息
- 训练收敛得太慢
- 网络仅仅适用于一个尺寸
贡献
提出了一个非常深的卷积网络,然而使用过高学习率加速训练速度会导致梯度爆炸,我们用残差学习的方法和梯度裁剪的方法去解决了这个问题。同时还实现了单网络的多尺寸输出问题。相比于其他state-of-art的方法有很好的提升。
网络结构
用了20层网络,除了输入和输出以外,都是3*3*64的卷积层。
训练
- 输入的图片需要进行插值操作变成和HR一样的尺寸
- 在每一层卷积完了之后,对图片进行补零操作,对边缘的恢复效果很好
- Loss F: MSE,使残差和网络预测的距离最小
- 用adjustable gradient clipping 去加速且避免梯度爆炸
- 利用多尺寸(下采用后的LR)数据去训练
- 激活函数:ReLU
效果
边缘锐化
体会
文章最大的特色是模仿了ResNet的思想,加快了训练的收敛速度。而且证明了深层的卷积网络在超分辨上的效果也是非常好的。但为了避免梯度爆炸和收敛较慢的问题,需要用到一个gradient clipping。而且还用了不同的尺寸图片去训练,以适应不同尺寸图片的输入(感觉这个点光是靠数据的补充去达到了一个模型的泛化,但没有从算法设计的角度出发去考虑,虽然效果很好,但觉得这里其实可以再思考一下)
Deeply-Recursive Convolutional Network for Image Super-Resolution(DRCN)
问题
- 一般直觉是更大的感受野可以有更好的效果,感受野的扩大可以用增加网络层数来实现。但因为在SR问题中,用pooling层会丢失信息,而一昧地增加卷积层,会容易overfitting & 模型会变得太大难以保存
贡献
- 提出了一个用深层的递归神经网络的方法。
It utilizes a very large context compared to previous SR methods with only a single recursive layer.(没懂这里) - 用两个方法去提高递归网络:用有监督的递归网络和skip-connection。
网络结构
-
Basic Model
basic model
Unfolding inference network
- Embedding net
将输入图片映射到特征map中,做特征提取 - Inference network
递归网络,利用相同的卷积层 - reconstruction net
恢复最后的重建结果
-
Advanced Model
Advanced Model
加入了skip-connection,并同时采用有监督的方式对递归网络进行训练,最后计算每一层输出的误差和总输出误差(将所有输出加权求和)
效果
边缘较为锐化
体会
这篇论文和上面的一篇VDSR是同一个团队提出的,然后思想都非常相近。希望能使用更深的网络去使得对原始图像的感受野更大。而且本文的skip-connection也是利用了残差学习的思想。
Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution(LapSRN)
问题
- SCRNN的插值再输入计算慢且引入了人为重建的东西,用反卷积的方法去解决这个问题不能很好地学习特征
- 目前使用地L2 Loss不是最好的目标函数,往往会让HR图片过于平滑,但不符合人的感觉
- 在重建图像的时候,如果只进行一次上采样的操作,会在大的采样因子时训练困难
网络结构
- 特征提取
每一级进行卷积提取特征后,进行X2的上采样(反卷积)操作 - 图像重建
将SR同步上采样,然后和提取特征做和,相当于将残差和原图相加做运算 -
Loss F
loss
其中, image.png
x表示LR,y表示HR,r表示res
体会
这个论文提供了一个应对SR问题中multi-scale的一个很好的思路,如果需要大的上采样的时候,可以进行逐步upscaling,首先是小尺寸的图训练速度快,其次是网络层数加深,降低了训练的难度。也利用了残差网络的思想。
Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network(ESPCN)
贡献
- 最后一层才进行上采样,减少了卷积时候的计算量
- 利用个上采样的特征层去进行重建
网络结构
采用了sub-pixel convolutional network,经过三个卷积层之后,得到一个通道数为的和输入图像大小的特征图像,再将特征图像每个像素的个通道排列成一个rxr的区域,对应HR的rxr的子块。
训练
loss F: MSE,激活函数:tanh,tanh在SISR指标上表现更好
主要效果
重建速度快(和SRCNN相比)
体会
提供了一种新的上采样思路,与deconvolution不同的sub-pixel convolution,也可以保证前期采用LR图像减少预算量。感觉像是把一个细节按空间拆分都学习一遍,然后再把学习的结果按空间排序合成到一起。(最后空间排序方式感觉还是一种直觉,细节按空间拆分因为卷积层的滑动可以理解,但最后的一步合成小块个人感觉不能算是卷积的逆过程)
Image Super-Resolution via Deep Recursive Residual Network(DRRN)
问题
之前的工作指出“the deeper the better"在SR问题中仍然适用,但网络过深会导致参数过多
算法新颖性
- 有局部的残差学习也有全局的
- 对残差有递归学习
网络结构
ResNet是链模式,VDSR是全局残差学习,DRCN是全局残差学习+单权重的递归+多目标优化,DRNN是多路径模式的局部残差+全局残差+多权重的递归
效果
- 2x,6x,14x fewer parameters than VDSR,DRCN & RED30
体会
在SR问题中,网络的深度提高仍然会带来好的效果,用残差学习的方式和递归的方式可以加速训练的收敛速度和减少参数数量
Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network(SRGAN)
问题
- 现有的PSNR/MSE(基于像素的方式)客观质量评价分数高的,并不一定是我们感知中的更加逼真的图片。主要原因是只考虑了重建结果的信噪比,但是缺少了高频信息,出现了过度平滑的结果。
贡献
- 设计了一个SRResNet的网络
- 用GAN去计算perceptual loss
- 用MOS评价方法在三个数据集上比较,确认了SRGAN是新的一种state-of-art的方法
网络结构
损失函数
loss Function
content loss
adversarial loss
体会
目前的MSE/PSNR,SSIM评价方法并不是最符合人眼直观感觉的评价方法,本文采用了MOS(Mean Opinion Score),是一种主观评价方法。主观评价方法的成本、耗时都较高。但SRGAN在这个评分上表现较好,而在其他两个上表现并没有SRResNet的好。这也引出了一个问题,目前超分辨是否应该去研究更好的客观质量评价方法,否则如果在不符合人眼直观感觉的评价结果去做算法改进是不是一个有点偏离的方向?
本文也是GAN在SR上的一个开山之作,非常经典。
而且重建速度较慢,不能实现real-time。
而且本文做的只是在采样率为4的时候的重建,这个受限原因是什么?
MemNet: A Persistent Memory Network for Image Restoration(MemNet)
问题
传统的神经网络都是单向传播,属于短期记忆网络。Resnet,RED等网络(有skip-connection,某一状态时被特定的先前状态影响)属于限制的长期记忆网络。而人类大脑更符合长期记忆网络的模式。
贡献
- 利用gate unit建立记忆,自适应学习
- 用了非常深的网络(80层)
- 一个网络解决了图片去噪、SR、JPEG deblocking的问题
网络结构
Multi-supervised MemNet
FENet: 用于提取特征
Memory block: 每个Memory block里由recursive unit和一个gate unit组成,gate unit的实现是将前面recursive block的结果concat到一起,然后经过一个卷积
ReconvNet:重建图像的卷积层
最后的Loss F和DRCN相像
loss function
体会
感觉这个其实和DRCN很相像,只是把其中的卷积层换成了Memory block,然后还结合了DenseNet的方法。但应用还是挺广的。而且这个文章的输入图片尺寸和输出尺寸是一致的,就是说,需要先上采样一下(类似SRCNN),这样会产生较大的计算量。我觉得这里说了很多人的记忆模式,但其实还是在用一个残差网络的思想。
Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR)
想法来源
Resnet在图像分类、检测用的很好,但是在像素这种底层问题(SR)中并不是效果非常好。然后本文试着去掉一些不需要的网络结构
贡献
效果好
网络结构
remove了 batch normalization
singel-scale EDSR
multi-scale MDSR
在multi-scale里共享了部分参数,实现了多采样率重建的功能
采用L1 loss
体会
在NTIRE2017 Super-Resolution Challenge 的冠军夯实了Resnet在SR中的地位,同时也通过多次实验,给出了BN层在SR问题中作用不大的结论,但至于原理,没太懂。不过看实验结果,效果的确非常惊艳,高频分量保持得很好。
总结
- 深度学习在SR中的应用仍旧是越深的网络越好
- 为了避免较大的计算量,可以先输入SR,最后采用反卷积、sub-pixel的方式。
- 由于SR和HR有非常高的关联度,残差网络的思想在SR中应用效果非常好
- 减少参数量的话,可以采用recursive net
- GAN的效果更加符合人直观感受,但由于目前客观质量评价方法其实不是非常符合恰当的方法,GAN在上面的评价并不好。
- 目前SR关注的问题主要是:图像重建准确度,重建速度,多采样率的重建,模型参数数量,模型训练拟合速度。