Loading

Style GAN

一、ProGAN

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

ProGAN解决了生成高分辨率图像(如1024×1024)的问题。

渐进层的一个的好处是如果使用得当,它们能够控制图像的不同视觉特征层和分辨率越低,它所影响的特征就越粗糙

存在问题:

与多数GAN一样,ProGAN控制生成图像的特定特征的能力非常有限。也就是说ProGAN 容易发生特征纠缠

二、style GAN

通过分别修改每一层级的输入,在不影响其他层级的情况下,来控制该层级所表示的视觉特征。这些特征可以是粗的特征(如姿势、脸型等),也可以是一些细节特征(如瞳色、发色等)。改进了proGan的缺点。

 

①借鉴风格迁移,提出基于样式的生成器(style-based generator)。

  • 实现了无监督地分离高级属性(人脸姿势、身份)和随机变化(例如雀斑,头发)
  • 实现对生成图像中特定尺度的属性的控制。
  • 生成器从一个可学习的常量输入开始,隐码在每个卷积层调整图像的“样式”,从而直接控制不同图像特征的强度。

②实现了对隐空间(latent space)较好的解耦

  • 生成器将输入的隐码z嵌入一个中间的隐空间。因为输入的隐空间Z必须服从训练数据的概率密度,这在一定程度上导致了不可避免的纠缠,而嵌入的中间的隐空间W不受这个限制,因此可以被解耦。

③提出了两个新的量化隐空间解耦程度的方法

  • 感知路径长度和线性可分性。与传统的生成器体系结构相比,新的生成器允许更线性、更解耦地表示不同的变化因素。

框架:

如图所示,用mapping network编码w来控制style(人脸的姿态、身份特征),用noise来控制头发丝、皱纹、肤色等细节部分。

mapping network

首先理解一些概念:

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

比如说我们想调节 8*8 分辨率上的控制向量(假 设它能控制人脸生成的角度),但是我们会发现 32*32 分辨率上的控制内容(譬如肤色)也被改变了,这个就叫做特征纠缠。

adain样式模块

首先每个特征图xi(feature map)独立进行归一化 [公式] 。特征图中的每个值减去该特征图的均值然后除以方差,将W′通过一个可学习的仿射变换(A,实际上是一个全连接层)扩变为放缩因子与偏差因子

posted @ 2021-08-22 15:33  climber_dzw  阅读(363)  评论(0编辑  收藏  举报