超分辨率技术(Super-Resolution)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备、卫星图像和医学影像等领域都有重要的应用价值。
SR可以分为两类:
深度学习中主要是基于单张低分辨率的重建方法(Single Image Super-Resolution,SISR)。
SISR是一个逆问题,对于一个低分辨率图像,可能存在许多不同的高分辨率图像与之对应,因此通常在求解高分辨率图像时会加一个先验信息进行规范化约束。在传统方法中,这个先验信息可以通过若干成对出现的低-高分辨率图像的实例中学到。在深度学习中,神经网络直接学习低分辨率图像到高分辨率图像的端到端的映射函数。
生成器G通过低分辨率的图像生成高分辨率图像,由判别器D判断图像是由生成器G生成的,还是数据库中的原图像。当生成器G生成的图片让判别器D无法分辨的时候,那么图像的超分辨率就完成了。
SRGAN使用了感知损失(perceptual loss)和对抗损失(adversarial loss)来提升恢复出的图片的真实感。感知损失是利用卷积神经网络提取出的特征,通过比较生成图片经过卷积神经网络后的特征和目标图片经过卷积神经网络后的特征的差别,使生成图片和目标图片在语义和风格上更相似。
用均方误差优化生成网络中的SRResNet部分,能够得到具有很高的峰值信噪比的结果。
如果在训练好的VGG模型的高层特征上计算感知损失来优化SRGAN,并结合SRGAN的判别网络,能够得到的峰值信噪比虽然不是最高,但是具有逼真视觉的效果。
该代价函数使重建结果有较高的信噪比,但是缺少了高频信息,出现过度平滑的纹理。
SRGAN论文认为应当使重建的高分辨率图像与真实的高分辨率图像无论是低层次的像素值上,还是高层次的抽象特征上,还有整体概念和风格上,都应当接近。
文章中将生成器代价函数改为:
上式第一部分是基于内容的代价函数,第二部分是基于对抗学习的代价函数。基于内容的代价函数除了上述像素空间最小均方误差外,又包含了一个基于特征空间的最小均方误差,该特征是利用VGG网络提取的图像高层次特征,如下式所示:
对抗学习的代价函数是基于判别器输出的概率:
其中 D θ D ( ) D_{\theta D}() DθD()是一个分类网络。 D θ G ( I L R ) D_{\theta G}(I^{LR}) DθG(ILR)表示的是重构图像是自然的高分辨率图像的概率。
判别器的代价函数:
其中, I S R I^{SR} ISR表示SRGAN网络重建的高分辨率图像, I H R I^{HR} IHR是原本的高分辨率图像, I L R I^{LR} ILR是高分辨率图像对应的低分辨率图像。
Subpixel模块是一种在超分辨率中经常使用的upscale方法,又叫做pixel shuffle。我们知道,对CNN的feature map进行放大的方法有转置卷积,但是如果直接用转置卷积的话,在超分辨率中通常会带入过多人工因素。而Subpixel模块会大大降低这个风险。
上图很直观得表达了Subpixel模块的做法。首先是一个普通的卷积网络,如果我们想要对原图放大3倍的话,那么我们需要生成 3 2 = 9 3^2=9 32=9个一样大小的feature map。最后将这9个特征图拼成一个大图。
如果不使用GAN的思想,模型仅仅用一个生成器G网络,产生y_fake和y_real求得MSELoss,然后再用这个损失更新网络参数。
而GAN的思想引入之后,是额外增加了一个判别器D网络和两个损失(判别损失和生成判别损失),用一种交替训练的方式训练两个网络。这个模型可以分为3个部分:main模块,adversarial模块和VGG模块。(一般main模块就是adversarial模块里的G网络)。adversarial可以看作是一种训练技巧,只在训练阶段会使用adversarial模块进行计算,而在推断阶段,仅仅使用G网络(或者说main模块)。
所有的问题,都可以让训练过程对抗化。
所有网络都是在NVIDIA Tesla M40 GPU上训练的,用一组350000张图像的随机样本,图像来自ImageNet 数据集。这些图像与测试图像不同。我们通过下采样HR图像来获得LR图像,用下采样系数r=4的bicubic kernel。对每个mini-batch,剪裁16个不同训练图像的96*96的子图(随机)。
注意,我们可以把生成器模型应用到任意大小的图像上,因为它是全卷积的。我们用 β = 0.9 \beta=0.9 β=0.9的Adam来最优化,用学习率=0.0001和用 1 0 6 10^6 106次更新迭代来训练SRResNet networks 。当训练真实的GAN时,用训练好的基于MSE的SRResNET network 作为生成的的初始化,从而避免出现局部最优。所有的SRGAN变量经过 1 0 5 10^5 105次更新迭代训练(学习率=0.0001),另外进行了学习率=0.00001,迭代次数为 1 0 5 10^5 105的训练。我们交替更新生成器和判别器网络,相当于Goodfellow等人用到的k=1。我们的生成器网络有16个相同的残差块(B=16)。
Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network