[Style Transfer]——Analyzing and Improving the Image Quality of StyleGAN

[Style Transfer]——Analyzing and Improving the Image Quality of StyleGAN
Style GAN2:分析和改善StyleGAN的图像质量

from NVIDIA CVPR2020

Paper
Code

Abstract

StyleGAN在数据驱动的无监督生成模型中达到了SOTA效果。我们分析了这一模型的特点,通过实验进行了验证。本文重新设计了生成网络的归一化、正则化,从而促进从隐空间到图像的映射。除了提升图像质量,这种路径长度归一化还带来了其他好处,就是生成器可以更容易发生反转,这样可以用来检测某一生成图像来自于哪一种生成网络。
本文还进一步探究了生成网络如何调整分辨率、如何训练更大的网络提升模型的容量。总的来说,本文做的改进在无监督生成的图像质量和评价指标等方面都做到了SOTA。

Section I Introduction

目前生成模型合成的图像尤其是在高分辨率图像方面,StyleGAN达到了SOTA的水平,本文的目的是修复StyleGAN存在的一些不足、伪影,进一步提升图像质量。



StyleGAN的创新之处在于将原始的图像输入改为输入经过一定映射后的latent code,并且通过AdaIN控制style信息,并且通过加入随机噪声引入随机变化。并且W的隐空间比Z的隐空间变量之间的耦合松的多,因此本文将主要分析W相关的隐空间。




许多研究者注意到了StyleGAN生成的图像中带伪影的问题,我们确认了造成伪影的两大原因:




一是关于斑点状伪影的原因,主要是生成网络为了规避结构缺陷从而产生的;因此本文重新设计了生成网络的正则化从而去除这部分伪影;




二是随着分辨率逐渐增长产生的伪影,这种伪影在高分辨率的GAN训练中十分突出。




本文提出一种交替设计的方法,最开始只聚焦于低分辨率图像诉后逐渐关注与越来越高的分辨率,但并不会在训练过程中改变网络的拓扑结构。这种新设计就可以帮助我们分析为什么生成图像的质量比预期要低。





另一方面就是评价指标。FID距离测量的是两种图像经InceptionV3的高频特征的分布差距;此外precision和Recall分别测量的是生成图像与训练数据的相似性以及与能够生成的训练数据的百分比,本文基于这些量化指标来进行优化。
而FID以及P&r指标主要侧重于纹理而不是形状,因此无法准确的评测图像质量的方方面面。而之前引入的感知路径长度PPL用于衡量隐空间的质量,可作为形状一致性和稳定性分的度量。




基于此,我们对网络进行了正则化优化从而产生更加平滑的映射,显著提升了图像质量。为了尽可能不增加计算成本,我们尽可能少的使用正则化,在不影响效率的情况下进行。
最后在StyleGAN2中,借助上述改进使得图像到W隐空间的映射效果更好,甚至可以判断是否由哪一个特定的生成器产生了这一图像,比Style GAN1更具实际意义。

Section II Removing normalization artifacts

伪影的去除





在这里插入图片描述Fig 1中可以看出,StyleGAN中很多生成图像都有这种水滴状的伪影,有的可能在最终的生成图中不明显,但如果我们看中间的一些激活值的输出就会发现问题所在。这是一个StyleGAN中的系统性问题,几乎从分辨率64之后就会出现。

如Fig1所示,我们在大多数生成图像中观察到水滴状的斑点状伪影,即使有的伪影在最终的图像中并不明显但是也会在生成网络中间层的特征图谱中出现。这些伪影大多从分辨率=64时开始出现的。
这种伪影的出现着实令人困惑,因为判别器应该能够检测出来。
最后我们将问题定位到是由于AdaIN运算导致的,AdaIN会对输入的特征图的均值和方差进行归一化,这样就严重破坏了特征图谱之间相互依赖的各种特征信息,我们假定这种斑点状伪影是生成器故意将图像强度信息归一化后的结果,通过创造一个局部的强的尖峰来控制统计信息,这样生成器就可以在任意地方对信号进行有效的缩放。我们的假设基于这样的现象支撑:
在后续的实验中,我们删除了这一步的归一化操作,因此之后所有的水滴状伪影就消失了。
Part A Generator architecture revcisited
在这里插入图片描述

首先让我们再次回顾一下StyleGAN生成网络的结构,从而让我们更好的设计归一化操作。Fig2(a)中显示了原始的StyleGAN中的生成网络部分,2b则进一步展示了细节信息,包括输入的权重、添加的【偏置,以及AdaIN模块分两步进行:归一化模块和调制模块。

