论文解读StyleGAN系列——StyleGANv2

论文:Analyzing and Improving the Image Quality of StyleGAN(2019.12)
作者:Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, Timo Aila
链接:https://arxiv.org/abs/1912.04958
代码:https://github.com/NVlabs/stylegan2


其他StyleGAN系列论文解读:
PGGANStyleGANv1StyleGANv2StyleGANv3



1、算法概述

虽然StyleGAN已经在无条件生成图像领域产生了很好的结果,但作者通过实验分析发现了它存在缺陷,并提出了对模型体系结构和训练方法的更改来解决它们。特别是,作者重新设计了生成器的归一化操作,重新分析了渐进式训练方法,并在生成器中应用正则化以鼓励从潜在代码到图像映射的学习效果。


2、背景知识

StyleGANv1结构如下:
在这里插入图片描述
它由两部分组成,一个是Mapping network,负责将隐式编码z变成w,这个 w 就是用来控制生成图像的style,即风格;另一个是Synthesis network,它的作用是生成图像,创新之处在于给每一层子网络都喂了A和B,A是由w转换得到的仿射变换,用于控制生成图像的风格,B是转换后的随机噪声,用于丰富生成图像的细节,即每个卷积层都能根据输入的A来调整"style"。


3、StyleGANv2细节

3.1 Removing normalization artifacts

作者发现大多数用stylegan生成的图片都带有类似水滴的污点,即使图片中没有,其特征图中也会存在,这个水滴现象开始出现在64x64小分辨率特征图中,随着分辨率越来越高,水滴污点越来越明显。
作者把它定位到AdaIN模块中的归一化操作(normalizes),该操作分别对每个特征映射的均值和方差进行归一化,从而潜在地破坏在特征相对于彼此的大小中发现任何信息的可能。下图展示了作者对生成部分网络结构进行改进的过程。
在这里插入图片描述
图(a)是stylegan生成部分网络结构图,图(b)是图(a)的细节展示,它把AdaIN模块拆分成normalization层加其他模块,图©是把normalization层去掉,且把偏置与B的输入拿到style block外面,除了网络结构上的改进,还有就是 Weight demodulation,也就是图(d)部分,其公式如下:
在这里插入图片描述
其中w’ijk=si*wijk,优化后的特征图及生成的图片效果如下,可以看到已经去除了水滴污点。
在这里插入图片描述


3.2 Image quality and generator smoothness

FID及P&R的评估手段不太准确,比如两个生成模型生成的图像FID及R&R结果相似,但明显后者生成的更符合人们的认知(或者说更像是真实的),如下图所示:
在这里插入图片描述
作者发现感知路径长度(PPL, Perceptual path length)与图像质量高度相关,它最初是为了量化从潜在空间到输出图像映射的平滑度而引入的,通过测量潜在空间中小扰动下生成的图像之间的平均距离而得到。所以作者提出了另外一种评估方式PPL,上图中Model2比Model1的PPL更小,说明生成的图像质量更好。

但是,我们不能简单地鼓励最小PPL,因为这将引导生成器走向零召回的退化解决方案。所以作者引入一个新的正则表达式,以避免生成器走向零召回退化,它的目标是实现一个平滑的生成器映射。

  • Lazy regularization
    损失由损失函数和正则项两项组成,优化的时候也是同时优化这两项的,lazy regularization就是正则项可以减少优化的次数,比如每16个minibatch才优化一次正则项,这样可以减少计算量,同时对效果也没什么影响。

  • Path length regularization
    在生成人脸的同时,我们希望能够控制人脸的属性,不同的latent code能得到不同的人脸,当确定latent code变化的具体方向时,该方向上不同的大小应该对应了图像上某一个具体变化的不同幅度。为了达到这个目的,设计了 Path length regularization。在实验中,作者也注意到路径长度正则化导致更可靠和一致的模型,使网络学习更容易。作者还观察到,平滑的生成器明显更容易反相。


3.3 Progressive growing revisited

Stylegan使用的Progressive growth会有一些缺点,如下图,当人脸向左右偏转的时候,牙齿却没有偏转,即人脸的一些细节如牙齿、眼珠等位置比较固定,没有根据人脸偏转而变化,造成这种现象是因为采用了Progressive growth训练,Progressive growth是先训练低分辨率,等训练稳定后,再加入高一层的分辨率进行训练,训练稳定后再增加分辨率,即每一种分辨率都会去输出结果,这会导致输出频率较高的细节,如下图中的牙齿,而忽视了移动的变化。
在这里插入图片描述
使用Progressive growth训练的原因是高分辨率图像生成需要的网络比较大比较深,当网络过深的时候不容易训练,但是skip connection可以解决深度网络的训练,因此有了下图中的三种网络结构,都采用了skip connection,三种网络结构的效果也进行了实验评估。
在这里插入图片描述

下表在两个数据集上对比了三种网络结构在生成器和判决器上应用的实验对比结果如下:
在这里插入图片描述
可以看到跳转结构在生成器中是对降低PPL是有帮助的,而残差结构应用于判决器对降低FID是有帮助的。

作者所提所有改进策略的消融实验如下表所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值