“Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network”首次使用生成对抗网络(GAN)应用于图像超分辨率(SR),在图像超分辨率领域引起了极大的关注,该工作由twitter公司提出,发表于2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)
论文地址:http://arxiv.org/abs/1609.04802
简介
作者总结了最近的图像超分辨率的工作,认为大都集中于以均方差(MSE)作为损失函数,造成生成图像过于平滑,缺少高频细节,看起来觉得不真实,感到不舒服。所以提出了基于生成式对抗网络的网络结构,作者认为这是生成式对抗网络第一次应用于4倍下采样图像的超分辨重建工作。
SRGAN利用感知损失(perceptual loss),由对抗损失(adversarial loss)和内容损失(content loss)组成。
对抗损失将图像映射到高位流形空间,并用判别网络去判别重建后的图像和原始图像。而内容损失则是基于感觉相似性(perceptual similarity)而非像素相似性(pixel similarity),所以生成的高分辨图像视觉效果更好。
主要贡献
1.把生成对抗网络思想应用于图像超分辨率工作中,判别器无法分辨出生成的超分辨率图像和真实的图像,使得生成的图像达到Photo-Realistic的效果。
2.设计了新型的感知损失(perceptual loss)作为网络的损失函数。
SRGAN网络结构
网络结构如上图所示
GAN的生成器:残差块+卷积层+BN层+ReLU
GAN的判别器:VGG+LeakyReLU+max-pooling
SRGAN是在SRResnet的基础上加上一个鉴别器。GAN的作用,是额外增加一个鉴别器网络和2个损失(g_loss和d_loss),用一种交替训练的方式训练两个网络。
模型可以分为3部分:main(生成)模块,adversarial模块,和vgg模块。只在训练阶段会用到adversarial模块进行计算,而在推断阶段,仅仅使用G网络。
对任何一个问题,都可以让训练过程“对抗化”。“对抗化”的步骤是:先确定该问题的解决方法,把原始方法当成GAN中的G网络 ,再另外增加一个D网络(二分类网络),在原来更新main模块的loss中,增加“生成对抗损失”(要生成让判别器无法区分的数据分布),一起用来更新main模块(也就是GAN中的G网络),用判别损失更新GAN中的D网络。[1]
SRGAN的损失函数
SRGAN损失包括两部分:内容损失(content loss)和对抗损失(adversarial loss),用一定的权重进行加权和。
content loss
传统的MSE loss,可以得到很高的信噪比,但是这样的方式产生的图像存在高频细节缺失的问题
作者定义了以预训练19层VGG网络的ReLU激活层为基础的VGG loss,求生成图像和参考图像特征表示的欧氏距离。在已经训练好的VGG网络上提出某一层的featur