这样可以将网络很明显的划分为一个一个级联的style block风格模块。

有趣的一点是,在StyleGAN1中输入权重和偏置的方式,对style的调控是由反作用的,因此将这些操作移到style block之外,对归一化后的数据进行操作。这样就可以消除权重、偏置、噪声和归一化等对输入的影响,因此调整之后的结构参见2(c)
。
Part B Instance normalization revisited

下面再来回归一下AdaIN结构,StyleGAN的魅力之一就是对于style风格信息的调控,通过在推断时向不同层喂入不同的latent W可以进行风格混合。实际上风格的调制会将某种特征放大很多,如果不能在每一个样本上抵消这种过度放大,剩下的其它层就无法进行有意义的生成了。
如果我们放弃对央视调控的追求,这样仅仅通过移除掉归一化操作就可以移除前面提到的伪影,同时提升FID等指标,但这就丧失了风格调控的能力了。

因此本文在保证度风格具有足够调控能力的前提下进行优化,主要思想是基于特征图归一化后的预期统计数据进行归一化。

回顾一下2©中style block的结构,包含modulation+conv+normalization(调制、卷积和归一化)。

首先考虑调制的作用,就是将输入的style信息以比例因子的形式乘以输入的特征图谱,这可以通过对卷积的权重进行缩放实现:
在这里插入图片描述

现在instance normalization的目的就是根据输出的特征图的统计数据来消除s缩放因子的影响。
首先假设输入的激活值是具有单位标准差的随机变量,那么经过调制和卷积后的输出激活值的标准是:
在这里插入图片描述

也就是输出进行了L2正则化,然后在将输出通过归一化恢复到标准差。那么Equation 2就可以通过对每一个特征图谱乘以1/σ j 解调,也就是说,卷积权重可以表述为:
在这里插入图片描述

因此,通过Equation 1和3可以消除s的影响,但与instance normalization相比,这种调制是非常弱的,因为他是根据特征图的统计信息而不是依据特征图的实际内容进行的调制。这种归一化方法已经广泛用于现代网络初始化的相关研究中,前人的一系列工作也证明了这种权重归一化的方法是十分有效的。
因此,这两种新设计消除了图像中的伪影,同时还保留了对风格信息的调控性。FID指标也几乎没受影响,但是我们看到P&R指标有较大变化,但这种变化是合乎常理的,因为通过截断方法可以提升精度。
在这里插入图片描述
在这里插入图片描述

实际中可以使用分组卷积高效实现本文的这种设计,详情参见Appendix B;以及为了避免在Equation 3中引入激活函数,我们对激活函数进行了缩放,使其能够达到预期的统计特征。

Section III Image quality and generator smoothness

虽然FID和Recall能够有效评估GAN的性能,但是在评估图像质量上仍存在盲点。
比如Fig 13、14就显示了诸多FID、P&R分数相同的式子但是生成的图像很不准确。

我们观察到了图像质量与PPL感知路径长度的关联,最开始引入PPL是为了量化隐空间到输出图像的平滑度的,一般PPL较小的图像具有更高的图像质量,其他指标则看不出来与图像质量的联系。

Fig4测试了LSUN CAT数据中不同图像的PPL得分,可以看到,越高质量的图像其PPL得分越低,而Fig 5(a)则进一步解释了每一张图像的PPL得分,显示出长尾分布的特点。
为什么低质量图像对应较高的PPL得分这第一点还不能明显看出,我们假设在训练过程中判别器会对这些扭曲的图像进行惩罚,最直接的方法就是拉伸高质量图像对应的隐空间部分,而复制朗的图像就会被急剧压缩 到较小的隐空间范围中,虽然这段时间内提升了平均的输出质量,但是这种失真会逐步积累,影响最后输出的图像质量。
因此,我们不能仅仅通过最小化PPL来提升生成器的效果,而是应该使用正则化来获得更加平滑的生成图像。

在这里插入图片描述在这里插入图片描述在这里插入图片描述
Part A Lazy regularization
通常损失函数与正则化项写在一个表达式中一同优化,但是我们发现正则化项的计算频率比主损失函数低得多,这样就可以进一步降低正则化项的计算成本和内存需求。Table 1,row c就显示出每16个minibatch使用一次正则化并不会对性能有什么大的影响,因此本文使用的是lazy regularization策略,详情参见Appendix B.

