【飞桨】【PaddlePaddle】【论文复现】Big GAN 论文解读

【飞桨】【PaddlePaddle】【论文复现】Big GAN 论文解读

  • 论文贡献
  • 背景
  • 技术细节
    • batch size增大
    • 截断技巧
    • 通道数
    • 共享嵌入多层级潜在空间
  • 稳定性训练

论文名称:LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS
论文地址:https://arxiv.org/abs/1809.11096

首先 ,让我们先来看一下BigGAN生成的图像
【飞桨】【PaddlePaddle】【论文复现】Big GAN 论文解读_第1张图片

论文贡献

消除由GAN生成的图像与来自ImageNet数据集的真实世界图像在保真度和多样性方面的差距。我们做出以下三个贡献来实现这一目标:

1.论文证明了GAN可从伸缩性中显著受益,并且与现有技术相比,训练具有两至四倍数量参数和八倍批量大小的模型。介绍了两个简单的、通用的架构更改,它们改进了可伸缩性,并修改了正则化方案以改进调节,从而显著提高了性能。
2.作为论文修改的副作用,论文的模型变得适应于“截断技巧”,这是一种简单的采样技术,允许明确、细粒度地控制样本多样性和保真度之间的权衡。
3.发现特定的不稳定性大规模GANS,并表征他们经验。从这个分析中,我们可以看到,将新的和现有的技术结合起来可以减少这些不稳定性,但是完全的训练稳定性只能以显著的性能代价来实现。

背景

1.修改GAN训练过程。一条线是通过改进目标函数,另一条线是通过梯度惩罚限制D或通过归一化,都是为了D始终能够为G提供梯度。
2.谱归一化(Spectral Normalization)[1]。通过对D的第一个奇异值进行估计值对其参数进行归一化,从而实现对D的Lipschitz连续性。在G上采用谱归一化能够提高稳定性,减少每次迭代中D的训练次数。
3.结构的选择。SA-GAN[2]增加了自注意力块(self-attention block)来提高G和D对全局结构的建模能力。ProGAN通过训练单一模型经过一系列增加分辨率的操作,在单一类别中训练高分辨率GAN。
4.条件GAN。在噪声向量中连接一个独立热的类别向量,目标函数修改为希望尽量生成条件样本以最大化辅助分类器(auxiliary classifier)[3]预测的相关类别概率。

技术细节

batch size增大

仅对基本模型增加批大小8倍,Inception Score提高了46%,这是因为每个batch覆盖了更多的模式,为网络提供了更好的梯度。此外,模型在更少的迭代中达到更好的结果,但是变得不稳定且提前出现模式崩塌。再对每层增加宽度,即通道数,同时增加了参数量。这增加了模型关联复杂数据集的能力,进一步提高了Inception Score。然而增加深度并没有提高结果。

截断技巧

对z~N(0,I) 进行采样时,从一个截断范围内取,即落在该范围外的值被重新采样到该范围内。通过重新采样大于选择阈值的值,截断z向量的值,这使得单个样本质量的提高,代价是减少总体样本的多样性。这种方式可以精细地选择样本质量和保真度之间的权衡,当截断接近0时,多样性消失,对于更大的模型,截断技巧会使结果饱和,作者采用了修改的正交归一化使得G光滑。当采样超过该阈值时,重新采样,以使得采样点落入阈值范围。减小该阈值会发现,GAN生成的图像多样性降低,质量提高。如下图所示,从左到右为逐渐降低阈值。
【飞桨】【PaddlePaddle】【论文复现】Big GAN 论文解读_第2张图片

通道数

然后将每一层的宽度(通道数量)增加了50%,相当于每个模型的参数将近增加一倍。这导致模型的IS得分提高了21%,作者猜测这是因为增加后的模型容量变得和数据集复杂度相匹配了。但是对ImageNet分类模型进行参数翻倍,并没有相似的性能提升,反而性能下降了(也就是过拟合)。

共享嵌入多层级潜在空间

作者还发现,条件BN中嵌入类别c占用了很多的权重,文章于是采用共享的嵌入来取代独立的层嵌入。这降低了内存与计算成本,模型训练速度提高37%。此外,作者使用了多种hierarchical latent spaces,即将噪声向量zz输入到生成器的不同层中,而不是仅仅输入到第一层。这种做的直觉思路是用潜在空间来直接影响不同分辨率以及不同层次下的特征。hierarchical latents降低了计算量与内存占用,模型表现提升4%,训练速度提高18%。

稳定性训练

稳定性不是单独地来源于G或D,而是在对抗训练过程中它们的相互作用。虽然不良的条件可以用来识别不稳定性,但采用合理的条件对于训练时有必要的,然而却不能防止最终的训练崩塌。通过强约束D可以使训练稳定但是会影响模型性能。在目前的技术下,通过较松的条件约束并且允许在之后的阶段发生模式崩塌能够达到更好的结果。

论文代码:https://github.com/sxhxliang/BigGAN-pytorch
论文复现课程链接:https://aistudio.baidu.com/aistudio/education/group/info/1340

你可能感兴趣的:(【飞桨】【PaddlePaddle】【论文复现】Big GAN 论文解读)