飞桨-论文复现 (PaddlePaddle)

飞桨-论文复现 (PaddlePaddle)

内容附加论文复现课程链接:https://aistudio.baidu.com/aistudio/education/group/info/1340

论文:《Large scale GAN training for high fidelity natural image synthesis》

论文地址:https://arxiv.org/pdf/1809.11096.pdf 或 http://xxx.itp.ac.cn/pdf/1809.11096.pdf

1、任务描述

图像生成:从现有数据集中生成新图像的任务

​ 近年来,生成图像建模领域出现了不少成果,其中最前沿的是GAN,它能直接从数据中学习,生成高保真、多样化的图像。虽然GAN的训练是动态的,而且对各方面的设置都很敏感(从优化参数到模型架构),但大量研究已经证实,这种方法可以在各种环境中稳定训练。

飞桨-论文复现 (PaddlePaddle)

2、相关介绍

GAN的训练是动态的,并且对几乎所有层面的设置都很敏感(从最优化参数到模型架构),但有大量的研究在经验和理论上获得了在多种设置中实现稳定训练的洞察
尽管得到了这样的进展,当前在条件ImageNet建模上的当前最佳结果仍然仅达到了52.5的IS,而真实数据有233的IS。 [IS:inception score用来衡量GAN网络的两个指标:生成图片的质量和多样性]
在这项研究中,作者成功地将GAN生成图像和真实图像之间的保真度和多样性 gap大幅降低。

3、论文方法

  • 高分辨率能够带来更为真实的生成图像,在这样的思想的指导下,本论文结合了GAN的各种新技术,并且分析了训练难的原因,最后提出自己的模型
  • 本文展示了GAN可以从训练规模中显著获益,并且能在参数数量很大和八倍批大小于之前最佳结果的条件下,仍然能以2倍到4倍的速度进行训练。作者引入了两种简单的生成架构变化,提高了可扩展性,并修改了正则化方案以提升条件化(conditioning),这可论证地提升了性能。

​ 这篇论文没有提出新的模型,只是将原有的GAN的模型,用8倍原有的batch size大小,并且将隐藏层的变量数量扩充到原有模型的4倍以后,进行训练获得了很好的图片生成的效果。与此同时,在扩充了变量数量和batch size大小后,模型出现了不稳定的现象,文章中对出现的不稳定现象,采用现有的比较有效的稳定训练GAN的方法,但是文中发现这样确实会稳定GAN的训练,但是同时会牺牲生成图片的质量。

飞桨-论文复现 (PaddlePaddle)

表1到4行表明按8的倍数增加批大小可以将当前最佳的IS提高46%。研究者假设这是由于每个批量覆盖了更多的模式,为生成器和鉴别器都提供了更好的梯度信息。这种扩展带来的值得注意的副作用是,模型以更少的迭代次数达到了更好的性能,但变得不稳定并且遭遇了完全的训练崩溃。研究者在论文第4部分讨论了原因和后果。因此在实验中,研究者在崩溃刚好发生之后立刻停止训练,并从之前保存的检查点进行结果报告。

飞桨-论文复现 (PaddlePaddle)

​ 然后,研究者增加了每个层50%的宽度(通道数量),这大致在生成器和鉴别器中都翻倍了参数数量。这导致了进一步的21%的IS提升,研究者假设这是由于模型相对于数据集复杂度的容量的增加。将深度翻倍在ImageNet模型上并不能得到相同的优化效应,反而会降低性能。

截断技巧

​ 生成器的随机噪声输入一般使用正态分布或者均匀分布的随机数。本文采用了截断技术,对正态分布的随机数进行截断处理,实验发现这种方法的结果最好。对此的直观解释是,如果网络的随机噪声输入的随机数变动范围越大,生成的样本在标准模板上的变动就越大,因此样本的多样性就越强,但真实性可能会降低。首先用截断的正态分布N(0,1)随机数产生噪声向量Z,具体做法是如果随机数超出一定范围,则重新采样,使得其落在这个区间里。这种做法称为截断技巧:将向量Z进行截断,模超过某一指定阑值的随机数进行重采样,这样可以提高单个样本的质量,但代价是降低了样本的多样性。

飞桨-论文复现 (PaddlePaddle)

生成器的不稳定性

​ 对于GAN的稳定性,之前已经有一些探索,从分析的角度。本文着重对小规模时稳定,大规模时不稳定的问题进行分析。实验中发现,权重矩阵的前3个奇异值σ0σ1σ2σ0,σ1,σ2蕴含的信息最丰富。
​ 在训练中,G的大部分层的谱范数都是正常的,但有一些是病态的,这些谱范数随着训练的进行不断的增长,最后爆炸,导致训练坍塌。如下图所示:

飞桨-论文复现 (PaddlePaddle)

4、论文结果

​ 在不同分辨率下的模型评估结果。研究者报告了未使用截断(第3列),最佳FID分数(第4列),验证数据的最佳IS(第5列),以及最高的IS(第6列)。标准差通过至少三次随机初始化计算得到。

飞桨-论文复现 (PaddlePaddle)

5、论文总结

​ 本文证明了将GAN用于多类自然图像生成任务时,加大模型的规模可以显著的提高生成的图像的质量,对生成的样本的真实性和多样性都是如此。

  • 通过使用一些技巧,本文提出的方法的性能较之前的方法有了大幅度的提高
  • 另外,还分析了大规模GAN在训练时的机制,用它们的权重矩阵的奇异值来刻画它们的稳定性
  • 讨论了稳定性和性能即生成的图像的质量之间的相互作用和影响。

飞桨-论文复现 (PaddlePaddle)

6、代码解读

代码地址:https://github.com/ajbrock/BigGAN-PyTorch

飞桨-论文复现 (PaddlePaddle)

BigGAN.py:网络结构 train.py:程序入口

train.py

飞桨-论文复现 (PaddlePaddle)

运行run()函数,进入模型部分,运行时可以先用小批次的数据做模型的跑通的数据流的检验。

BigGAN.py

生成器:

飞桨-论文复现 (PaddlePaddle)

判别器:

飞桨-论文复现 (PaddlePaddle)

7、论文总结

证明了将GAN用于多类自然图像生成任务时,加大模型的规模可以显著的提高生成的图像的质量,对生成的样本的真实性和多样性都是如此。
通过使用一些技巧,本文提出的方法的性能较之前的方法有了大幅度的提高。
讨论了稳定性和性能即生成的图像的质量之间的相互作用和影响。