基于样式的GAN生成器架构,生成和调整逼真的人工脸

生成式对抗网络(GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。它们的目标是合成与真实图像无法区分的人工样本。GAN应用的一个常见示例是通过从人面部的数据集中学习来生成人造面部图像。虽然GAN图像随着时间的推移变得更加逼真,但是他们的主要挑战之一是控制它们的输出,即在脸部图像中改变诸如姿势,脸部形状和发型的特定特征。

NVIDIA的一篇论文,一种基于样式的GAN生成器架构(StyleGAN),提出了一种解决这一挑战的新模型。StyleGAN逐渐生成人工图像,从非常低的分辨率开始,持续到高分辨率(1024×1024)。通过分别修改每个级别的输入,控制在该级别中表达的视觉特征,从粗糙特征(姿势,面部形状)到精细特征(头发颜色),而不影响其他级别。

这种技术不仅可以更好地理解生成的输出,还可以产生最先进的结果 - 高分辨率图像看起来比以前生成的图像更真实。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

StyleGAN

背景

每个GAN的基本组件是两个神经网络 - 一个从头开始合成新样本的生成模型,一个从训练数据和生成器输出中取样的判别模型,并预测它们是“真实的”还是“假的”。

生成器输入是随机向量(噪声),因此其初始输出也是噪声。随着时间的推移,当它从判别器接收反馈时,它学会合成更“逼真”的图像。通过将生成的样本与实际样本进行比较,判别器也随着时间的推移而改善,使得生成器更难以欺骗它。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

GAN概述

ProGAN的关键创新是渐进式训练 - 它首先通过使用非常低分辨率的图像(例如4×4)训练生成器和判别器,并且每次都添加更高分辨率的层。

该技术首先通过学习即使在低分辨率图像中出现的基本特征来创建图像的基础,并随着分辨率的增加随时间学习越来越多的细节。训练低分辨率图像不仅更容易,更快,而且还有助于训练更高级别,因此,训练速度也更快。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

ProGAN概述

ProGAN可生成高质量图像,但与大多数模型一样,它控制生成图像特定功能的能力非常有限。换句话说,这些特征是纠缠在一起的,因此尝试调整输入一点点,都会同时影响多个特征。一个很好的类比就是基因,其中改变单个基因可能会影响多种性状出现。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

从低层到高层的ProGAN渐进式训练

StyleGAN的工作原理

StyleGAN提供了ProGAN图像生成器的升级版本,重点关注生成器网络。ProGAN渐进层的潜在好处是如果使用得当,它们能够控制图像的不同视觉特征。层越低(或分辨率越低),它影响的特征越粗糙。本文将这些特征分为三类:

  1. 粗分辨率:从初始到82 - 影响姿势,一般发型,脸型等
  2. 中等分辨率:162到322 - 影响更精细的面部特征,发型,睁眼/闭眼等。
  3. 精细分辨率:642到10242 - 影响配色方案(眼睛,头发和皮肤)和微观特征。

新的生成器包括ProGAN生成器的几个附加功能:

映射网络

映射网络的目标是将输入向量编码为中间向量,其中不同的元素控制不同的视觉特征。这是一个非常重要的过程,因为用输入向量控制视觉特征的能力是有限的,因为它必须遵循训练数据的概率密度。例如,如果黑头发的人的图像在数据集中很常见,则更多输入值将映射到该特征。模型不能将输入的部分(向量中的元素)映射到特征,这种现象称为特征纠缠。然而,通过使用另一个神经网络,模型可以生成不必遵循训练数据分布并且可以减少特征之间的相关性的向量。

映射网络由8个完全连接的层组成,其输出ⱳ与输入层(512×1)的大小相同。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

具有映射网络的生成器

样式模块(AdaIN)

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

  1. 首先对卷积层输出的每个通道进行归一化,以确保步骤3的缩放和移位具有预期的效果。
  2. 使用另一个完全连接的层(标记为A)将中间矢量transformed变换为每个通道的标度和偏差。
  3. 比例和偏置矢量移动卷积输出的每个通道,从而定义卷积中每个滤波器的重要性。此调整将信息从ⱳ转换为可视化表示。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

生成器的归一化自适应实例(AdaIN)

删除传统输入

大多数模型和其中的ProGAN使用随机输入来创建发生器的初始图像(即4×4级的输入)。StyleGAN团队发现图像特征由ⱳ和AdaIN控制,因此初始输入可以省略并替换为常量值。虽然本文没有解释为什么它会提高性能,但一个安全的假设是它减少了特征纠缠 - 网络更容易只使用ⱳ来学习,而不依赖于纠缠的输入向量。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

综合网络输入被替换为常量输入

随机变化

人脸中有许多很小的特征,可以看作是随机的,如雀斑,毛发的准确位置,皱纹,这些都使图像更加逼真,增加了输出的多样性。将这些小特征插入GAN图像的常用方法是将随机噪声添加到输入矢量。然而,在许多情况下,由于上面描述的特征纠缠现象使得噪声影响难以控制,这导致图像的其他特征受到影响。

StyleGAN中的噪声以与AdaIN机制类似的方式添加 - 在AdaIN模块之前向每个通道添加缩放的噪声,并稍微改变其操作的分辨率级别的特征的视觉表达。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

将缩放的噪声添加到合成网络的每个分辨率级别

Style mixing

StyleGAN生成器在综合网络的每个级别中使用中间向量,这可能导致网络知道级别是相关的。为了减少相关性,模型随机选择两个输入向量并为它们生成中间向量。用第一个训练一些标准然后切换到另一个标准以训练其余的标准。随机切换确保网络不会学习并依赖于级别之间的相关性。

虽然并没有改善所有数据集的模型性能,但这个概念有一个非常有用 - 它能够以连贯的方式组合多个图像。该模型生成两个图像A和B,然后通过从A中获取低级特征并从B中获取其余特征来组合它们。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

ⱳ向量中的截断技巧

生成模型中的挑战之一是处理训练数据中表现不佳的区域。生成器无法学习它们并创建类似于它们的图像。为了避免生成不良图像,StyleGAN截断中间向量ⱳ,迫使其保持接近“平均”中间向量。

训练模型后,通过选择许多随机输入生成“平均”, ⱳ用映射网络生成它们的中间向量; 并计算这些向量的平均值。在生成新图像时,不是直接使用映射网络输出,而是变换为ⱳ_new=ⱳ_avg+Ψ(ⱳ-ⱳ_avg),其中Ψ的值定义图像与“平均”图像的距离(以及多样性)输出。通过对每个级别使用不同的Ψ,在仿射变换块之前,模型可以控制每组特征的平均距离。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

通过改变不同级别的Ψ值来调整生成的图像

微调

在ProGAN上对StyleGAN的进一步改进是更新几个网络超参数,例如训练持续时间和损失函数,以及将最近/下降到最近邻替换为双线性采样。虽然这一步骤对于模型性能很重要,但是创新性较差。

基于样式的GAN生成器架构,生成和调整逼真的人工脸

相关推荐