生成对抗网络(GAN)是机器学习中一个相对较新的概念,于2014年首次推出。他们的目标是合成与真实图像无法区分的人工样本,例如图像。GAN 应用程序的一个常见示例是通过从名人人脸数据集中学习来生成人工人脸图像。虽然GAN图像随着时间的推移变得更加逼真,但它们的主要挑战之一是控制其输出,即改变面部图像中的姿势,脸型和头发样式等特定特征。
NVIDIA的一篇新论文《基于风格的生成器架构》(A Style-Based Generator Architecture for GAN)提出了一种应对这一挑战的新模型。StyleGAN逐渐生成人工图像,从非常低的分辨率开始,一直到高分辨率(1024×1024)。通过分别修改每个级别的输入,它可以控制在该级别中表达的视觉特征,从粗略的特征(姿势、脸型)到精细的细节(头发颜色),而不会影响其他级别。
这种技术不仅可以更好地理解生成的输出,还可以产生最先进的结果 - 高分辨率图像看起来比以前生成的图像更真实。
每个GAN的基本组件是两个神经网络 - 一个从头开始合成新样本的生成器,以及一个从训练数据和生成器输出中获取样本并预测它们是“真”还是“假”的鉴别器。
发生器输入是随机向量(噪声),因此其初始输出也是噪声。随着时间的推移,当它收到来自鉴别器的反馈时,它会学会合成更“逼真”的图像。通过比较生成的样本和真实样本,鉴别器也会随着时间的推移而改进,使生成器更难欺骗它。
研究人员在生成高质量的大图像(例如 1024×1024)时遇到了麻烦,直到 2018 年 NVIDIA 首次使用 ProGAN 应对这一挑战。ProGAN 的关键创新是渐进式训练——它首先用非常低分辨率的图像(例如 4×4)训练生成器和鉴别器,每次都添加更高分辨率的层。
该技术首先通过学习即使在低分辨率图像中出现的基本特征来创建图像的基础,并随着时间的推移随着分辨率的增加而学习越来越多的细节。训练低分辨率图像不仅更容易、更快,还有助于训练更高级别,因此,总训练也更快。
ProGAN 可生成高质量的图像,但与大多数模型一样,它控制所生成图像的特定特征的能力非常有限。换句话说,特征是纠缠的,因此尝试调整输入,即使是一点点,通常也会同时影响多个特征。一个很好的类比是基因,其中改变单个基因可能会影响多个特征。
ProGAN 从低分辨率层到高分辨率层的渐进式训练。来源:(Sarah Wolf在ProGAN上的精彩博客文章)。
StyleGAN论文提供了ProGAN图像生成器的升级版本,重点是生成器网络。作者观察到,ProGAN逐行层的潜在好处是,如果使用得当,它们能够控制图像的不同视觉特征。图层(和分辨率)越低,其影响的特征就越粗糙。本文将特征分为三种类型:
新生成器包括ProGAN生成器的几个新增功能:
映射网络的目标是将输入向量编码为中间向量,该中间向量的不同元素控制不同的视觉特征。这是一个不平凡的过程,因为使用输入向量控制视觉特征的能力是有限的,因为它必须遵循训练数据的概率密度。例如,如果黑发人物的图像在数据集中更常见,则更多的输入值将映射到该要素。因此,模型无法将部分输入(向量中的元素)映射到特征,这种现象称为特征纠缠。但是,通过使用另一个神经网络,该模型可以生成一个不必遵循训练数据分布的向量,并且可以减少特征之间的相关性。
映射网络由 8 个全连接层组成,其输出 ⱳ 的大小与输入层 (512×1) 相同。
带有映射网络的生成器(除了ProGAN合成网络)
AdaIN(自适应实例规范化)模块将映射网络创建的编码信息 ⱳ 传输到生成的图像中。该模块被添加到合成网络的每个分辨率级别,并定义该级别中特征的可视化表达:
生成器的自适应实例规范化 (AdaIN)
大多数模型,包括ProGAN,使用随机输入来创建生成器的初始图像(即4×4级别的输入)。StyleGAN 团队发现图像特征由 ⱳ 和 AdaIN 控制,因此初始输入可以省略并替换为常量值。虽然这篇论文没有解释为什么它提高了性能,但一个安全的假设是它减少了特征纠缠——网络更容易只使用 ⱳ 学习,而不依赖于纠缠的输入向量。
综合网络输入替换为常量输入
人们的脸上有许多方面很小,可以看作是随机的,例如雀斑、头发的精确位置、皱纹、使图像更逼真并增加输出多样性的特征。将这些小特征插入GAN图像的常用方法是向输入向量添加随机噪声。然而,在许多情况下,由于上述特征纠缠现象,控制噪声效果很棘手,这会导致图像的其他特征受到影响。
StyleGAN 中的噪声以类似于 AdaIN 机制的方式添加 — 在 AdaIN 模块之前向每个通道添加缩放噪声,并稍微改变其操作的分辨率级别特征的视觉表达。
将缩放噪声添加到合成网络的每个分辨率级别
StyleGAN 生成器在合成网络的每个级别中使用中间向量,这可能会导致网络了解级别是相关的。为了降低相关性,模型随机选择两个输入向量,并为它们生成中间向量 ⱳ。然后,它用第一个关卡训练一些关卡,并(在随机点)切换到另一个关卡以训练其余关卡。随机开关确保网络不会学习并依赖于级别之间的相关性。
虽然它不能提高所有数据集的模型性能,但这个概念有一个非常有趣的副作用——它能够以连贯的方式组合多个图像(如下面的视频所示)。该模型生成两个图像 A 和 B,然后通过从 A 获取低级特征和从 B 获取其余特征来组合它们。
生成模型的挑战之一是处理训练数据中代表性不佳的区域。生成器无法学习它们并创建类似于它们的图像(而是创建不好看的图像)。为了避免生成不良图像,StyleGAN 截断中间向量 ⱳ,迫使它保持接近“平均”中间向量。
训练模型后,通过选择许多随机输入产生“平均值”ⱳavg;使用映射网络生成中间向量;并计算这些向量的平均值。生成新图像时,ⱳ 不是直接使用映射网络输出,而是转换为 ⱳ_new=ⱳ_avg+Ψ(ⱳ -ⱳ_avg),其中 Ψ 的值定义图像与“平均”图像的距离(以及输出的多样性)。有趣的是,通过在仿射变换块之前为每个级别使用不同的 Ψ,模型可以控制每组特征与平均值的距离,如下面的视频所示。
StyleGAN 在 ProGAN 上的额外改进是更新了几个网络超参数,例如训练持续时间和损失函数,并将从最近邻的上/下缩放替换为双线性采样。虽然此步骤对模型性能很重要,但它的创新性较低,因此此处不再详细描述(本文附录 C)。
StyleGAN 概述
该论文介绍了两个数据集的最新结果 - CelebA-HQ,由名人图像组成,以及一个新的数据集Flickr-Faces-HQ(FFHQ),由“普通”人的图像组成,更加多样化。下图显示了模型不同配置的 Frèchet 起始距离 (FID) 分数。
与ProGAN相比,模型在不同配置中的性能(FID分数)。分数越低模型越好(来源:StyleGAN)
除了这些结果之外,该论文还通过在另外两个卧室图像和汽车图像数据集上展示其结果来表明该模型不仅针对面部量身定制。
为了使关于特征分离的讨论更加定量,本文提出了两种测量特征解缠的新方法:
通过比较输入向量 z 和中间向量 ⱳ 的这些指标,作者表明 ⱳ 中的特征明显更可分离。这些指标还显示了在制图网络中选择 8 个图层与 1 或 2 个图层相比的优势。
StyleGAN使用8个Tesla V100 GPU在CelebA-HQ和FFHQ数据集上进行了为期一周的培训。它在TensorFlow中实现,并将是开源的。
StyleGAN是一种开创性的论文,不仅可以生成高质量和逼真的图像,还可以对生成的图像进行卓越的控制和理解,从而比以前更容易生成可信的假图像。StyleGAN中提出的技术,特别是映射网络和自适应规范化(AdaIN),可能会成为GAN未来许多创新的基础。