Part B Path length regularization
我们肯定是希望在W空间中移动固定步长引起的是图像的线性变化,也就是说w的梯度与移动方向等都无关。
对于W空间中的任意w,它的局部缩放特性是通过雅克比矩阵衡量的,为了使得向量长度的改变与移动方向无关,本文将正则化定义为:

在这里插入图片描述

其中y是具有任意分布强度的图像y,w遵循正态分布,而Jw在任何一点的w处都是正交的,这一正交矩阵有效保留了长度同时不会引起任何维度上的压缩。

为了避免显式计算雅克比矩阵。将这一计算替换为等价计算,这么计算非常适合反向传播。
而Fig 5(b)显式处经过正则化后有效改善了长尾效应,使得PPL的得分分布更接近正常分布,意味着提升了图像质量。
以及在LSUN CAT数据集中,FID指标与PPL指标之间需要折中。

Section IV Progressive growing revisited

重新审视渐进性增长

Progressive growing 在稳定合成高分辨率图像方面十分成功,但有时会引起伪影,关键问题就是渐进增长的生成器会更加倾向于定位到细节信息,当图像逐渐滑动时这些细节可能会留在原地然后直接跳到下一个位置。
Fig 6就显示了这样的一种伪影情况。可以看到蓝线处的牙齿并不随着camera的移动而变换位置,因此就需要寻找一种替代方案,既可以实现渐进性增长又可以规避这一问题。
在这里插入图片描述
Part A Alternative network architectures
替代的网络架构
尽管StyleGAN中的生成网络和判别网络使用的都是简单的前馈设计,但是还可以研究更好的结构。
在这里插入图片描述

(a)展示了MSG-GAN的结构,通过多个skip connections将同分辨率下生成器和判别器进行相连,输出的是mipmap而不再是一整张图,还会为每张图像计算其相似性。Fig7(b)则是展示了如何通过上采样和下采样完成不同分辨率的RGB图像的输出,而所有的上采样和下采样都使用的是双线性插值;而在(c)中本文进一步将跨层连接修改为残差连接。

Table 2比较了3种生成器结构和3中判别器结构,分别是:原始的前馈网络、使用skip connections和使用residual connections。因此一共是9种组合。

在这里插入图片描述

实验结果显示,生成器中的跨层连接在所有配置中都可以大大提高PPL指标,而使用残差连接的鉴别器对FID性能指标有益。后者不足为奇,因为判别器实际上就是一个分类器,残差连接有助于信息的传递,但是残差连接对生成器有损害,除了对LSUN CAR中的FID指标是有益的。
因此本文剩下的实验中使用的是skip genetator和residual descriminator,也就是Table I中的E配置,这种配置下FID和PPL显著提高。 

Part B Resolution usage
保留渐进性增长的关键是为了让生成器最开始先关注低分辨率图像,随后再将注意力逐渐转移到高分辨率关注细节特征。
Fig 7的结构就使得生成器可以先在不影响高分辨率层的基础上输出低分辨率图像,然后在逐渐将训练焦点转移到高分辨率上。但这种方式并非强制执行的,只有当生成器认为有用处时才会进行这样的操作。因此就需要确定生成器在训练过程中对分辨率的依赖程度。
虽然通过Fig7(b)中的skip connections可以将不同分辨率的值进行汇总,通过计算对应层对最终图像的贡献获得每一层的权重。
在这里插入图片描述

于是Fig 8(a)就汇总了每一tRGB层像素值的标准差与训练时间的关系,可以看到占比较多的分辨率为512和1024,而Fig 8(b)则显示出在更大的网络中高分辨率占比更大。
从生成图像中也能看出,最终生成图像中缺少哪些像素级别的细节信息。
因此我们就假象是不是存在网络capacity容量的问题,为此我们将两种网络中高分辨率层的特征图数量加倍进行测试,最终生成的结果更符合预期。Table 3中在LSUN各个类别中比较了StyleGAN1和StyleGAN2的结果,确实看到了FID和PPL指标的提升,确实有可能特征的增加、尺度的增加会带来额外的好处。

Section V Projection of images to latent space

隐空间的映射
将生成网络倒置在诸多领域是一个很有意思的课题,如果要在隐空间操纵图像就需要首先找到该图像对应的latent code。前人的研究表明与其找到最终一个通用的latent code,不如从每一层中选择一个单独的latent code,这种方法在早期的编码器中也有所应用。通过这种方式扩展隐空间可以为给定图像找到更接近的匹配,而不同图像映射的表征也应该不相同。本文则致力于再不扩展隐空间的基础上寻找对应的latent code,通过生成器可以生成该幅图像。


