Progressive GAN

我们描述了一种新的生成式对抗网络的训练方法。其关键思想是逐步发展生成器和鉴别器:从低分辨率开始,随着训练的进行,我们增加新的层来模拟越来越精细的细节。这既加快了训练速度,又极大地稳定了训练效果,使我们能够生成质量空前的图像,例如102421024^210242的CELEBA图像。我们还提出了一个简单的方法来增加生成图像的变化,并在无监督的CIFAR10中取得了创纪录的8.80分。此外,我们还描述了几个实施细节,这对阻止生成器和判别器之间的恶性竞争很重要。最后,我们提出了一个评估GAN结果的新指标,包括图像质量和变化方面。作为一个额外的贡献,我们构建了一个更高质量的CELEBA数据集版本。

1 INTRODUCTION

高分辨率图像的生成是困难的,因为更高的分辨率使生成的图像更容易与训练图像区分开来(Odena等人,2017),从而急剧放大了梯度问题。由于内存的限制,大的分辨率也必须使用较小的迷你批,进一步影响了训练的稳定性。我们的关键见解是,我们可以逐步增长生成器和鉴别器,从更容易的低分辨率图像开始,并随着训练的进行增加新的层,引入更高分辨率的细节。这大大加快了训练速度,并提高了高分辨率下的稳定性,我们将在第二节中讨论。

我们将在第3节中描述鼓励生成图像多样性的方法,并在第5节中提出评估质量和变化的新指标。

第4.1节讨论了对网络初始化的微妙修改,导致不同层的学习速度更加平衡。此外,我们观察到,传统上困扰GANs的模式崩溃往往发生得非常快。通常情况下,当鉴别器overshoots,导致梯度夸张时,它们就开始了,随后出现了不健康的竞争,两个网络的信号量都在升级。我们提出了一种机制来阻止生成器参与这种升级,从而解决了这个问题(第4.2节)。

2 PROGRESSIVE GROWING OF GANS

我们的主要贡献是一种GANs的训练方法,我们从低分辨率的图像开始,然后通过向网络添加层来逐步提高分辨率,如图1所示。这种递增的性质允许训练首先发现图像分布的large-scale 结构,然后将注意力转移到越来越精细的细节上,而不是同时学习所有的尺度。

图1:我们的训练开始时,生成器(G)和鉴别器(D)都具有4×4像素的低空间分辨率。随着训练的推进,我们逐步增加G和D的层数,从而提高生成图像的空间分辨率。在整个过程中,所有现有的层都是可训练的。这里的N×N指的是在N×N空间分辨率上操作的卷积层。这允许在高分辨率下进行稳定的合成,也大大加快了训练的速度。右图中我们展示了六个使用1024×1024的渐进式增长生成的图像例子。


图2:当把生成器(G)和鉴别器(D)的分辨率提高一倍时,we fade in the new layers smoothly。这个例子说明了从16×16图像(a)到32×32图像(c)的过渡。在过渡期间(b),我们把在更高的分辨率上操作的层当作一个残差块,其权重α从0到1线性增加。这里的2×和0.5×指的是分别使用近邻过滤和平均池将图像分辨率翻倍和减半。在训练判别器时,我们输入真实的图像,这些图像被降级以匹配网络的当前分辨率。在分辨率转换期间,我们在真实图像的两个分辨率之间进行插值,类似于生成器的输出结合两个分辨率。

我们使用生成器和鉴别器网络,它们是彼此的镜像,总是同步增长。在整个训练过程中,这两个网络中的所有现有层都是可训练的。当新的层被添加到网络中时,we fade them in smoothly,如图2所示,这就避免了对已经训练好的小分辨率层的突然冲击。附录A详细描述了发生器和鉴别器的结构,以及其他训练参数。

我们观察到,渐进式训练有几个好处。早期,由于类信息较少,模式也较少,所以小图像的生成明显更稳定(Odena等人,2017)。通过一点一点地提高分辨率,与发现从潜伏向量到例如10242张图像的映射的最终目标相比,我们不断提出一个简单得多的问题。这种方法与Chen & Koltun(2017)最近的工作在概念上有相似之处。在实践中,它充分稳定了训练,使我们能够可靠地使用WGAN-GP损失(Gulrajani等人,2017)甚至LSGAN损失(Mao等人,2016b)合成百万像素级的图像。

另一个好处是减少了训练时间。通过逐步增长的GANs,大部分的迭代是在较低的分辨率下完成的,而且根据最终的输出分辨率,获得可比的结果质量往往快2-6倍。

3 INCREASING VARIATION USING MINIBATCH STANDARD DEVIATION

GANs有一种倾向,即只捕捉训练数据中发现的变化的一个子集,Salimans等人(2016)建议将 "minibatch discrimination"作为一种解决方案。他们不仅计算单个图像的特征统计,而且计算整个minibatch的特征统计,从而鼓励生成和训练图像的minibatch显示类似的统计。这是通过在判别器的末端添加一个minibatch layer层来实现的,该层学习一个大的张量,将输入激活投射到一个统计数组中(an array of statistics)。在minibatch中的每个例子都会产生一组单独的统计数据,并将其串联到层的输出中,这样判别器就可以在内部使用这些统计数据。我们大大简化了这种方法,同时也提高了变异性。

