本文将按时间顺序总结gan的paper(非所有,会挑选个人认为比较重要的),并将参考其它博客(会给出链接),如有侵权,请私信删除。
IS 可以反应图像的生成质量(越大越好),FID 则会更假注重生成的多样性(越小越好)。
IS_score=233(真实图片)
SAGAN的IS=52.52、FID=18.65
BigGAN的IS=166
🔴(2014.06-arXiv)GAN:Generative Adversarial Nets【论文原文】
💡contributions:
- 开山之作;
- 原理:生成网络和判别网络的互相对抗。生成网络尽可能生成逼真样本,判别网络则尽可能去判别该样本是真实样本,还是生成的假样本。
- 采用JS散度作为评判依据。
loss函数(原始gan损失函数的详细解释):
- 损失值只由discriminator计算提供。D(x)结果要么为real(1),要么为fake(0)。
(2014.11-arXiv)CGAN:Conditional Generative Adversarial Nets【论文原文】
💡contributions:
- 将G和D网络的输入都添加了类别标签,通过训练,既可以通过给与生成器给定的标签能够得到给定的输出。
loss函数:
- 跟原始GAN一样的结构;只是多了个条件标签。
🔴(2015.11-ICLR)DCGAN:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks【论文原文】
💡contributions:
- 在GAN上加了一系列的训练技巧。
- 去掉了G和D网络中的polling layer;
- 去掉全连接的隐藏层;
- 在G网络中最后一层之前所有的层使用RELU,最后一层使用Tanh;
- 在D网络中的每一层使用LeakRELU。
网络结构:
(2016.06-NIPS)InfoGAN:Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets【论文原文】【参考文章】
💡contributions:
- 让网络学到了可解释的特征;
- 添加互信息函数;
- 训练完成后,可以通过给与生成器特定的隐含编码得生成包含特定特征的数据;
- 跟CGAN的区别(CGAN输入的标签y是指定的-监督学习,infoGAN输入的latent C 是通过训练得到的-无监督学习)
loss函数:
- V(D,G)为原始GAN的损失函数。只是添加了一个互信息损失函数。
🔴(2016.11-arXiv)LSGAN:Least Squares Generative Adversarial Networks【论文原文】
💡contributions:
- 采用最小二乘loss作为评判依据。
loss函数:
- abc参数的选择:1、a=-1 b=1 c=0(b-c=1 and b-a=2);2、a=0、c=b=1(c=b)
🔴(2017.01-arXiv)WGAN:Wasserstein GAN【论文原文】【原理解析】
💡contributions:
- 采用地球移动距离(EM, Earth-mover distance),也叫 Wasserstein 距离,作为评判依据。
- 判别器最后一层去掉sigmoid;
- 生成器和鉴别器的loss不取log;
- 每次更新鉴别器的参数之后将其绝对值截断到不超过一个固定常数;
- 不用基于动量的优化算法。
loss函数:
- 将原始GAN的JS散度换成EM距离作为评判标准;可以计算两个无交集的分布之间的距离。
🔴(2017.04-arXiv)WGAN-GP:Improved Training of Wasserstein GANs【论文原文】【原理解析】
💡contributions:
- 出了一种梯度惩罚策略,来取代WGAN中的weight clipping策略。
loss函数:
- 添加一个梯度惩罚项,满足Lipschitz条件。
(2017.10-ICLR)PGGAN:PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION【论文原文】
💡contributions:
- 渐进式地增加生成器和判别器的规模,训练过程中不断给G和D添加层;
- 为了防止新加入的层对原网络产生巨大影响,提出一种平滑的加入新层的方法。
训练过程:
- 渐进式
(2018.01-?)?-GAN:Which Training Methods for GANs do actually Converge?【论文原文】【参考文章-优秀】
💡contributions:
- 总结之前GAN为什么收敛不稳定(从数学角度)。
(2018.02-ICLR)SNGAN:SPECTRAL NORMALIZATION FOR GENERATIVE ADVERSARIAL NETWORKS【论文原文】【原理推导】
💡contributions:
- 提出一种“严格”地解决了1-Lipshcitz约束的方法。
- 对权重矩阵做谱范数归一化就可以更好的训练。
感想:
- 对WGAN-GP的补充?
🔴(2018.05-arXiv)SAGAN:Self-Attention Generative Adversarial Networks【论文原文】
💡contributions:
- 使用SNGAN的Spectral normalization;
- 引入了Attention机制,让生成器和判别器可以自动学习图像中的重要目标(全局);
- 在训练过程中,给予G和D不同的学习速率,以平衡两者的训练速度;
attention机制:
- (1)f(x),g(x)和h(x)都是普通的1x1卷积,差别只在于输出通道大小不同;
- (2)将f(x)的输出转置,并和g(x)的输出相乘,再经过softmax归一化得到一个Attention Map;
- (3)将得到的Attention Map和h(x)逐像素点相乘,得到自适应的注意力feature maps.
🔴(2018.07-arxiv)RSGAN:The relativistic discriminator: a key element missing from standard GAN【论文原文】【参考文章】
💡contributions:
- 依据图灵思想:打乱了数据,是否还能分辨出来?。
- 还提出了一个 RaSGAN,a 是 average 的意思,就是用整个 batch 的平均来代替单一的真/伪样本。
- 解决了SGAN(standard)存在的问题:训练生成器时,真实样本没有参与,所以判别器必须把关于真实样本的所有属性记住,这样才能指导生成器生成更真实的样本。
loss函数:
- RGAN:
- RaGAN:
🔴(2018.09-ICLR)Big-GAN:PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION【论文原文】【参考文章】
💡contributions:
- batch-size=2048;增加每层的通道数;
- 采用先验分布 z 的“截断技巧”,根据IS和FID值进行阈值选择,允许对样本多样性和保真度进行精细控制;
- 将正交正则化的思想引入 GAN,为截断技巧提供帮助;
- 传统的 GAN 都是将 z 作为输入直接嵌入生成网络,而 BigGAN 将噪声向量 z 送到 G 的多个层而不仅仅是初始层。(FPN?)
共享嵌入:
- 如下,左图所示将噪声向量 z 通过 split 等分成多块,然后和条件标签 c 连接后一起送入到生成网络的各个层中,对于生成网络的每一个残差块又可以进一步展开为右图的结构。可以看到噪声向量 z 的块和条件标签 c 在残差块下是通过 concat 操作后送入 BatchNorm 层,这种嵌入方式就是共享嵌入,线性投影到每个层的 bias 和 weight。共享嵌入与传统嵌入的差别是,传统嵌入为每个嵌入分别设置一个层,而共享嵌入是将z与c的连接一并传入所有BatchNorm。
(2029.09-?)?-GAN:?【论文原文】【等待更新】
💡contributions:
- 等待更新。
训练过程:
- 等