STYLEGAN:生成对抗网络中一种基于样式的生成器结构
Tero Karras Samuli Laine Timo Aila
NVIDIA NVIDIA NVIDIA
tkarras@nvidia.com slaine@nvidia.com taila@nvidia.com
6 Feb 2019
校对: 丫丫是只小狐狸
> 译者语:stylegan
论文中英文对照合集 : https://aiqianji.com/blog/articles
摘要 Abstract
我们借鉴风格迁移(style transfer)的想法,提出了一种用于生成对抗网络的新生成器体系结构。 新的架构可自动学习,无监督地分离高级属性(例如,在人脸上训练时的姿势和身份)以及在生成的图像中(例如雀斑,头发)随机变化,并且能够直观地、按特定尺度地控制合成。 新的生成器在传统的生成质量指标方面提高了最新技术水平值,显示出更好的插值特性,并且可以更好地解决变异的潜在因素。 为了量化插值质量和分解,我们提出了两种适用于任何生成器架构的新的自动化方法。最后,我们介绍了一个新的,高度多样化和高质量的人脸数据集。
1 介绍 INTRODUCTION
由生成方法产生的图像的分辨率和质量 - 尤其是生成对抗性网络(GAN)[21] - 近来已经迅速改善[26,38,5]。然而,生成器继续作为黑匣子运行,尽管最近大家做出了这方面的努力[3],仍然缺乏对图像合成过程的各个方面(例如,随机特征的组织)的理解。潜在空间的性质也很难理解,并且通常展示的潜在空间插值[12,50,35]没有提供将不同生成器相互比较的定量方法。在风格迁移文献[26]的推动下,我们以一种揭示控制图像合成过程的新方法的方式重新设计了生成器结构。我们的生成器从学习常量输入开始,并基于潜在编码(latent code)调整每个卷积层图像的“样式”,因此直接控制不同尺度的图像特征的强度。结合直接注入网络的噪声,这种架构变化导致生成的图像中的随机属性与随机变化(例如雀斑,头发)之间自动,无监督地分离,并实现了直观的缩放特定混合和插值操作。
我们不以任何方式修改鉴别器或损失函数,因此我们的工作与正在进行的关于 GAN 损失函数,正则化和超参数的讨论是互为独立的[23,43,5,38,42,34] 。
我们的生成器将输入的潜在编码嵌入到中间的潜在空间中,这对于如何在网络中表示噪音因子具有深远的影响。输入潜在空间必须遵循训练数据的概率密度,并且我们认为这会导致某种程度的不可避免的纠缠。我们的中间潜在空间不受限制,因此可以被解开。由于以前估算潜在空间解缠的方法并不直接适用于我们的情况,我们提出了两个新的自动化指标:
- 感知路径长度和线性可分性
- 用于量化生成器的这些方面。
使用这些指标,我们表明,与传统的生成器架构相比,我们的生成器允许更多线性,更少纠缠的不同变化因素的表示。最后,我们提出了一个新的人脸数据集(Flickr-FacesHQ,FFHQ),它提供了更高的质量,涵盖了比现有高分辨率数据集更广泛的变化(附录 A)。我们已将此数据集与我们的源代码和预先训练的网络一起公开提供,见 http://stylegan.xyz/video,随附的视频可在同一链接下找到。
2. 基于样式的生成器 STYLE-BASED GENERATOR
(a) 传统生成器 (b) 基于 Style 的生成器
图 1.虽然传统的生成器[29]仅通过输入层提供潜在编码,但我们首先将输入映射到中间潜在空间 W,然后在每一个卷积层通过自适应实例规范化(AdaIN)控制生成器。 在评估非线性之前,在每次卷积之后添加高斯噪声。 这里“A”代表学习的仿射变换,“B”将学习的每通道缩放因子应用于噪声输入。 映射网络 f 由 8 个层组成,合成网络 g 由 18 层组成 - 每个分辨率两层(分辨率从$4^2$-$1024^2$ )。使用单独的 1×1 卷积将最后一层的输出转换为 RGB,类似于Karras 等人[29]。 我们的生成器共有 2620 万可训练的参数,而传统生成器的参数量为 2310 万。
传统上,潜在编码通过输入层,即前馈网络的第一层(图 1a)提供给生成器。 我们通过省略输入层并从学习的常量开始代替(图 1b,右)。 给定输入潜在空间$\mathcal{Z}$ 中的潜在代码 z,非线性映射网络$f:\mathcal{Z}\to\mathcal{W}$ 首先产生 w∈ $\mathcal{W}$(图 1b,左)。 为简单起见,我们设置了两者的维度为 512,并且将映射$\mathcal{F}$使用8层MLP实现,我们将在第4.1节中进行分析。 然后,学习的仿射变换将 w 专门化为样式${\bf y}=({\bf y}{s},{\bf y}{b})$,其控制在合成网络 g 的每个卷积层之后的自适应实例归一化(AdaIN)[26,16,20,15]运算$\mathcal{G}$。
AdaIN 操作定义为
$\textrm{AdaIN}({\bf x}{i},{\bf y})={\bf y}{s,i}\frac{{\bf x}{i}-\mu({\bf x}%{i})}{\sigma({\bf x}{i})}+{\bf y}{b,i}\textrm{,}$
其中每个特征映射 $x_i$ 分别标准化,然后使用样式 y 中相应的标量组件进行缩放和偏置。 因此,y 的维度是该层上的特征映射的数量的两倍。
和风格转换相比,我们的方法,是从向量 w计算出一个空间不变的样式 y ,而不是使用示例图像来计算。 我们选择为 y 使用“style”这个词,因为类似的网络架构已经用于前馈式传输[23],无监督的图像到图像转换[24]和域混合[19]。
最后,我们通过引入显式噪声输入,为生成器提供了一种生成随机细节的直接方法。这些是由不相关的高斯噪声组成的单通道图像,我们将专用噪声图像馈送到合成网络的每一层。使用学习的每个特征缩放因子将噪声图像广播到所有特征图,然后将其添加到相应卷积的输出中,如图 1b 所示。添加噪声输入的含义在第 3.2 和 3.3 节中讨论。
2.1. 生成图像的质量
在研究我们的生成器的特性之前,我们通过实验证明重新设计不会影响图像质量,实际上会大大改善图像质量。表 1给出了CelebA-HQ [26]和我们新的FFHQ数据集(附录 A)中各种生成器体系结构的Fréchet起始距离(FID)[21]。其他数据集的结果在附录E中给出 。我们的基准配置(a)是Karras等人的Progressive GAN设置。 [ 26 ] ,除非另有说明,否则我们将从中继承网络和所有超参数。我们首先通过使用双线性上/下采样操作,更长的训练和调整的超参数切换到改进的基线(b)。附录C中包含训练设置和超参数的详细说明 。然后,我们通过添加映射网络和AdaIN操作(c)进一步改善这个新基线,并得出令人惊讶的观察结果,即该网络不再受益于将潜在代码输入到第一卷积层中。因此,我们通过移除传统的输入层并从学习的 4 × 4 × 512恒定张量(D)开始图像合成来简化架构。我们发现非常值得注意的是,即使只通过控制 AdaIN 操作的样式接收输入,合成网络也能够产生有意义的结果。
最后,我们介绍了进一步改善结果的噪声输入(E),以及对相邻样式进行去相关的新型混合正则化(F),并对生成的图像进行更细粒度的控制(第 3.1 节)。
我们使用两种不同的损耗函数评估我们的方法:对于CelebA-HQ,我们依赖WGAN-GP [ 20 ],而FFHQ中,配置A使用WGAN-GP,配置B-F中使用 非饱和损耗non-saturating loss[ 18 ]和$R_1$正则化[ 37,44,13 ]。我们发现这些选择可以提供最佳结果。我们方法不会改变损失函数。
我们观察到, 基于样式的生成器(E)相比传统生成器(B)显著提高了 FID,几乎达到了 20%,后来在大型数据库ImageNet[6,5]通过并行计算的测量是一致的。图 2 显示了使用我们的生成器从 FFHQ 数据集生成的一组未经验证的新图像。正如 FID所证实的那样,平均质量很高,甚至眼镜和帽子等配件也能成功合成。对于这个图,我们使用所谓的截断技巧避免了从W 的极端区域采样[40,5,32] - 附录 B 详述了如何在 W 而不是 Z 中执行该技巧。注意我们的生成器允许在低分辨率上应用选择性地截断方法,以便不影响高分辨率细节。本文中的所有 FID 都是在没有截断技巧的情况下计算出来的,我们在图 2 和视频中仅将其用于说明目的。所有图像均以 $1024^2$分辨率生成。
图2:我们的基于样式的生成器(config f)与FFHQ数据集生成的未整理的图像集。
在这里,我们使用的截断特技的变化[ 5,29 ]与ψ =0.7 分辨率$4^2$-$32^2$。请查看随附的视频以获取更多结果。
2.2. 现有技术
关于 GAN 架构的大部分工作都集中在提高判别器部分,例如使用多个判别器[17,15],多分辨率判别[58,53]或自注意力机制[61]来改进判别器。 生成器侧的工作主要集中在输入潜在空间的精确分布[5]或通过高斯混合模型[4],聚类[46]或鼓励凸性[50]对输入潜在空间进行修整。
最近的条件生成器通过单独的嵌入网络给生成器[44]中很多层提供类标识符,而latent的仍然通过输入层提供。部分作者已经考虑将潜在编码的一部分馈送到多个生成器层[9,5]。 在平行工作中,陈等人[6]使用 AdaIN“自我调制”生成器,与我们的工作类似,但不考虑中间潜在空间或噪声输入。
图3:从A和B生成对应的潜码,其他的图像是这两种风格混合的结果。
从B获取对应于粗略空间分辨率的图层样式($4^2$ – $8^2$),复制姿势,一般发型,脸型和眼镜等高级属性,从目标图像A获取颜色(眼睛,头发,灯光)和更精细的面部特征。如果我们改为复制中间层的样式($16^2$ – $32^2$),从源图像B获取较小比例的面部特征,发型,打开/合上的眼睛,同时保留了目标图像A的姿势,总体脸形和眼镜。最后,复制对应于高分辨率的样式($64^2$ – $1024^2$)主要从源图像B上带来了配色方案和微观结构。
3 基于样式的生成器的属性 PROPERTIES OF THE STYLE-BASED GENERATOR
我们的生成器体系结构使得可以通过特定于比例的样式修改来控制图像合成。我们可以将映射网络和仿射变换视为一种从学习到的分布中为每种样式绘制样本的方法,而将合成网络视为一种基于样式集合生成新颖图像的方法。每种样式的效果都可以在网络中定位,即,修改样式的特定子集仅影响图像的某些方面。
为了了解这种定位的原因,让我们考虑AdaIN运算(等式 1)如何首先将每个通道归一化为零均值和单位方差,然后才基于样式应用比例和偏差。根据样式的要求,新的每通道统计数据修改了后续卷积操作的特征的相对重要性,但由于归一化,它们不依赖于原始统计信息。因此,每种样式在被下一个 AdaIN 操作覆盖之前仅控制一个卷积。
3.1. 风格混合
为了进一步鼓励风格进行本地化,我们采用混合正则化,其中使用两个随机潜码而不是训练期间的一个潜在编码生成给定百分比的图像。 当生成这样的图像时,我们只需 在合成网络中随机选择的位置从一个潜在代码切换到另一个潜在代码(我们称为样式混合的操作)即可。具体来说,我们运行两个潜在代码z1, z2 通过映射网络,并具有相应的 w1,w2 控制样式,以便 w1 在交叉点之前应用,w2 在交叉点之后应用。 这种正则化技术可以防止网络假设相邻的样式是相关的。
表 2.通过对不同百分比的训练样例进行混合正则化训练的网络的FFHQ 中的 FID。
在这里,我们通过随机化 1…4 潜码和它们之间的交叉点来对受过训练的网络进行压力测试。 混合正则化可显著提高对这些不良操作的耐受性。 标签 E 和 F 参见表 1 中的配置。
表 2显示了在训练期间启用混合正则化如何显著改善定位,通过在测试时混合多个潜码的情况下改进的 FID 来表示。图3 给出了通过混合不同尺度的两个潜码合成的图像的例子。我们可以看到每个样式子集控制图像的有意义的高级属性。
3.2. 随机变化
人类肖像中有许多方面可以被视为随机的,例如毛发,茬,雀斑或皮肤毛孔的确切位置。只要它们遵循正确的分布,任何这些都可以在不影响我们对图像的感知的情况下进行随机化。让我们考虑一下传统生成器如何实现随机变化。鉴于网络的唯一输入是通过输入层,网络需要发明一种方法来生成空间变化的伪随机数。这会消耗网络容量,并且很难隐藏生成的信号的周期性,而且并不总是成功的,正如生成的图像中常见的重复图案所证明的那样。我们的架构通过在每次卷积后添加像素级噪声(per-pixel noise)来完全避免了这些问题。
图 4显示了使用我们的生成器生成的相同基础图像,搭配不同的噪声的随机实现。我们可以看到,噪声仅影响随机方面,而整体构成和身份等高级属性完整无缺。图 5进一步说明了将随机变化应用于不同层子集的效果。由于这些效果最好在动画中看到,请查阅随附的视频,以演示如何改变一层的噪声输入以匹配的比例导致随机变化。
我们发现有趣的是,噪声的影响似乎和在网络中的定位紧密相关。我们假设在生成器的任何一点,都有压力尽快引入新的内容,而我们的网络创建随机变化的最简单方法是依靠提供的噪声。每一层都有一组新的噪声,因此没有动力从早期的激活中产生随机效应,从而产生局部效应。我们假设在发生器中的任何位置,都有尽快引入新内容的压力,而我们的网络产生随机变化的最简单方法是依靠所提供的噪声。每层都有一组新的噪声,因此网络没有动机从较早的激活中产生随机效应,从而不会导致局部效应。
图4:随机变化的例子。(a)两张生成的图像。(b)具有不同输入噪声实现方式的放大。尽管总体外观几乎相同,但各个头发的放置方式却大不相同。(c)超过100个不同实现的每个像素的标准偏差,突出显示图像的哪些部分受噪声影响。主要区域是头发,轮廓和背景部分,但眼睛反射也有有趣的随机变化。身份和姿势等全局方面不受随机变化的影响。
图5:噪声输入在生成器不同层的影响。(a)噪声应用于所有层。(b)无噪音。(c)仅在精细层中产生噪音($64^2$ – $1024^2$)。(d)仅在粗糙层中产生噪音($4^2$ – $8^2$)。
我们可以看到,人为地忽略噪声会导致无特色的“绘画”外观。粗糙的噪音会导致头发大规模卷曲,并出现较大的背景特征,而细微的噪音则会使头发卷曲,背景细节和皮肤毛孔更细。
3.3将全局效应与随机性分开
前面的部分以及随附的视频演示了,虽然更改样式具有全局效果(更改姿势,身份等),但是噪音仅影响无关紧要的随机变化(梳理不同的头发,胡须等)。此观察结果与风格转换文献一致,在那里它已经确定的是空间不变的统计(革兰氏矩阵,信道逐平均值,方差等)可靠地对图像的风格编码[ 17,33 ],而空间变化特征的编码是一个特定的实例。
在我们基于样式的生成器中,样式会影响整个图像,因为完整的要素图会按相同的值缩放和偏移。因此,可以连贯地控制诸如姿势,照明或背景样式之类的全局效果。同时,噪声被独立地添加到每个像素,因此理想地适合于控制随机变化。如果网络试图使用噪声来控制(例如,摆姿势),那将导致空间上不一致的决策,然后判别器将受到惩罚。因此,网络会在没有明确指导的情况下学会适当地使用全局和局部渠道。
4 纠缠研究 DISENTANGLEMENT STUDIES
解缠有各种定义[52,48,2,7,18],但共同的目标是由线性子空间构成的潜在空间,每个空间控制一个变异因子。 然而,Z 中每个因子组合的采样概率需要与训练数据中的对应密度相匹配。 如图 6 所示,这排除了与典型数据集和输入潜在分布完全无关的因素。少数人工数据集设计为解缠研究(例如,[ 36,16 ])的制表具有均匀的频率变化的预定因子的所有组合,从而隐藏的问题。
图 6.具有两个变异因素的示例性示例(图像特征,例如,男性气质和头发长度)。
(a)一个示例训练集,其中一些组合(例如,长发男性)几乎不存在。
(b)这会强制从 Z 到图像特征的映射变为弯曲,以便禁止组合在 Z 中消失,以防止对无效组合进行采样。
(c)然而,从 Z 到 W 的学习映射能够“消除”大部分变形。
我们的生成器架构的一个主要好处是中间潜在空间 W 不必根据任何固定分布支持采样;它的采样密度是由学习的分段连续映射 f(z)引起的。该映射可以适于“解除”W,以使变化因子变得更加线性。我们认为生成器有这样的压力,因为基于解缠的表示而不是基于纠缠的表示来生成逼真的图像应该更容易。因此,我们期望训练在无人监督的环境中,即当事先不知道变异因素时,能够减少纠缠 W [10,33,47,8,25,30,7]。不幸的是,最近提出的用于量化解缠的指标[25,30,7,18]需要编码器网络将输入图像映射到潜码。由于我们的基线GAN 缺少这样的编码器,因此这些方法不适合我们的目的。虽然可以为此目的添加一个额外的网络[8,11,14],但我们希望避免将工作投入到不属于实际解决方案的组件中。为此,我们描述了两种量化解缠的新方法,这两种方法都不需要编码器或已知的变化因子,因此可以计算任何图像数据集和生成器。
4.1感知路径长度
如Laine [ 32 ]所述,潜在空间向量的插值可能会在图像中产生令人惊讶的非线性变化。例如,两个端点中都不存在的要素可能会出现在线性插值路径的中间。这表明潜在空间纠缠并且变化因子未正确分离。为了量化这种效果,我们可以测量在潜在空间中执行插值时图像的急剧变化。直观地说,与高度弯曲的潜在空间相比,弯曲程度较小的潜在空间应在感知上更平滑地过渡。
作为我们度量标准的基础,我们使用基于感知的成对图像距离[ 56 ],该距离 是根据两个VGG16 [ 50 ]嵌入之间的加权差计算得出的,权重合适,从而使度量与人类感知相似性判断相符 。如果将潜在空间插值路径细分为线性段,则可以将该段路径的总感知长度定义为每个距离的感知差之和,如图像距离度量所报告。感知路径长度的自然定义是无限细细分下该总和的极限,但实际上,我们使用较小的细分ε对其进行近似$\epsilon=10^{-4}$。潜在空间 Z 中的平均感知路径长度,超过所有可能的终点,因此:
$\begin{array}[]{r@{}l}\hskip-8.535827ptl_{\mathcal{Z}}=\operatorname{\mathbb{E%}}\Big{[}{\displaystyle\frac{1}{\epsilon^{2}}}d\big{(}G(\mathrm{slerp}({\bf z%}{1},{\bf z}{2};,t)),\G(\mathrm{slerp}({\bf z}{1},{\bf z}{2};,t+\epsilon))\big{)}\Big{]}\textrm{%,}\end{array}$
其中${\bf z}{1},{\bf z}{2}\sim P({\bf z}),t\sim U(0,1)$,G 是生成器(即$g\circ f$ 用于基于样式的网络),以及 $d(\cdot,\cdot)$评估结果图像之间的感知距离。这里$\mathrm{slerp}$表示球面插值运算 [ 49 ],这是在归一化输入潜在空间[ 53 ]中进行插值的最合适方法 。为了专注于面部特征而不是背景,我们在评估成对图像指标之前将生成的图像裁剪为仅包含面部。作为指标d碰巧是二次方 [ 56 ],我们除以$\epsilon^{2}$ 代替 $\epsilon$,为了消除对细分粒度的不必要依赖。我们通过抽取100,000个样本来计算期望值。
计算 W 中的平均感知路径长度以类似的方式执行:
$\begin{array}[]{r@{}l}\hskip-8.535827ptl_{\mathcal{W}}=\operatorname{\mathbb{E%}}\Big{[}{\displaystyle\frac{1}{\epsilon^{2}}}d\big{(}g(\mathrm{lerp}(f({\bf z%}{1}),f({\bf z}{2});,t)),\g(\mathrm{lerp}(f({\bf z}{1}),f({\bf z}{2});,t+\epsilon))\big{)}\Big{]}%\textrm{,}\end{array}$
唯一的区别是插值发生在 $\m