关于GAN必读的10篇论文
链接:https://juejin.cn/post/6844903885400702983
论文列表:
- Generative Adversarial Networks,2014
- Conditional GANs,2014
- DCGAN,2015
- Improved Techniques for Training GANs,2016
- Pix2Pix,2016
- CycleGAN,2017
- Progressively Growing of GANs,2017
- StackGAN,2017
- BigGAN,2018
- StyleGAN,2018
-
1. Generative Adversarial Networks
论文名称:Generative Adversarial Nets
论文地址: arxiv.org/abs/1406.26…
“GAN之父” Ian Goodfellow 发表的第一篇提出 GAN 的论文,这应该是任何开始研究学习 GAN 的都该阅读的一篇论文,它提出了 GAN 这个模型框架,讨论了非饱和的损失函数,然后对于最佳判别器(optimal discriminator)给出其导数,然后进行证明;最后是在 Mnist、TFD、CIFAR-10 数据集上进行了实验。
原始GAN的损失函数:
代码地址:https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/gan/gan.py
https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/GANs/1.%20SimpleGAN
意义:
创造性的提出了对抗思想的生成网络,开启了一个新的领域;
之后的后浪,均通过GAN的思想来设计损失函数;
存在的问题: 生成器的能力较差,衡量损失是通过JS散度,而原图像和生成图像在高维空间上重合的部分很少,导致没有足够的梯度给生成器优化(W-GAN);
- 容易出现模型坍塌,为了骗过鉴别器,生成器会生成真实但是都很相似的图像(熵远远小于原数据集);
- 只能还原原数据集,数据库之间的迁移效果不好;
- 只能生成分辨率较低的图片;
2. Conditional GANs
论文名称:Conditional Generative Adversarial Nets
论文地址:arxiv.org/abs/1411.17…
如果说上一篇 GAN 论文是开始出现 GAN 这个让人觉得眼前一亮的模型框架,这篇 cGAN 就是当前 GAN 模型技术变得这么热门的重要因素之一,事实上 GAN 开始是一个无监督模型,生成器需要的仅仅是随机噪声,但是效果并没有那么好,在 14 年提出,到 16 年之前,其实这方面的研究并不多,真正开始一大堆相关论文发表出来,第一个因素就是 cGAN,第二个因素是等会介绍的 DCGAN;
cGAN 其实是将 GAN 又拉回到监督学习领域,如下图所示,它在生成器部分添加了类别标签这个输入,通过这个改进,缓和了 GAN 的一大问题—训练不稳定,而这种思想,引入先验知识的做法,在如今大多数非常有名的 GAN 中都采用这种做法,后面介绍的生成图片的 BigGAN,或者是图片转换的 Pix2Pix,都是这种思想,可以说 cGAN 的提出非常关键。
代码地址:https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/cgan/cgan.py
损失函数:
3. DCGAN
论文名称:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
论文地址:arxiv.org/abs/1511.06…
其实原作者推荐第一篇论文应该是阅读这篇 DCGAN 论文,2015年发表的。这是第一次采用 CNN 结构实现 GAN 模型,它介绍如何使用卷积层,并给出一些额外的结构上的指导建议来实现。另外,它还讨论如何可视化 GAN 的特征、隐空间的插值、利用判别器特征训练分类器以及评估结果。下图是 DCGAN 的生成器部分结构示意图
代码地址:
https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/dcgan/dcgan.py
https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/GANs/2.%20DCGAN
4. Improved Techniques for Training GANs
论文名称:Improved Techniques for Training GANs
论文地址:arxiv.org/abs/1606.03…
这篇论文的作者之一是 Ian Goodfellow,它介绍了很多如何构建一个 GAN 结构的建议,它可以帮助你理解 GAN 不稳定性的原因,给出很多稳定训练 DCGANs 的建议,比如特征匹配(feature matching)、最小批次判别(minibatch discrimination)、单边标签平滑(one-sided label smoothing)、虚拟批归一化(virtual batch normalization)等等,利用这些建议来实现 DCGAN 模型是一个很好学习了解 GANs 的做法。
5. Pix2Pix
论文名称:Image-to-Image Translation with Conditional Adversarial Networks
论文地址:arxiv.org/abs/1611.07…
Pix2Pix 的目标是实现图像转换的应用,如下图所示。这个模型在训练时候需要采用成对的训练数据,并对 GAN 模型采用了不同的配置。其中它应用到了 PatchGAN 这个模型,PatchGAN 对图片的一块 70*70 大小的区域进行观察来判断该图片是真是假,而不需要观察整张图片。
此外,生成器部分使用 U-Net 结构,即结合了 ResNet 网络中的 skip connections 技术,编码器和解码器对应层之间有相互连接,它可以实现如下图所示的转换操作,比如语义图转街景,黑白图片上色,素描图变真实照片等。
参考博客:
Pix2Pix.pptx
自己的PPT
损失函数:
代码地址:
https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/GANs/Pix2Pix
https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/pix2pix/pix2pix.py
6. CycleGAN
论文名称:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
论文地址:arxiv.org/abs/1703.10…
上一篇论文 Pix2Pix 的问题就是训练数据必须成对,即需要原图片和对应转换后的图片,而现实就是这种数据非常难寻找,甚至有的不存在这样一对一的转换数据,因此有了 CycleGAN,仅仅需要准备两个领域的数据集即可,比如说普通马的图片和斑马的图片,但不需要一一对应。这篇论文提出了一个非常好的方法—循环一致性(Cycle-Consistency)损失函数,如下图所示的结构:
损失函数
代码地址
https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/cyclegan/cyclegan.py
https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/GANs/CycleGAN
这种结构在接下来图片转换应用的许多 GAN 论文中都有利用到,cycleGAN 可以实现如下图所示的一些应用,普通马和斑马的转换、风格迁移(照片变油画)、冬夏季节变换等等。
7. Progressively Growing of GANs
论文名称:Progressive Growing of GANs for Improved Quality, Stability, and Variation
论文地址:arxiv.org/abs/1710.10…
这篇论文必读的原因是因为它取得非常好的结果以及对于 GAN 问题的创造性方法。它利用一个多尺度结构,从 44 到 88 一直提升到 1024*1024 的分辨率,如下图所示的结构,这篇论文提出了一些如何解决由于目标图片尺寸导致的不稳定问题。
参考博客:
ProGAN:Step by step, better than better - Uno Whoiam的文章 - 知乎 https://zhuanlan.zhihu.com/p/93748098
如何评价NVIDIA新paper:Progressive Growing of GANs? - Adelaide的回答 - 知乎 https://www.zhihu.com/question/67483407/answer/262261947
代码地址
https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/GANs/ProGAN
8. StackGAN
论文名称:StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks
论文地址:arxiv.org/abs/1612.03…
StackGAN 和 cGAN 、 Progressively GANs 两篇论文比较相似,它同样采用了先验知识,以及多尺度方法。整个网络结构如下图所示,第一阶段根据给定文本描述和随机噪声,然后输出 6464 的图片,接着将其作为先验知识,再次生成 256256 大小的图片。相比前面 推荐的 7 篇论文,StackGAN 通过一个文本向量来引入文本信息,并提取一些视觉特征
参考博客:
https://blog.csdn.net/a312863063/article/details/83574422
9. BigGAN
论文地址:Large Scale GAN Training for High Fidelity Natural Image Synthesis
论文地址:arxiv.org/abs/1809.11…
BigGAN 应该是当前 ImageNet 上图片生成最好的模型了,它的生成结果如下图所示,非常的逼真,但这篇论文比较难在本地电脑上进行复现,它同时结合了很多结构和技术,包括自注意机制(Self-Attention)、谱归一化(Spectral Normalization)等,这些在论文都有很好的介绍和说明。
10. StyleGAN
论文地址:A Style-Based Generator Architecture for Generative Adversarial Networks
论文地址:arxiv.org/abs/1812.04…
StyleGAN 借鉴了如 Adaptive Instance Normalization (AdaIN)的自然风格转换技术,来控制隐空间变量 z 。其网络结构如下图所示,它在生产模型中结合了一个映射网络以及 AdaIN 条件分布的做法,并不容易复现,但这篇论文依然值得一读,包含了很多有趣的想法。
参考博客
看GAN如何一步步控制图像生成风格?详解StyleGAN进化过程 - 机器之心的文章 - 知乎 https://zhuanlan.zhihu.com/p/133430484
StyleGAN 和 StyleGAN2 的深度理解 - 圆圆要学习的文章 - 知乎 https://zhuanlan.zhihu.com/p/263554045
代码地址
https://github.com/aladdinpersson/Machine-Learning-Collection/tree/master/ML/Pytorch/GANs/StyleGAN
11.StarGAN
参考视频
https://www.bilibili.com/video/BV1ef4y1v7fF?from=search&seid=11159629965018400023&spm_id_from=333.337.0.0
代码地址
https://github.com/eriklindernoren/PyTorch-GAN/blob/master/implementations/stargan/stargan.py
小结
本文主要介绍了 10 篇值得一读的 GAN 论文,从最开始提出这个模型的论文,到截止至 2018 年的论文,其中既有影响很大的 cGAN 和 DCAN,也有图像转换领域非常重要的 Pix2Pix 和 CycleGAN,还有最近效果非常不错的 BigGAN。
如果是希望研究这个方向的,可以看下这 10 篇论文。另外,再推荐一个收集了大量 GAN 论文的 Github 项目,并且根据应用方向划分论文:
以及 3 个复现多种 GANs 模型的 github 项目,分别是目前主流的三个框架,TensorFlow、PyTorch 和 Keras:
- tensorflow-GANs:TensorFlow 版本
- Pytorch-GAN:PyTorch 版本
- Keras-GAN:Keras 版本
- youtube博主
- 相关学习视频