我们的简化解既没有可学习的参数,也没有新的超参数。我们首先计算每个特征在每个空间位置上的标准差。然后,我们对所有特征和空间位置进行平均,得出一个值。我们复制该值并将其连接到所有空间位置和minibatch上,生成一个额外的(常量)特征图。该层可以插入鉴别器中的任何位置,但我们发现最好将其插入末端(有关详细信息,请参阅附录A.1)。我们尝试了一组更丰富的统计数据,但无法进一步改善变异。在平行工作中,Lin等人(2017)提供了关于向鉴别器显示多幅图像的益处的理论见解。

variation problem的替代解决方案包括unrolling the discriminator(Metz等人,2016年)以regularize其更新,以及一个 “repelling regularizer”(Zhao等人,2017年),它为生成器增加了一个新的损失项,试图鼓励它在一个最小批次中正交特征向量。Ghosh等人(2017)的多个生成器也是为了实现类似的目标。我们承认,这些解决方案可能比我们的解决方案增加了更多的变化–或者可能与之正交–但将详细的比较留待以后。

4 NORMALIZATION IN GENERATOR AND DISCRIMINATOR

GANs很容易因为两个网络之间的恶性竞争而导致信号量级的升级。大多数(如果不是所有的)早期解决方案通过在生成器中使用批量归一化的变体(Ioffe & Szegedy, 2015; Salimans & Kingma, 2016; Ba et al., 2016)来阻止这种情况的发生,而且通常也在判别器中。这些归一化方法最初是为了消除协方差的转移而引入的(These normalization methods were originally introduced to eliminate covariate shift)。然而,我们没有观察到这是GANs中的一个问题,因此认为GANs中的实际需求是约束信号的大小和竞争。我们使用一种不同的方法,它由两种成分组成,其中都不包括可学习的参数。

4.1 EQUALIZED LEARNING RATE

我们偏离了当前谨慎的权重初始化趋势,而是使用一个简单的N(0,1)初始化,然后在运行时显式地缩放权重。准确地说,我们设定了w^i=wi/c\hat w_i=w_i/cw^i​=wi​/c,其中wiw_iwi​是权重,c是来自He初始值设定项的每层归一化常数(He等人,2015)。动态地而不是在初始化过程中这样做的好处有些微妙,这与常用的自适应随机梯度下降方法(如RMSProp(Tieleman&Hinton,2012)和Adam(Kingma&Ba,2015))中的尺度不变性有关。这些方法通过其估计的标准差将梯度更新归一,从而使更新与参数的规模无关。因此,如果一些参数的动态范围比其他参数大,它们将需要更长的时间来调整。这是现代初始化器造成的情况,因此有可能一个学习率同时过大和过小。我们的方法确保动态范围,也就是学习速度,对所有权重都是一样的。van Laarhoven(2017)也独立使用了类似的推理。

4.2 PIXELWISE FEATURE VECTOR NORMALIZATION IN GENERATOR

为了不允许出现生成器和鉴别器中的幅度因竞争而失控的情况,我们在每个卷积层之后将生成器中每个像素的特征向量归一到单位长度。我们使用 "局部响应归一化 "的变体(Krizhevsky等人,2012)来做这件事,配置为bx,y=ax,y/1NΣj=0N−1(ax,yj)2+ϵ,whereϵ=10−8b_{x,y}=a_{x,y}/\sqrt{\frac{1}{N}\Sigma^{N-1}_{j=0}(a_{x,y}^j)^2+\epsilon},where\ \epsilon=10^{-8}bx,y​=ax,y​/N1​Σj=0N−1​(ax,yj​)2+ϵ​,where ϵ=10−8,N是特征图的数量,ax,y和bx,y分别是像素(x,y)中的原始和归一化特征向量。我们发现令人惊讶的是,这种强硬的约束似乎并没有对生成器造成任何伤害,事实上对于大多数数据集来说,它并没有对结果造成多大的改变,但是在需要的时候,它可以非常有效地防止信号量级的升级。

5 MULTI-SCALE STATISTICAL SIMILARITY FOR ASSESSING GAN RESULTS

为了比较一个GAN与另一个GAN的结果,人们需要调查大量的图像,这可能是乏味的、困难的和主观的。因此,最好是依靠自动方法,从大型图像集合中计算出一些指示性指标。我们注意到,现有的方法如MS-SSIM(Odena等人,2017)可靠地找到了大规模的模式塌陷,但未能对较小的影响作出反应,如颜色或纹理的变化损失,而且它们也没有直接评估图像质量与训练集的相似性。
论文地址:https://arxiv.org/pdf/1710.10196.pdf

