大部分文章这篇博客介绍的很详细:
https://blog.csdn.net/aBlueMouse/article/details/78710553
1、SRCNN(第一次将深度学习应用于SR)
2、FSRCNN(对SRCNN提速,反卷积+小的卷积核)
3、ESPCN(亚像素卷积层)
4、VDSR(全局残差学习)
5、DRCN(全局残差学习+单权重的递归学习+多目标优化)
6、RED(对称的卷积层-反卷积层)
7、DRRN(多路径模式的局部残差学习+全局残差学习+多权重的递归学习)
8、LapSRN(逐步上采样,一级一级预测残差,提出了一种新的多尺度超分辨率系统(MDSR)和训练方法,可以在一个模型中重建不同尺度因子的高分辨率图像)
9、SRDenseNet(引入dense block)
10、SRGAN(SRResNet)(引入GAN和感知损失)
11、EDSR(2017年冠军模型,改进SRResNet)
以下对两篇文章做详细介绍
SRGAN
问题:当我们超分辨率在大尺度因子时,如何恢复更精细的纹理细节?
在这篇文章中,将生成对抗网络(Generative Adversarial Network, GAN)用在了解决超分辨率问题上。文章提到,训练网络时用均方差作为损失函数,虽然能够获得很高的峰值信噪比(psnr),但是恢复出来的图像通常会丢失高频细节(因为它针对一个一个像素优化,而如高层纹理细节的能力非常有限),导致图像向更加平滑的方向发展(产生边缘伪影),使人不能有好的视觉感受。
SRGAN利用感知损失(perceptual loss)和对抗损失(adversarial loss)来提升恢复出的图片的真实感。感知损失是利用卷积神经网络提取出的特征,通过比较生成图片经过卷积神经网络后的特征和目标图片经过卷积神经网络后的特征的差别,使生成图片和目标图片在语义和风格上更相似。
如图可以看出来:
采用MSE损失的SRResNet的psnr很高,图像更平滑,但自然细节纹理表现很差;
SRGAN虽然psnr不高 ,但相对来说,细节纹理表现要好一点。
GAN网络结构
Generator network的作用是尽可能的产生一张高分辨率的图片,在生成网络部分(SRResNet)部分包含多个残差块,每个残差块中包含两个3×3的卷积层,卷积层后接批规范化层(batch normalization, BN)和PReLU作为激活函数,两个2×亚像素卷积层(sub-pixel convolution layers)被用来增大特征尺寸。
Discriminator network的作用是判断Generator生成的图片是高分辨率图片的概率,在判别网络部分包含8个卷积层,随着网络层数加深,特征个数不断增加,特征尺寸不断减小,选取激活函数为LeakyReLU,最终通过两个全连接层和最终的sigmoid激活函数得到预测为自然图像的概率。
损失函数
整体损失函数:
内容损失
(1)均方损失(MSE)
(2)基于训练好的以ReLU为激活函数的VGG模型的损失函数
对抗损失
MSE loss与VGG loss对比
EDSR
(1)EDSR最有意义的模型性能提升是去除掉了SRResNet多余的模块,从而可以扩大模型的尺寸来提升结果质量。
EDSR在结构上与SRResNet相比,就是把批规范化处理(batch normalization, BN)操作给去掉了。文章中说,原始的ResNet最一开始是被提出来解决高层的计算机视觉问题,比如分类和检测,直接把ResNet的结构应用到像超分辨率这样的低层计算机视觉问题,显然不是最优的。由于批规范化层消耗了与它前面的卷积层相同大小的内存,在去掉这一步操作后,相同的计算资源下,EDSR就可以堆叠更多的网络层或者使每层提取更多的特征,从而得到更好的性能表现。EDSR用L1范数样式的损失函数来优化网络模型。在训练时先训练低倍数的上采样模型,接着用训练低倍数上采样模型得到的参数来初始化高倍数的上采样模型,这样能减少高倍数上采样模型的训练时间,同时训练结果也更好。
EDSR总体结构:
(2)提出了一种新的多尺度超分辨率系统(MDSR)和训练方法,可以在一个模型中重建不同尺度因子的高分辨率图像。
MDSR的中间部分还是和EDSR一样,只是在网络前面添加了不同的预训练好的模型来减少不同倍数的输入图片的差异。在网络最后,不同倍数上采样的结构平行排列来获得不同倍数的输出结果。