【GANs学习笔记】(二十四)StyleGAN

完整GANs笔记:http://www.gwylab.com/note-gans.html

StyleGAN详细解读:http://www.gwylab.com/pdf/Note_StyleGAN.pdf

基于StyleGAN的一个好玩的网站:www.seeprettyface.com
—————————————————————————————————

6. StyleGAN

6.1 StyleGAN解决的问题

  我们先来反思一下上一节介绍的ProGAN有什么缺陷,由于ProGAN是逐级直接生成图片,我们没有对其增添控制,我们也就无法获知它在每一级上学到的特征是什么,这就导致了它控制所生成图像的特定特征的能力非常有限。换句话说,这些特性是互相关联的,因此尝试调整一下输入,即使是一点儿,通常也会同时影响多个特性。
  我们希望有一种更好的模型,能让我们控制住输出的图片是长什么样的,也就是在生成图片过程中每一级的特征,要能够特定决定生成图片某些方面的表象,并且相互间的影响尽可能小。于是,在ProGAN的基础上,StyleGAN作出了进一步的改进与提升。

6.2. StyleGAN模型架构

  StyleGAN首先重点关注了ProGAN的生成器网络,它发现,渐进层的一个潜在的好处是,如果使用得当,它们能够控制图像的不同视觉特征。层和分辨率越低,它所影响的特征就越粗糙。简要将这些特征分为三种类型:
  1、粗糙的——分辨率不超过8^2,影响姿势、一般发型、面部形状等;
  2、中等的——分辨率为16^2至32^2,影响更精细的面部特征、发型、眼睛的睁开或是闭合等;
  3、高质的——分辨率为64^2到1024^2,影响颜色(眼睛、头发和皮肤)和微观特征;
  然后,StyleGAN就在ProGAN的生成器的基础上增添了很多附加模块。

1. 映射网络

          在这里插入图片描述
  StyleGAN的第一点改进是,给Generator的输入加上了由8个全连接层组成的Mapping Network,并且Mapping Network的输出W’与输入层(512×1)的大小相同。
  添加Mapping Network的目标是将输入向量编码为中间向量,并且中间向量后续会传给生成网络得到18个控制向量,使得该控制向量的不同元素能够控制不同的视觉特征。为何要加Mapping Network呢?因为如果不加这个Mapping Network的话,后续得到的18个控制向量之间会存在特征纠缠的现象——比如说我们想调节8*8分辨率上的控制向量(假设它能控制人脸生成的角度),但是我们会发现32 * 32分辨率上的控制内容(譬如肤色)也被改变了,这个就叫做特征纠缠。所以Mapping Network的作用就是为输入向量的特征解缠提供一条学习的通路。
  为何Mapping Network能够学习到特征解缠呢?简单来说,如果仅使用输入向量来控制视觉特征,能力是非常有限的,因此它必须遵循训练数据的概率密度。例如,如果黑头发的人的图像在数据集中更常见,那么更多的输入值将会被映射到该特征上。因此,该模型无法将部分输入(向量中的元素)映射到特征上,这就会造成特征纠缠。然而,通过使用另一个神经网络,该模型可以生成一个不必遵循训练数据分布的向量,并且可以减少特征之间的相关性。
  映射网络由8个全连接层组成,它的输出W’与输入层(512×1)的大小相同。

2. 样式模块(AdaIN)

          在这里插入图片描述
  StyleGAN的第二点改进是,将特征解缠后的中间向量W’变换为样式控制向量,从而参与影响生成器的生成过程。
  生成器由于从4 * 4,变换到8 * 8,并最终变换到1024*1024,所以它由9个生成阶段组成,而每个阶段都会受两个控制向量(A)对其施加影响,其中一个控制向量在Upsample之后对其影响一次,另外一个控制向量在Convolution之后对其影响一次,影响的方式都采用AdaIN(自适应实例归一化)。因此,中间向量W’总共被变换成18个控制向量(A)传给生成器。
  其中AdaIN的具体实现过程如上右图所示:将W’通过一个可学习的仿射变换(A,实际上是一个全连接层)扩变为放缩因子y_(s,i)与偏差因子y_(b,i),这两个因子会与标准化之后的卷积输出做一个加权求和,就完成了一次W’影响原始输出x_i的过程。而这种影响方式能够实现样式控制,主要是因为它让W’(即变换后的y_(s,i)与y_(b,i))影响图片的全局信息(注意标准化抹去了对图片局部信息的可见性),而保留生成人脸的关键信息由上采样层和卷积层来决定,因此W’只能够影响到图片的样式信息。