Progressive GAN相关推荐

  1. 华人博士生首次尝试用两个Transformer构建一个GAN

    选自arXiv 作者:Yifan Jiang等 机器之心编译 机器之心编辑部 「attention is really becoming『all you need』.」 最近,CV 研究者对 tran ...

  2. GAN最新进展:8大技巧提高稳定性

    生成对抗网络GAN很强大,但也有很多造成GAN难以使用的缺陷.本文介绍了可以克服GAN训练缺点的一些解决方案,有助于提高GAN性能. 生成对抗网络 (GAN) 是一类功能强大的神经网络,具有广泛的应用 ...

  3. 不用卷积,也能生成清晰图像,华人博士生首次尝试用两个Transformer构建一个GAN

    「attention is really becoming『all you need』.」 选自arXiv,作者:Yifan Jiang等,机器之心编译,机器之心编辑部 最近,CV 研究者对 tran ...

  4. 「GAN优化」小批量判别器如何解决模式崩溃问题

    作者 | 小米粥 编辑 | 言有三 1. 模式崩溃的原因 当模式崩溃发生时,生成器 G(z)往往会把很多不同的z均映射成某个x,(更确切地说,指x以及其附近的点,用A表示),接下来更新判别器D(x)后 ...

  5. GAN:「太难的部分我就不生成了,在下告退」

    选自 arXiv 作者:David Bau, Jun-Yan Zhu等 机器之心编译 参与:Panda W 生成对抗网络(GAN)现在已经能合成极具真实感的图像了,但 MIT.IBM 和香港中文大学的 ...

  6. 在图像生成领域里,GAN这一大家族是如何生根发芽的

    作者:思源 生成对抗网络这一 ML 新成员目前已经枝繁叶茂了,截止今年 5 月份,目前 GAN 至少有 300+的论文与变体.而本文尝试借助机器之心 SOTA 项目梳理生成对抗网络的架构与损失函数发展 ...

  7. 为什么说GAN很快就要替代现有摄影技术了?

    https://www.toutiao.com/a6667315818692346382/ [新智元导读]自GAN诞生以来,在计算机视觉领域中表现可谓是惊艳连连:文本-图像转换.域迁移.图像修复/拓展 ...

  8. 【GAN优化】小批量判别器如何解决模式崩溃问题

    GAN的第二季开始更新了,还是熟悉的配方,还是熟悉的味道.第一季更新了12篇小文,只解读了GAN的冰山一角,第二季将作为第一季的"零零星星"的补充,讲解包括其他的损失函数.训练算法 ...

  9. 【每周CV论文推荐】 初学GAN必须要读的文章

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. GAN作为当前最有前途,也最烧钱的方向之一, ...

  10. 不用卷积也能生成清晰图像,用两个Transformer构建一个GAN

    作者|Yifan Jiang等 来源|机器之心 attention is really becoming『all you need』. 最近,CV 研究者对 transformer 产生了极大的兴趣并 ...

最新文章

  1. Nat. Med. | 人工智能临床研究新指南
  2. python可以做什么工作好-Python入门后,想要从事自由职业可以做哪方面工作?
  3. uniapp 自定义进度条_如何解决uniapp小程序下载进度条问题
  4. [python](爬虫)如何使用正确的姿势欣赏知乎的“长得好看是怎样一种体验呢?”问答中的相片...
  5. 【NLP】基于预训练的中文NLP工具介绍:ltp 和 fastHan
  6. eclipse项目导出错误处理
  7. c语言不通类型指针转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...
  8. 妹子每天加班1分钟,半年崩溃!向公司索赔55万!
  9. 童话世界区块宠物源码
  10. php eval 二进制,PHP eval函数使用介绍
  11. Android开发实现HttpClient工具类
  12. JavaEE基础(三)
  13. 一本名不符实的.NET书籍: Game Engine Toolset Development
  14. 在VC中使用Windows管道技术编程
  15. Win系统 - 全屏看视频时任务栏没有自动隐藏怎么办?
  16. 解锁pdf文件,删除pdf密码
  17. PaddleOCR整体了解
  18. 程序员情人节生日表白源码合集总有一款能够打动她(附带烟花特效,520爱心)
  19. 结构为王——确定分析思路(数据分析方法论)
  20. STM32G030C8T6读写flash

热门文章

  1. 计算机专业中职生自我鉴定报告,【中职生计算机自我鉴定】应届计算机毕业生自我鉴定...
  2. matlab plotyy 坐标轴设置,[转载]Matlab plotyy画双纵坐标图实例
  3. light动名词_动名词
  4. 戴尔服务器物理关机,戴尔服务器的远程开机和关机
  5. 计算机专业职业规划英语小作文,五年职业规划英语作文
  6. PageOffice 5.2 试用版注册使用
  7. 网上体育用品商城(ssm,mysql,bootstrap,html,css)
  8. 微信小程序上传照片并且预览
  9. 瞬间移动(c(n, m))
  10. Ability、capability 和 capacity