本文的投射方法与前人使用的方法有两处不同:

一是为latent code增加了逐渐减少的噪声,这样可以更加全面的探究隐空间;

二是在StyleGAN生成网络的输入中引入随机噪声,确保他们不会懈怠相干信号。

这种正则化通过增强噪声图的自相关系数,从而去匹配不同尺度上高斯噪声的相关系数。投影的相关细节可参考Appendix D.

Part A Attribution of generated images

对生成的图像进行检测或调控十分重要。当前可通过训练分类器直接对生成的图像进行检测,但是随着生成模型的快速发展,这种方法不再是最佳的解决方案。比起检测真假图片,我们或许可以考虑更细节的一个问题:确定这张图片的合成源,来自于哪一个生成器。

本文通过计算生成图像与原始图像之间的LPIPS距离来衡量projection是否成功。
在这里插入图片描述

Fig 10展示了在LSUN CAR和FFHQ数据集上二者的分布直方图,其中blue代表生成图像的分布,orange代表原始图像的分布。而StyleGAN2投射效果几乎可以不被混淆,可以明确地看出来自生成网络。而原始的StyleGAN虽然可以从技术上找到对应的latent code但实际要达到可靠映射还是十分复杂的。因此StyleGAN2虽然图像质量提升了,同时辨别图像来源也更方便了。
在这里插入图片描述
Fig 9展示了图像样例及其对应的生成样本,其中第一行是目标图像第二行则是根据latent vector和噪声重新生成的图像。对于StyleGAN其声称效果可以达到前景与原图较为接近,但是背景往往不同;而中间一栏使用StyleGAN2几乎可以完整的映射回生成器的输入,从而可以明确的找到源自哪个生成器;而第三栏则是与真实图像存在明显的差异,这也是本文所预期的。
上述所有都使用同样的投射方法和超参数。

Section VI Conclusion and future work

本文确定了StyleGAN中存在的一些问题并进行了修复,提升了生成图像的质量。Appendix A中包含了更多的示例,除了图像质量上的提升,StyleGAN 2基于投射的方法更容易检测生成图像的图源。

训练后的性能也有所提高,在StyleGAN中 1024分辨率在V100加速卡上的训练速度是37imgs/s,而StyleGAN2在E配置下训练速度提升了40%,加速源自于权重解调、lazy regularization和代码的优化,数据流简化后速度达到了61 imgs/s。
在F配置下,FFHQ训练时长为9天,LSUN CAR训练时长为13天。

未来会进一步研究路径长度正则化这一问题,比如可以将L2正则化替换为数据驱动的特征空间矩阵。
考虑到GAN的实际应用,降低对训练数据的要求也是十分重要的,尤其有些领域无法获得数以千计的训练样本。
Appendix A Image Quality
本节展示一些图像样例来探讨图像质量问题。Fig11是基于FFHQ数据集使用StyleGAN 2生成的效果较好的图像,Fig12则展示了数据集中不精确的生成结果。

Fig13和14 的样例显示的是PPL与FID、P&R等指标之间的关联。
在这里插入图片描述
在这里插入图片描述

Appendix B Implementation details



实施细节:
基础网络是Tensorflow实现的StyleGAN1网络,对应到Table I 的A配置中。本文与这一模型绝大部分细节保持一致,比如W和Z的维度,mapping network的结构(8层FC)以及学习率等参数设定等。
加速卡:8块V100 
Generator结构:在B-F配置中,本文对原始的StyleGAN结构进行了改进,除了Section 2中重点强调的一些改变,比如将权重初始化为N(0,1),偏置、噪声初始化为0.还对所有卷积层进行weight modulation和demodulation,除了最后一层输出层不进行解调。第一层分辨率为4,最终输出图像分辨率为1024,共18层仿射变换层。




Weight demodulation:
在实际实现Equation (1) (3)时,要注意到每一个minibatch的weight都不一样,因此本文使用分组卷积,通过将输入特征图剖分成不同的组来降低计算成本,将feature map进行reshape成N组,而不是一组内的N个sample。




Lazy regularization:





Lazy 指的就是每k个iteration进行一次正则化,那么loss函数首先计算的是k次损失函数进行梯度更新,随后再进行一次正则化,以及为了和K次训练的值匹配,会将正则化的值乘以k倍使得二者幅度一致。




