GAN的发展系列三(LapGAN、SRGAN)
在前面的文章里我们已经介绍了GAN生成对抗网络的入门和一些GAN系列,在之后的专辑里会继续介绍一些比较经典的GAN。
GAN生成对抗网络入门介绍
GAN的发展系列一(CGAN、DCGAN、WGAN、WGAN-GP、LSGAN、BEGAN)
GAN的发展系列二(PGGAN、SinGAN)
一、 LapGAN
论文:《Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks》
论文地址:https://arxiv.org/abs/1506.05751
1、基本思路
LapGAN是建立在GAN和CGAN的基础上,采用Laplacian Pyramid拉普拉斯金字塔的方式生成由粗到细的图像,从而生成高分辨率图像。在金字塔的每一层都是学习与相邻层的残差,通过不断堆叠CGAN得到最后的分辨率。CGAN我们在前面的文章介绍过就是在GAN的基础上加入了条件约束,来缓解原始GAN生成器生成样本过于自由的问题。
原始GAN的公式为:
CGAN的公式为:
2、拉普拉斯金字塔
拉普拉斯金字塔就是图像在尺度空间中不断上采样的结果,高斯金字塔就是图像在尺度空间中不断下采样的结果。先构建高斯金字塔,对图像I0进行连续K次下采样,得到
则第K层的拉普拉斯金字塔为
其他层的拉普拉斯金字塔为:
拉普拉斯金字塔第k层等于高斯金字塔第k层减去高斯金字塔第k+1层的上采样。
用拉普拉斯金字塔来恢复图像:
3、LapGAN原理
以K=3为例,此时拉普拉斯金字塔为4层结构,包含4个生成器G0、G1、G2、G3,分别生成4个分辨率的图像64x64、32x32、16x16、8x8,分辨率最低的图像来训练原始GAN,输入只有噪声,之后分辨率更高的图像训练CGAN,输入有噪声和同级的高斯金字塔图像上采样后的图像。
LapGAN通过将一系列CGAN串联起来,不断生成更高分辨率。
LAPGAN在CIFAR10、STL10和LSUN三个数据集上进行了实验,其生成的图像如下:
二、 SRGAN
论文《Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network》
论文地址:https://arxiv.org/pdf/1609.04802.pdf
代码地址:https://github.com/OUCMachineLearning/OUCML/blob/master/GAN/srgan_celebA/srgan.py
1、基本思路
SRGAN是将GAN应用到图像超分辨领域,CNN卷积神经网络在传统的超分辨重建上已经取得了非常好的效果,可以取得较高的峰值信噪比PSNR,以MSE为最小化的目标函数。SRGAN是第一个能恢复4倍下采样图像的算法框架,作者提出了感知损失函数,包括对抗损失和内容损失两部分,对抗损失来自判别器,用来分辨真实图像和生成的超分辨图像,内容损失注重于视觉上的相似性。
通常图像超分辨算法是采用重建超分辨图像和真实图像之间的均方误差MSE作为目标函数,优化MSE从而提高PSNR,但是MSE和PSNR的值并不能很好的表示视觉效果的好坏,下图中PSNR值最高的视觉并不好。
2、网络结构
通常逐像素的MSE由于会过度平滑导致很难处理好图像超分辨的细节,文章设计了新的损失函数,将逐像素MSE损失替换为内容损失。感知损失表示为内容损失和对抗性损失的加权和,
Content Loss是某一层的特征图的逐像素损失作为内容损失,
Adversarial Loss对抗损失
作者提出的网络结构如下,生成器由残差结构Residual blocks组成,
作者用sub-pixel网络作为生成网络,用VGG作为判别网络构建GAN得到了非常好的结果,但是这个用的是逐像素差作为损失函数。之后,作者尝试了自己提出的感知损失函数作为优化目标,虽然PSNR和SSIM不高,但是视觉效果都要优于其他网络,避免了其他方法的过度平滑的特性。