读论文:(Style GAN)A Style-Based Generator Architecture for Generative Adversarial Networks

        2018年NVIDIA首次使用ProGAN应对这一挑战时,研究人员都无法生成高质量的大图像(如:1024×1024)。ProGAN的关键创新点是渐进式训练 — 它首先使用非常低分辨率的图像(如:4×4)开始训练生成器和识别器,并且每次都增加一个更高分辨率的网络层。

         2019年NVIDIA发表于CVPR的《A Style-Based Generator Architecture for Generative Adversarial Networks》,一步一步地生成人工图像的,从非常低的分辨率开始,一直到高分辨率(1024×1024)。通过分别地修改网络中每个级别的输入,它可以控制在该级别中所表示的视觉特征,从粗糙的特征(姿势、面部形状)到精细的细节(头发颜色),而不会影响其它的级别。

        StyleGAN中的“Style”是指数据集中人脸的主要属性,比如人物的姿态等信息,而不是风格转换中的图像风格,这里Style是指人脸的风格,包括了脸型上面的表情、人脸朝向、发型等等,还包括纹理细节上的人脸肤色、人脸光照等方方面面。层和分辨率越低,它所影响的特征就越粗糙。文章将这些特征分为三种类型:

1、粗糙的—分辨率最高82,影响姿势、一般发型、面部形状等;

2、中等的—分辨率为162至322,影响更精细的面部特征、发型、眼睛的睁开或是闭合等;

3、高质的—分辨率为642到10242,影响颜色方案(眼睛、头发和皮肤)和微观特征;

        下图是传统生成器和 style gan 中生成器。

读论文:(Style GAN)A Style-Based Generator Architecture for Generative Adversarial Networks_第1张图片

        

        StyleGAN 的网络结构包含两个部分,第一个是Mapping network,即下图 (b)中的左部分,由隐藏变量 z 生成 中间隐藏变量 w的过程,这个 w 就是用来控制生成图像的style,即风格,为什么要多此一举将 z 变成 w 呢,后面会详细讲到。 第二个是Synthesis network,它的作用是生成图像,创新之处在于给每一层子网络都喂了 A 和 B,A 是由 w 转换得到的仿射变换,用于控制生成图像的风格,B 是转换后的随机噪声,用于丰富生成图像的细节,即每个卷积层都能根据输入的A来调整"style"。整个网络结构还是保持了 PG-GAN (progressive growing GAN) 的结构。最后论文还提供了一个高清人脸数据集FFHQ。

        Mapping network 映射网络由8个全连接的层组成,它的输出ⱳ与输入层(512×1)的大小相同。映射网络的目标是将输入向量编码为中间向量,中间向量的不同元素控制不同的视觉特征。这是一个非常重要的过程,因为使用输入向量来控制视觉特征的能力是非常有限的,因为它必须遵循训练数据的概率密度。例如,如果黑头发的人的图像在数据集中更常见,那么更多的输入值将会被映射到该特征上。因此,该模型无法将部分输入(向量中的元素)映射到特征上,这一现象被称为特征纠缠。然而,通过使用另一个神经网络,该模型可以生成一个不必遵循训练数据分布的向量,并且可以减少特征之间的相关性。

        AdaIN(自适应实例标准化)模块将映射网络创建的编码信息ⱳ传输到生成的图像中。该模块被添加到合成网络的每个分辨率级别中,并定义该级别中特征的可视化表达式:

 ①首先每个特征图xi(feature map)独立进行归一化 (xi−μ(xi))/σ(xi) 。特征图中的每个值减去该特征图的均值然后除以方差

 ②一个可学习的仿射变换A(全连接层)将w转化为style中AdaIN的平移和缩放因子y =(ys,i,yb,i),

 ③然后对每个特征图分别使用style中学习到的的平移和缩放因子进行尺度和平移变换

        这里输入的 feature 先去风格化(减去自身均值再除以自身标准差),再风格化到style image的风格(乘style image的标准差再加均值,注意这里是学到的,不是严格意义的标准差和均值,方便理解)

        Style Mixing(风格混合)下图中 第一行是 source B, 第一列是source A,source A 和 source B的每张图片由各自相应的latent code 生成,剩余的图片是对 source A 和 souce B 风格的组合。 Style mixing 的本意是去找到控制不同style的latent code的区域位置,具体做法是将两个不同的latent code z1和 z2输入到 mapping network 中,分别得到 w1和 w2 ,分别代表两种不同的 style,然后在