Path length regularization





对感知路径长度的归一化:






在这里插入图片描述

Fig 15 展示了StyleGAN中存在的水滴状伪影对图像的影响,第一行是一张完美生成的图像;第二行则是一张生成失败的图像,可以看到从64分辨率后就开始出现水滴状伪影,在128分辨率时更加明显,图像分辨率越高这一伪影影响越大,并且64和128分辨率下的伪影还不在同一位置,这就使得256分辨率时生成的图像产生了overshoot,并且会影响后续高分辨率图像的生成。而且本文发现这种伪影只要出现就很少自动消失。
在这里插入图片描述
**Progressive growing:**

Progressive growing的设定与Karras文章中的设定一样,第一层分辨率为8,lr=0.001 每种分辨率下训练600k张图片等,lr逐渐增大,当lr=0.002时结合skip connections和residualconnections效果最佳。Fig 16展示了使用progressive growing比不使用progressive learning相比,中间层中会包含更多的高频信息。
在这里插入图片描述

Dataset-specific tuning:

FFHQ使用了数据扩增,将训练数据从70K扩充至140K,但LSUN数据集没有进行数据扩充,两个数据集正则化的权重也不一样,分别是10和100.
Performance optimizations
训练时发现使用的filtering、上下CIA杨以及leaky ReLU等在训练时间、GPU占用上有惊人的高开销。因此我们就手写CUDA kernel 来优化这些曹组,比如将上下采样融合为一个操作,偏置和激活的计算作为另一个操作。这样优化后,整个训练时间缩短了30%内存占用减少了20%。
Appendix C Effects of path length regularazation
Pathlength regularization:
其中y是生成图像的单位正态分布随机变量,Jw是Jacobian matrix以及a是一个全局的变量代表期望梯度的scale。

在这里插入图片描述
首先要证明的是当Jacobian矩阵正交时,这一近似的内部期望是最小化的。
而旋转后的单位法向量与正交矩阵的分布不变,因此Lw表达式可以化简为:


在这里插入图片描述
在这里插入图片描述

下一步,将这一期望写成积分形式:
在这里插入图片描述


在这里插入图片描述

前面的概率密度项只与半径有关,与角度无关;后面的基本项代表一个未归一化的一维正态分布,计算后,loss近似为:
在这里插入图片描述

Fig 17也展示了不同数据集上使用path length regularization,对PLL影响更大。


在这里插入图片描述
Appendix D Projection method details
映射方法细节
给定一张图像x,我们希望找到对应的W以及每一层的噪声,在StyleGAN1中输入了18层noise,每一种分辨率下输入两层;在StyleGAN2中输入的噪声更少。
在优化之初,w被初始化为均值,noise=N(0,1),枚迭代1000次进行一次优化,即向w中添加高斯噪声,随后对noise map进行归一化,比如对分辨率大于8的map就对2x2的邻域单位内进行下采样,并每一步乘以2。
归一化表示为:
在这里插入图片描述
Appendix E Results with spectral normalization
谱归一化被广泛用于GAN的训练中,本文也探究了谱归一化在StyleGAN2中的作用。
谱归一化就是将神经网络的每一层权重参数最SVD分解,然后将其最大值限定为1,则在每一次权重更新后就除以这一最大值,从而使得每一层对输入x的拉伸都不会超过1.
有趣的一点是,在本文中使用谱归一化几乎没什么用,因为这种scale缩放操作已经包含在Equation 3中了。
而对判别器进行匍匐一花会使得FID稍微下降,所以本文的StyleGAN2没有使用谱归一化。
在这里插入图片描述
Appendix F Energy consumption
能耗问题是所有机器学习项目都需要关注的核心问题,Table 5展示了本文F配置与其他操作的能耗对比。本文在项目的不同阶段使用了不同数量的NVIDIA DGX-1,然后将每种运算换算为等价的单GPU运行时间。

在这里插入图片描述

整个项目消耗131.61兆瓦小时,并在Table 5中记录了每一项操作确切的时间、使用的GPU数目,通过线性缩放 即n/8的带哦哦单个GPU的耗能。
可以看到主要时间和精力花在了早期的研究以及想法形成上,随后近1/4的时间用于开展针对性实验以及模型的训练。因此绝大多数时间/电力用在了早期想法的形成、假设的检验和超参数的调优,本文并没有借助自动化工具来优化超参数或优化网络体系结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值