[读论文](StyleGAN) A Style-Based Generator Architecture for Generative Adversarial Networks

32 篇文章 1 订阅
21 篇文章 2 订阅

参考链接:
如何理解 stylegan? - 龙鹏-笔名言有三的回答 - 知乎
https://www.zhihu.com/question/484004802/answer/2592153405

建议一定要配合视频观看,效果更佳:
https://youtu.be/kSLJriaOumA
https://drive.google.com/open?id=1uzwkZHQX_9pYg1i0d1Nbe3D9xPO8-qBf

概述

重点是

  1. style-based architecture (latent code as norm weight and bias)
  2. mapping network (z->f so that f is more linear and disentangled)
  3. noise for each level
  4. style mixing
  5. 提出两个指标:Perceptual path length和linear separability
  • 提出一种GAN的generator 架构(按分辨率coarse to fine的)
    • 不将z作为网络的输入,而是将learned constant + scaled noise作为输入,将z处理后作为style,即instance normalization(AdaIN)的scale和bias;
    • style的获得
      • non-linear mapping network f:将均匀的z印射到有偏的w,从而贴合training set的分布,使w比z更解耦更均匀
      • 用learned 仿射变换A来处理w,得到style
  • style (3.1):一个人整体看上去长啥样
    • 不同层级(分辨率)由对应的style控制。
    • 每层的style控制图像的不同方面,从corase2fine依此是(年龄性别头发pose,长相,颜色等)
  • noise (stochasticity) (3.2):这个人的头发,皮肤纹理,背景等细节
    • 每个层级(分辨率)都引入了自己的noise
    • 如果不引入noise,整体会缺乏纹理细节,仿佛油画
    • coarse noise:大的纹理,如头发大卷,背景中大的部分
    • fine noise:皮肤纹理细节,头发小卷等

Introduction

2D图像的GAN目前还有以下问题:

  • 图像生成过程的不同方面缺乏理解
  • latent space properties缺乏理解
  • latent space interpolations缺乏定量比较的方法

2. Style-based generator (方法详解)

在这里插入图片描述

  • 左边
    • 使用mapping network f,将随机采样的噪声向量z(均匀,无偏)印射到latent space W (与training set一样有偏的)
    • 将w经过A(learned affine transform)得到styles (y), 这些y是用来控制这个AdaIN的。
  • 右边
    • 噪声noise通过B( learned per-channel scaling factors to the noise input)缩放一下
  • 中间
    • learned constant (全1初始化)加上缩放后的噪声

    • 结果在y的控制(scale and bias)下,送入AdaIN: adaptive instance normalization

      • 在这里插入图片描述
    • 再经过一些卷积层,AdaIN层以及unsample层。

生成网络synthesis network g是一个分辨率逐级提升的结构,总共有17个卷积层,除了第1层以外,每两层上采样一个尺度,分辨率从4×4提升到1024×1024,训练方式与Progressive GAN相同。每一级分辨率都有两个AdaIN层,我们可以将其称为1个风格化模块,一共9个风格化模块。
作者:龙鹏-笔名言有三
链接:https://www.zhihu.com/question/484004802/answer/2592153405
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 灵感来自style transfer。但style transfer是用一个example image来计算style y;而这里是用z->w->y.
  • 之所以还是将y称为style,是因为style transfer中就是利用的类似的网络结构。

2.1 Quality of generated images (效果)

Table 1是定量结果:

在这里插入图片描述
注意,B是基于A,C是基于B,每一个都是在上一条的基础上增加
其中:

  • B: using bilinear up/downsamplijng operations, longer training and tuend hyperparameters (详见附录C)
  • C: 增加mapping network f (z->w) and styles (AdaIN).
    • 此时就惊讶的发现,输入的latetn code没啥用了
  • D: 基于C的发现,移出这个层。而是用learned 4 × 4 × 512 4 \times4 \times 512 4×4×512的constant tensor。
    • 发现还是能用
  • E: 增加noise的输入
  • F:mixing regularization (详见Section 3.1 )

