StyleGAN提出的背景

ProGAN:
NVIDIA在2017年提出的ProGAN解决了生成高分辨率图像(如1024×1024)的问题。ProGAN的关键创新之处在于渐进式训练——从训练分辨率非常低的图像(如4×4)的生成器和判别器开始,每次都增加一个更高的分辨率层。

缺陷:与多数GAN一样,ProGAN控制生成图像的特定特征的能力非常有限。这些属性相互纠缠,即使略微调整输入,会同时影响生成图像的多个属性。所以如何将ProGAN改为条件生成模型,或者增强其微调单个属性的能力,是一个可以研究的方向。

解决方法:StyleGAN是NVIDIA继ProGAN之后提出的新的生成网络,其主要通过分别修改每一层级的输入,在不影响其他层级的情况下,来控制该层级所表示的视觉特征。这些特征可以是粗的特征(如姿势、脸型等),也可以是一些细节特征(如瞳色、发色等)


文章目录

  • StyleGAN提出的背景
  • 前言
  • 一、ProGAN框架
  • 二、StyleGAN框架
    • 1. Mapping network
    • 2. AdaIN
    • 3. 添加随机噪声
    • 4. 混合正则化
  • 三、量化隐空间(latent space)耦合度的方法
    • 感知路径长度
    • 线性可分性(linear separability)
  • 四、总结

前言


一、ProGAN框架

ProGAN首先通过学习即使在低分辨率图像中也可以显示的基本特征,来创建图像的基本部分,并且随着分辨率的提高和时间的推移,学习越来越多的细节。低分辨率图像的训练不仅简单、快速,而且有助于更高级别的训练,因此,整体的训练也就更快。

Generator 在训练过程中网络的结构是在动态变化的。那种依次连接不同分辨率空间的网络模型叫做 StackGAN,但是 StackGAN 不适合用来做超清图片生成,因为会特别慢。

2x,0.5x利用最近邻卷积和平均池化分别对图片分辨率加倍和折半。
对真实样本也做了类似(b)的平滑过渡,训练过程中某个batch真实样本可以表示为
X = X 16 p × ( 1 − α ) + X 32 p × α X = X_{16p} \times(1-\alpha) + X_{32p} \times \alpha X=X16p×(1α)+X32p×α

由于 ProGAN 是逐级直接生成图片,我们没有对其增添控制,我们也就无法获知它在每一级上学到的特征是什么,这就导致了它控制所生成图像的特定特征的能力非常有限,在此基础上进行改进提出StyleGAN:映射网络 f f f能让我们控制住输出的图片是长什么样的,也就是在生成图片过程中每一级的特征,要能够特定决定生成图片某些方面的表象,并且相互间的影响尽可能小。

二、StyleGAN框架

StyleGAN 用风格(style)来影响人脸的姿态、身份特征等,用噪声 ( noise ) 来影响头发丝、皱纹、肤色等细节部分。stylegan的生成器主要由两部分组成:Mapping network, Synthesis network。

1. Mapping network

作用分析:对隐藏空间(latent space)进行解耦

为了更好的对数据进行分类或生成,需要对数据的特征进行表示,但是数据有很多特征,这些特征之间相互关联,耦合性较高,导致模型很难弄清楚它们之间的关联,使得学习效率低下,因此需要寻找到这些表面特征之下隐藏的深层次的关系,将这些关系进行解耦,得到的隐藏特征,即latent code。由 latent code组成的空间就是 latent space。

添加 Mapping Network 的目标是将输入向量 z z z 编码转为中间向量 w w w,并且中间向量 w w w 后续会传给生成网络得到 18 个控制向量,使得该控制向量的不同元素能够控制不同的视觉特征。

2.为何要加 Mapping Network 呢?因为如果不加这个 Mapping Network 的话,后续得到的 18个控制向量之间会存在特征纠缠的现象——比如说我们想调节 8 ∗ 8 8*8 88 分辨率上的控制向量(假设它能控制人脸生成的角度),但是 32 ∗ 32 32 * 32 3232分辨率上的控制内容(譬如肤色)也被改变了,这个就叫做特征纠缠。所以 Mapping Network 的作用就是为输入向量的特征解耦提供可行性。

3.为何 Mapping Network 能够学习到特征解耦呢?如果仅使用输入向量来控制视觉特征,能力是非常有限的,因此它必须遵循训练数据的概率密度。例如,如果黑头发 的人的图像在数据集中更常见,那么更多的输入值将会被映射到该特征上。因此,该模型无法将部分输入(向量中的元素)映射到特征上,这就会造成特征纠缠。然而,通过使用另一个神经网络,该模型可以生成一个不必遵循训练数据分布的向量,并且可以减少特征之间的相关性。

2. AdaIN

stylegan的第二个idea是将特征解缠后的中间向量W′变换为样式控制向量,从而参与影响生成器的生成过程。

生成器由于从 4 ∗ 4 → 8 ∗ 8 → . . . . . . . → 1024 ∗ 1024 4*4 \rightarrow 8*8 \rightarrow .......\rightarrow1024*1024 4488.......10241024的过程中,每个阶段都会受两个控制向量 A A A 施加的影响,(一次上采样之后,一次卷积之后),都采用 AdaIN(自适应实例归一化)。因此,中间向量W′总共被变换成 18 个控制向量 A A A 传给生成器。

其中 AdaIN 的具体实现过程如上右图所示:将W′通过一个可学习的仿射变换 A A A 扩变为放缩因子 y s y_s ys与偏差因子 y b y_b yb,这两个因子会与标准化之后的卷积输出做一个加权求和,抹去了对图片局部信息的可见性,就完成了一次 W ′ W′ W 影响原始输出 x i x_i xi 的过程。而这种影响方式能够实现样式控制,主要是因为它让变换后的 W ′ W′ W 影响图片的全局信息,而保留生成人脸的关键信息由上采样层和卷积层来决定,因此 W ′ W′ W 只能够影响到图片的样式信息。