Synthesis network 中随机选一个中间的交叉点,交叉点之前的部分使用 w1 ,交叉点之后的部分使用 w2,生成的图像应该同时具有 source A 和 source B 的特征,称为 style mixing。

        根据交叉点选取位置的不同,style组合的结果也不同。下图中分为三个部分,第一部分是 Coarse styles from source B,分辨率(4x4 - 8x8)的网络部分使用B的style,其余使用A的style, 可以看到图像的身份特征随souce B,但是肤色等细节随source A;第二部分是 Middle styles from source B,分辨率(16x16 - 32x32)的网络部分使用B的style,这个时候生成图像不再具有B的身份特性,发型、姿态等都发生改变,但是肤色依然随A;第三部分 Fine from B,分辨率(64x64 - 1024x1024)的网络部分使用B的style,此时身份特征随A,肤色随B。由此可以大致推断,低分辨率的style 控制姿态、脸型、配件 比如眼镜、发型等style,高分辨率的style控制肤色、头发颜色、背景色等style。

 读论文:(Style GAN)A Style-Based Generator Architecture for Generative Adversarial Networks_第2张图片 

        特征分离,为了使关于特征分离的讨论更加的量化,文章提出了两种新的特征分离的测量方法:

1、感知路径长度 — 当在两个随机输入之间插入时,测量两个连续图像(它们的VGG16嵌入)之间的差异。剧烈的变化意味着多个特性已经同时改变了,它们有可能会被纠缠;

2、线性可分离性  —  是将输入按照二进制类进行分类的能力,如男性和女性。分类越好,特征就越容易区分。

        通过对输入的向量z和中间向量ⱳ的指标进行比较,作者们发现在ⱳ中的特征很明显地更容易分离。这些指标还表明了在映射网络中选择8个层与选择1到2个层相比的好处。

         Truncation Trick(截断技巧)。从数据分布来说,低概率密度的数据在网络中的表达能力很弱,直观理解就是,低概率密度的数据出现次数少,能影响网络梯度的机会也少,但并不代表低概率密度的数据不重要。可以提高数据分布的整体密度,把分布稀疏的数据点都聚拢到一起,类似于PCA,做法很简单,首先找到数据中的一个平均点,然后计算其他所有点到这个平均点的距离,对每个距离按照统一标准进行压缩,这样就能将数据点都聚拢了,但是又不会改变点与点之间的距离关系。

读论文:(Style GAN)A Style-Based Generator Architecture for Generative Adversarial Networks_第3张图片


 读论文:(Style GAN)A Style-Based Generator Architecture for Generative Adversarial Networks_第4张图片 

        小结下,style gan具有以下特点:

  • 基于样式的生成器,能生成更高质量的高分辨率图像。
  • 实现了无监督地分离高级属性(人脸姿势、身份)和随机变化(例如雀斑,头发),实现对生成图像中特定尺度的属性的控制。通过style控制高级属性,通过不同层的style实现对不同尺度的特征的控制;通过噪声控制随机变化
  • 降低了隐空间的耦合性。通过映射网络生成中间隐空间(intermediate latent space),中间隐空间降低了输入隐空间的纠缠
  • 提出两种新的量化隐空间耦合性的指标-感知路径长度和线性可分性
  • 对高级属性与随机效应的分离以及中间隐空间的线性的研究,提高了对GAN合成的理解和可控性

你可能感兴趣的:(深度学习,文献阅读,生成对抗网络,人工智能)