注意这里用了一个truncation trick,详见Appendix B。
似乎是说,对于图二(展示的核心效果图),使用了truncation trickl来采样,避免采样到w的极端位置。这个tricks是:

  • 假设原本我们要用的是w,而整个w空间(根据z求出来的)的重心是w横线。
  • 我们现在不用w送入网络,而是用w’ = w横线 + φ(w - w横线)
  • 其中phi<1

2.2 Prior art (Related Work?)

3. Properties of the style-based generator

mapping network和affine transformations可以被视为是,从一个learned style distribution 中,sample一些style。然后用这些style来生成novel image。

  • 更改一个style(网络结构图中的style,即不同分辨率下w经过A得到的style y),只会改变图片的某个方面。
  • 而所有style都是localize在网络中的,比如网络结构图中的4个style都在各自的位置。(localize)
  • 图三的结果可以看到coarse resolution(最上方)的styles主要影响整体形状,人物性别年龄拍照角度等;而fine resolution(最下方)的styles主要影响颜色

这个AdaIN操作,使得每个channel的style只改变了后续convolution操作的feature的相对重要性;由于norm了,所以不依赖于输入的数据。所以每个channel的style值控制了一个卷积(在下一个AdaIN之前)

3.1 Style mixing (让不同分辨率层级的style控制不同的东西,如性别年龄pose头发)

  • 一定比例的图片生成使用这种style mixing的方式,来促进style的localize(进一步解耦)。
  • 具体方法是,
    • 先选两个随机噪声z1 z2(而不是只有一个z),二者分别生成w1和w2。
    • 然后在synthesis network中,随机选择一个临界点crossover。将网络分为分辨率低于cross over的和高于crossover的。
    • 分辨率低于corssover的部分,使用w1;高于的部分,使用w2
  • 这样网络就不会认为crossover附近(不同分辨率)的style是相关的,需要整体看待了,而是会分别处理他们。
  • 比如粗略的style负责头发大卷,精细的style负责头发小卷、皮肤纹理等

结果请看Table2和Figure3。
在这里插入图片描述

  • Table 2
    • Table2的结果是FID值,越低越好。
    • 水平方向是在test的时候把多个(一到四)latent给mix一下,来test。
    • 竖直方向是training的时候多少比例的iamge使用mixing的方法来训练。
    • 结果自然是,既然test的时候要用mix,那training也用效果更好。

Figure 3:
在这里插入图片描述
推荐看视频,比这个图更加清晰直观。视频里可以明显看到,改变coarse 层级的style,就能改变整体形状,年龄性别角度等特征;改变middle,就改变这个人的长相;改变fine,就改变整体颜色,包括肤色发色背景颜色等。

  • 使用一组w_a生成一组source图片(source A,第一列),另一组w_b生成source B(第一行)。
  • 然后,我们在生成各层级的style前,分别把w_a中的部分子集替换为w_b中对应的部分;生成中间的图像。
  • 从上到下分别是在coarse ,middle 和fine 层级,替换w的部分子集(就是说只替换对应层级,不替换其他层级)。对应从corase 到fine的分辨率所对应的styles(也就是网络结构图中,从上到下的style)
    • coarse: pose ,hair, face shape (sometimes 年龄性别头发长度)
    • middle: facial features, eyes (长相)
    • fine: color scheme (颜色)
  • 可以看到coarse是大体形状,fine主要是颜色

