这是NVIDIA的一篇新论文,一个对于GAN(StyleGAN)的基于样式的生成器体系结构,提出了一个新的模型来应对这个挑战。StyleGAN是一步一步地生成人工图像的,从非常低的分辨率开始,一直到高分辨率(1024×1024)。通过分别地修改网络中每个级别的输入,它可以控制在该级别中所表示的视觉特征,从粗糙的特征(姿势、面部形状)到精细的细节(头发颜色),而不会影响其它的级别。
这种技术不仅可以更好地理解所生成的输出,而且还可以产生最高水平的结果 — 比以前生成的图像看起来更加真实的高分辨率图像。
来源:StyleGAN
2018年NVIDIA首次使用ProGAN应对这一挑战时,研究人员都无法生成高质量的大图像(如:1024×1024)。ProGAN的关键创新点是渐进式训练 — 它首先使用非常低分辨率的图像(如:4×4)开始训练生成器和识别器,并且每次都增加一个更高分辨率的网络层。
这项技术首先通过学习即使在低分辨率图像中也可以显示的基本特征,来创建图像的基本部分,并且随着分辨率的提高和时间的推移,学习越来越多的细节。低分辨率图像的训练不仅简单、快速,而且有助于更高级别的训练,因此,整体的训练也就更快。
ProGAN概况
ProGAN生成高质量的图像,但与大多数模型一样,它控制所生成图像的特定特征的能力非常有限。换句话说,这些特性是互相关联的,因此尝试调整一下输入,即使是一点儿,通常也会同时影响多个特性。一个很好的类比就是基因组,在其中改变一个基因可能影响多个特性。
从低分辨率网络层到高分辨率网络层的ProGAN渐进式训练
StyleGAN如何工作
StyleGAN论文提供了一个升级版本的ProGAN图像生成器,重点关注生成器网络。作者们观察到ProGAN渐进层的一个潜在的好处是,如果使用得当,它们能够控制图像的不同视觉特征。层和分辨率越低,它所影响的特征就越粗糙。本文将这些特征分为三种类型:
1、粗糙的—分辨率最高82,影响姿势、一般发型、面部形状等;
2、中等的—分辨率为162至322,影响更精细的面部特征、发型、眼睛的睁开或是闭合等;
3、高质的—分辨率为642到10242,影响颜色方案(眼睛、头发和皮肤)和微观特征;
除ProGAN生成器之外的一些:
映射网络
映射网络的目标是将输入向量编码为中间向量,中间向量的不同元素控制不同的视觉特征。这是一个非常重要的过程,因为使用输入向量来控制视觉特征的能力是非常有限的,因为它必须遵循训练数据的概率密度。例如,如果黑头发的人的图像在数据集中更常见,那么更多的输入值将会被映射到该特征上。因此,该模型无法将部分输入(向量中的元素)映射到特征上,这一现象被称为特征纠缠。然而,通过使用另一个神经网络,该模型可以生成一个不必遵循训练数据分布的向量,并且可以减少特征之间的相关性。
映射网络由8个全连接的层组成,它的输出ⱳ与输入层(512×1)的大小相同。
带映射网络的生成器(除ProGAN合成网络之外)
样式模块(AdaIN)
AdaIN(自适应实例标准化)模块将映射网络创建的编码信息ⱳ传输到生成的图像中。该模块被添加到合成网络的每个分辨率级别中,并定义该级别中特征的可视化表达式:
1、卷积层输出的每个通道首先进行标准化,以确保步骤3的缩放和切换具有预期的效果;
2、中间向量ⱳ使用另一个全连接的网络层(标记为A)转换为每个通道的比例和偏差;
3、比例和偏差的向量切换卷积输出的每个通道,从而定义卷积中每个过滤器的重要性。这个调优操作将信息从ⱳ转换为可视的表达方式;
生成器的自适应实例标准化(AdaIN)
删除传统输入
大多数的模型以及其中的ProGAN使用随机输入来创建生成器的初始图像(即4×4级别的输入)。StyleGAN团队发现图像特征是由ⱳ和AdaIN控制的,因此可以忽略初始输入,并用常量值替代。虽然本文没有解释它为什么能提高性能,但一个保险的假设是它减少了特征纠缠,对于网络在只使用ⱳ而不依赖于纠缠输入向量的情况下更容易学习。
用常量输入替换合成网络输入
随机变化
人们的脸上有许多小的特征,可以看作是随机的,例如:雀斑、发髻线的准确位置、皱纹、使图像更逼真的特征以及各种增加输出的变化。将这些小特征插入GAN图像的常用方法是在输入向量中添加随机噪声。然而,在许多情况下,由于上述特征的纠缠现象,控制噪声的影响是很复杂的,从而会导致图像的其它特征受到影响。
StyleGAN中的噪声以类似于AdaIN机制的方式添加,在AdaIN模块之前向每个通道添加一个缩放过的噪声,并稍微改变其操作的分辨率级别特征的视觉表达方式。
在合成网络的每个分辨率级别上添加缩放过的噪声
样式混合
StyleGAN生成器在合成网络的每个级别中使用了中间向量,这有可能导致网络学习到这些级别是相关的。为了降低相关性,模型随机选择两个输入向量,并为它们生成了中间向量ⱳ。然后,它用第一个输入向量来训练一些网络级别,然后(在一个随机点中)切换到另一个输入向量来训练其余的级别。随机的切换确保了网络不会学习并依赖于一个合成网络级别之间的相关性。
虽然它并不会提高所有数据集上的模型性能,但是这个概念有一个非常有趣的副作用 — 它能够以一种连贯的方式来组合多个图像(视频请查看原文)。该模型生成了两个图像A和B,然后通过从A中提取低级别的特征并从B中提取其余特征再组合这两个图像。
在W中的截取技巧
在生成模型中的一个挑战,是处理在训练数据中表现不佳的地方。这导致了生成器无法学习和创建与它们类似的图像(相反,它会创建效果不好的图像)。为了避免生成较差的图像,StyleGAN截断了中间向量ⱳ,迫使它保持接近“平均”的中间向量。
对模型进行训练之后,通过选择多个随机的输入,用映射网络生成它们的中间向量,并计算这些向量的平均值,从而生成“平均”的平均值ⱳ。当生成新的图像时,不用直接使用映射网络的输出,而是将值ⱳ转换为ⱳ_new=ⱳ_avg+�(ⱳ -ⱳ_avg),其中�的值定义了图像与“平均”图像的差异量(以及输出的多样性)。有趣的是,在仿射转换块之前,通过对每个级别使用不同的�,模型可以控制每个特征集与平均值的差异量。
微调
在ProGAN上,StyleGAN的另外一个改进措施是更新几个网络超参数,例如训练持续时间和损失函数,并将离得最近的放大或缩小尺度替换为双线性采样。
结果
本文介绍了两个数据集的最新结果,一个是由名人图片组成的— CelebA-HQ,另一个是由“普通”人图片组成的、更加多样化的新数据集— Flickr-Faces-HQ (FFHQ)。下图显示了模型的不同配置的Frèchet inception distance (FID)得分
与ProGAN相比,模型在不同配置下的性能(FID得分),分数越低模型越好(来源: StyleGAN)
除了这些结果之外,本文还说明了该模型并不仅仅是通过在卧室图像和汽车图像两个数据集上展示其结果而定制的。
特征分离
为了使关于特征分离的讨论更加的量化,本文提出了两种新的特征分离的测量方法:
1、感知路径长度 — 当在两个随机输入之间插入时,测量两个连续图像(它们的VGG16嵌入)之间的差异。剧烈的变化意味着多个特性已经同时改变了,它们有可能会被纠缠;
2、线性可分离性 — 是将输入按照二进制类进行分类的能力,如男性和女性。分类越好,特征就越容易区分。
通过对输入的向量z和中间向量ⱳ的指标进行比较,作者们发现在ⱳ中的特征很明显地更容易分离。这些指标还表明了在映射网络中选择8个层与选择1到2个层相比的好处。
实施细节
StyleGAN在CelebA-HQ和FFHQ数据集上接受了为期一周的训练,使用了8个Tesla V100 GPU。它是在TensorFlow中实现的,并且将开源的。
结论
StyleGAN是一篇突破性的论文,它不仅可以生成高质量的和逼真的图像,而且还可以对生成的图像进行较好的控制和理解,甚至使生成可信度较高的假图像变得比以前更加的容易。在StyleGAN中提出的一些技术,特别是映射网络和自适应实例标准化(AdaIN),可能是未来许多在GAN方面创新的基础。