【图像超分辨】SRResNet与SRGAN

@TOC

在这篇文章中,将生成对抗网络(Generative Adversarial Network, GAN)用在了解决超分辨率问题上。文章提到,训练网络时用均方差作为损失函数,虽然能够获得很高的峰值信噪比,但是恢复出来的图像通常会丢失高频细节,使人不能有好的视觉感受。SRGAN利用感知损失(perceptual loss)和对抗损失(adversarial loss)来提升恢复出的图片的真实感。感知损失是利用卷积神经网络提取出的特征,通过比较生成图片经过卷积神经网络后的特征和目标图片经过卷积神经网络后的特征的差别,使生成图片和目标图片在语义和风格上更相似。一个GAN所要完成的工作,GAN原文举了个例子:生成网络(G)是印假钞的人,判别网络(D)是检测假钞的人。G的工作是让自己印出来的假钞尽量能骗过D,D则要尽可能的分辨自己拿到的钞票是银行中的真票票还是G印出来的假票票。开始的时候呢,G技术不过关,D能指出这个假钞哪里很假。G每次失败之后都认真总结经验,努力提升自己,每次都进步。直到最后,D无法判断钞票的真假……SRGAN的工作就是: G网通过低分辨率的图像生成高分辨率图像,由D网判断拿到的图像是由G网生成的,还是数据库中的原图像。当G网能成功骗过D网的时候,那我们就可以通过这个GAN完成超分辨率了。

文章中,用均方误差优化SRResNet(SRGAN的生成网络部分),能够得到具有很高的峰值信噪比的结果。在训练好的VGG模型的高层特征上计算感知损失来优化SRGAN,并结合SRGAN的判别网络,能够得到峰值信噪比虽然不是最高,但是具有逼真视觉效果的结果。

网络结构

【图像超分辨】SRResNet与SRGAN
其中:
SRResNet:就是只用生成器,损失函数是MSE loss或者VGG loss。
SRGAN:用了生成器和判别器,损失函数用了perceptual loss,adversarial loss。

在生成网络部分(SRResNet)部分包含多个残差块,每个残差块中包含两个3×3的卷积层,卷积层后接批规范化层(batch normalization, BN)和PReLU作为**函数,两个2×亚像素卷积层(sub-pixel convolution layers)被用来增大特征尺寸。在判别网络部分包含8个卷积层,随着网络层数加深,特征个数不断增加,特征尺寸不断减小,选取**函数为LeakyReLU,最终通过两个全连接层和最终的sigmoid**函数得到预测为自然图像的概率。SRGAN的损失函数为:
【图像超分辨】SRResNet与SRGAN
其中内容损失可以是基于均方误差的损失的损失函数:
【图像超分辨】SRResNet与SRGAN
也可以是基于训练好的以ReLU为**函数的VGG模型的损失函数:
【图像超分辨】SRResNet与SRGAN
i和j表示VGG19网络中第i个最大池化层(maxpooling)后的第j个卷积层得到的特征。对抗损失为:
【图像超分辨】SRResNet与SRGAN

实验结果

【图像超分辨】SRResNet与SRGAN
其中,

SRGAN-MSE表示对抗网络中content loss只用MSE

SRGAN-VGG22表示(i=2, j=2)表示定义在low-level特征图上的loss

SRGAN-VGG54表示(i = 5, j = 4)表示定义在high-level特征图上的loss。

SRResNet-MSE表示只用生成器,没有判别器(即不用adversarial loss),生成器的损失函数为MSE,简记为SRResNet

SRResNet-VGG22表示只用生成器,没有判别器(即不用adversarial loss),生成器的损失函数为VGG low-level特征图上的loss。

【图像超分辨】SRResNet与SRGAN
【图像超分辨】SRResNet与SRGAN
【图像超分辨】SRResNet与SRGAN
文章中的实验结果表明,用基于均方误差的损失函数训练的SRResNet,得到了结果具有很高的峰值信噪比,但是会丢失一些高频部分细节,图像比较平滑。而SRGAN得到的结果则有更好的视觉效果。其中,又对内容损失分别设置成基于均方误差、基于VGG模型低层特征和基于VGG模型高层特征三种情况作了比较,在基于均方误差的时候表现最差,基于VGG模型高层特征比基于VGG模型低层特征的内容损失能生成更好的纹理细节。

参考博客

CVPR2017: SRResNet(SRGAN): Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
<转>从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程