3.2 Stochastic variation (随机变异,头发、皮肤纹理、背景细节的随机变化)

  • 一幅画作中的随机量,只要符合正确的分布,可以随即更改,而不影响我们对这幅画的整体观感,比如头发、胡渣、皮肤瑕疵的具体位置等。
  • 我们不像传统方法,仅用到z作为输入,而是额外引入noise。
  • 效果在图4,图5 (看视频,非常直观,同一个人,但头发和皮肤纹理和背景等会有差异,但差异不大)
    • 图4在这里插入图片描述
      • (b)改变一下noise,发现整体看着级差不多,但头发细节不一样了。
      • ©换了100组不同的noise realization,生成100组图片。这100组图片每个像素求标准差,得到图c。标准差越大(越亮)说明随机性约到。可以看到主要是头发,皱纹,领巾花纹儿,背景等地方会
    • 图五
    • 在这里插入图片描述
    • 可以看到没有noise的图像(右上)整体是模糊的,缺乏头发、背景、皮肤的纹理。
    • corase (右下,d)的可能会生成较大的发卷或背景细节
    • fine(左下,c)会生成头发皮肤的纹理细节
    • all(左上,a)头发既有大卷又有小卷
    • 可以理解,因为这个noise是直接加到输入当中的。

3.3 Separation of global effects from stochasticity

该架构实现了global effects(整体效果,由style控制)和 stochasticity(随机细节,由noise控制)的解耦。

  • 由于每一层都instance normalize了,图像的整体情况无法依赖于输入本身(constant + noise),而依赖于style。
  • 而noise是逐层per pixel添加的。

4. Disentanglement studies (latent space W的disentanglement情况)

latent space是多维的。
我们说的latent space 解耦,一般是说他的每个维度单独表示一种特征,比如身高,体重等。每个维度是正交的。如图6 (a)所示
在这里插入图片描述

  • (a) 的例子中,横纵两个方向分别表示男性化和头发长度。 缺的一块是长发男。(有短发男,短发女,长发女,但长发男较少)
  • (b) 而我们的z所在的概率空间Z是一个正态分布,这样的话如果直接用z作为latent space,那就会有点扭曲。于是就不正交了,所以就不解耦。
  • © 所以我们不用z作为latent space,而是用一个非线性mapping function,来完成正态分布概率空间Z到 与training set 相符的latent space W的印射。

具体实现上,用的是8层MLP。z和f都是512维。

那么如何定量分析解耦性?已有的metric通常需要一听歌encoder来encode已有的image。为了防止引入这些东西,我们新提出两种metrics来衡量解耦性。

4.1 Perceptual path length

一句话概述:将某两个latent code endpoint的插值路径细分成小段,每个小段的端点生成的图片的差异之和。越小越好,如果完全线性的话,总和刚好是两端点的图片差异。

Laine [37]发现,在latent space 插值中可能会有很不线性的情况,比如两端都没有的都东西在插值中出现。这说明latent space entangled。

我们可以用插值过程中图像变化的剧烈程度来衡量这个entangled情况。

图像变化的剧烈程度,在已有的文献中,可以用perceptually-based pairwise image distance来表示。具体来说,两幅图像的
perceptual difference = 两个图像求出的VGG16 embeddings的weighted difference。

在512维的latent space中,z1和z2是其中两个点。二者之间有一条直线路径(path) ,我自己称之为线段l。直观上可以把perceptual path length in Z 定义为

  • 理论上
    • 将l细分无数个无限小的线段(segments),每个线段两端的两点生成的图像,计算其difference。所有小段的difference之和的极限,即为感知路径长度。
    • 这个长度越短,说明隐空间越解耦,最好能等于z1和z2的difference。
  • 实际上
    • 用epsilon = 10-4的小段来代替无限小的segments
    • difference怎么衡量呢。用VGG16 embeddings。似乎是指将生成的图片放入VGG16 的encoder,获得embeddings。然后直接测量embeddings之间的difference。
    • 在这里插入图片描述
    • 其中,slerp是指球形插值(spherical interpolation)。emm,就当是一种插值方式吧。因为z是normalized的(正态的),所以使用球形插值
    • slerp(z1,z2;t)应该就是指,在z1和z2之间,t的位置插值,的结果
    • d是指resulting images的perceptual distance,也就是VGG16 embedding之间的距离。
    • 所以就是,每个长度为epsilon的小段,两端各取一个latent code slerp(XXX),用他生成图像G。 然后对这两个图像求VGG16 embedding之间的距离。
    • 最后按episilon来归一化一下,就行了。用平方是因为metric d是二次的。