3. 删除传统输入

          在这里插入图片描述
  既然StyleGAN生成图像的特征是由W’和AdaIN控制的,那么生成器的初始输入可以被忽略,并用常量值替代。这样做的理由是,首先可以降低由于初始输入取值不当而生成出一些不正常的照片的概率(这在GANs中非常常见),另一个好处是它有助于减少特征纠缠,对于网络在只使用W’不依赖于纠缠输入向量的情况下更容易学习。

4. 随机变化

          在这里插入图片描述

  人们的脸上有许多小的特征,可以看作是随机的,例如:雀斑、发髻线的准确位置、皱纹、使图像更逼真的特征以及各种增加输出的变化。将这些小特征插入GAN图像的常用方法是在输入向量中添加随机噪声。为了控制噪声仅影响图片样式上细微的变化,StyleGAN采用类似于AdaIN机制的方式添加噪声,即在AdaIN模块之前向每个通道添加一个缩放过的噪声,并稍微改变其操作的分辨率级别特征的视觉表达方式。加入噪声后的生成人脸往往更加逼真与多样。

5. 样式混合

          在这里插入图片描述
  StyleGAN生成器在合成网络的每个级别中使用了中间向量,这有可能导致网络学习到这些级别是相关的。为了降低相关性,模型随机选择两个输入向量,并为它们生成了中间向量W’。然后,它用第一个输入向量来训练一些网络级别,然后(在一个随机点中)切换到另一个输入向量来训练其余的级别。随机的切换确保了网络不会学习并依赖于一个合成网络级别之间的相关性。
  虽然它并不会提高所有数据集上的模型性能,但是这个概念有一个非常有趣的副作用 ——它能够以一种连贯的方式来组合多个图像(视频请查看原文)。该模型生成了两个图像A和B,然后通过从A中提取低级别的特征并从B中提取其余特征再组合这两个图像,这样能生成出混合了A和B的样式特征的新人脸。

6. 在W中的截取技巧

          在这里插入图片描述

  在生成模型中的一个挑战,是处理在训练数据中表现不佳的地方。这导致了生成器无法学习和创建与它们类似的图像(相反,它会创建效果不好的图像)。为了避免生成较差的图像,StyleGAN截断了中间向量W’,迫使它保持接近“平均”的中间向量(上图左4)。
 &emsp对模型进行训练之后,通过选择多个随机的输入,用映射网络生成它们的中间向量,并计算这些向量的平均值,从而生成“中间向量”的平均值W’_avg。当生成新的图像时,不用直接使用映射网络的输出,而是将值W’转换为W’_new=W’_avg+𝞧(W’ - W’_avg),其中𝞧的值定义了图像与“平均”图像的差异量(以及输出的多样性)。有趣的是,在仿射转换块之前,通过对每个级别使用不同的𝞧,模型可以控制每个级别上的特征值与平均特征值的差异量。

7. 微调超参数

  StyleGAN的另外一个改进措施是更新几个网络超参数,例如训练持续时间和损失函数,并将图片最接近尺度的缩放方式替换为双线性采样。

  综上,加入了一系列附加模块后得到的StyleGAN最终网络模型结构图如下:
          在这里插入图片描述
  上述就是StyleGAN的完整模型的介绍了。不得不说,不论是在理论方法上,还是工程实践上,StyleGAN都是一篇具有突破性的论文,它不仅可以生成高质量的和逼真的图像,而且还可以对生成的图像进行较好的控制和理解。

  • 47
    点赞
  • 179
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值