而对W隐空间求,也是类似的。现在W不是normalized了,我们就用线性插值,而非球形插值。
在这里插入图片描述

一些分析:
在这里插入图片描述

  • 首先,Table3显示,style + noise 的情况下,W的这个lenght显著优于Z;加了mixing会差一点但还是显著优于Z
  • 然而,这个指标下Z比W有优势。因为如果W真的是解耦的正交的Z,那么这个空间中会包含input中没有的区域。(上面那个图,长发男性;)。由于是z生成的,所以采样的端点的w不会涉及这些区域,但插值的时候可能会碰到这些区域。
  • 这样的话,理论上,如果只算端点的距离,而不考虑插值点,对w会好一些,而对z没有影响,实际上Table3也印证了这一点。
  • Table 4 显示了不同层数的mapping network f对不同参数的影响。

4.2 Linear separability

一句话概括:选择一些二值属性并预训练分类器。再训练线性SVM。计算H(SVM|classifier) ,类似于二者分类结果的差异。越小越好,说明越线性,即该属性与svm分出的hyper plane的垂线方向越一致。

现在我们来看是否某个属性(比如性别,是否微笑)是否能较好的对应latent space中的一个方向。

怎么验证呢,如果能在latent space找到一个hyper plane,一边是某个binary 属性,另一边是其相反属性(比如一边男一边女),这个hyper plane越平,就越好。

  • 作者预训练一个classifier来分辨40中attributes,架构和discrinimator一样
  • 用generator生成20w张图片,放入classifier,保留置信度最高的一半,得到10w张有label的图片
  • 再训练一个linear SVM来predict lable
  • 计算conditional entropy H(Y|X),其中SVM预测为X,而classifier预测为Y
    • 这个值反映了,已知一个SVM预测的hyper plane的情况下,还需要多少额外信息才能准确给出lable Y
    • 越低就说明,这个attribute和垂直于这个hyper plane的vector方向越吻合(consistent latent space directions for the corresponding factors of variation)
  • 定义separability score : exp(∑H(Y|X))
    • exp是因为H是log空间的,把它弄到linear domain
    • 也是越小越好

结果:
在这里插入图片描述

  • Table3和4都反映了W的sepability明显优于Z
  • 同时,增加mapping network的层数,image quality和sepability同时变好,似乎说明生成网络喜欢disentangled input
  • 同时,非style架构的传统GAN中(table 4 前三行)增加maping network的话,Z的separability会变差,但W会变好。

B. Truncation trick in W

似乎是说,使用了truncation trickl来采样,避免采样到w的极端位置。

这个tricks是:

  • 假设原本我们要用的是w,而整个w空间(根据z求出来的)的重心是w横线。
  • 我们现在不用w送入网络,而是用w’ = w横线 + φ(w - w横线)
  • 其中phi<1

当φ为0的时候,意思是我们全部都用平均w横线输入到网络中,这样永远得到的是平均脸。
然后当我们改变这个φ值,才能带来差异,φ越小,就越接近平均脸:(这也是视频中的一个例子,视频中,可以看到一张平均脸如何渐渐变成五花八门的样子)
在这里插入图片描述
这里也可以看到当φ相反了,图像会变得相反。
比如性别,角度,戴不戴眼镜,头发长度,fuse

总结

  • 不同层级的style分别控制:
    • coarse: pose ,hair, face shape (sometimes 年龄性别头发长度)
    • middle: facial features, eyes (长相)
    • fine: color scheme (颜色)
  • 不同层级的noise分别控制:
    • coarse:large-scale curling of hair
    • fine nosise: finer details, texture (皮肤头发纹理,细卷,背景细节)
    • no noise: 类似于油画的效果

一些词的总结

sampling probability / sampling density
density in the training data

warp

linear subspaces (of a latent space)
entangled/curved latent space
variation
factors of variation
endpoint (of latent space)
a linear interpolation path

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值