【算法背景】

GAN除了在之前介绍的图像转换有巨大的应用潜力,得益于StyleGANStyleGAN2在人脸生成上的逼真效果,GAN的另一个应用-人脸属性编辑也得到了巨大的发展,该类技术旨在通过对人脸图像进行操作达到个性化设计的目的,主要包含人脸滤镜、 人脸贴妆、人脸变形、人脸特征变换、人脸风格化等,示意图下:

人脸属性编辑示意图

考虑到StyleGAN对于人脸属性编辑的重大意义,本篇博客将重点介绍基于此系列算法的人脸属性编辑方法,暂不讨论基于传统图像处理的人脸算法(如磨皮、美颜、瘦脸等),也不讨论以StarGANMaskGAN为代表的其他深度学习方法。

【StyleMixing-实现妆容迁移】

算法原理

之前博客中提到:StyleGAN2 中不同分辨率的激活张量控制人脸图像中不同细 粒度的属性特征,即分辨率越高、特征细粒度越小。具体地,中小分辨率的激活张 量控制诸如性别、年龄、人脸姿态、发型、嘴巴形态、戴眼镜等主要的人脸身份特征,而高分辨率的激活张量控制诸如光线、色调等人脸细节信息。StyleMixing能够组合不同人脸图像下不同细粒度的特征,以保证生成的人脸图像能够从不同的人脸图像中抽取不同细粒度的面部属性,算法示意图如下:

StyleMixing算法示意图

结果

使用这类技术我们可以实现类似妆容迁移的效果,比如在控制某个人物脸部特征(比如性别、脸型、发型等)不变的情况,将另一个人物的更细粒度特征(如肤色、灯光、环境)等迁移到第一个人脸上,这类算法实现的最终效果如下:

使用StyleMixing进行妆容迁移

【InterFaceGAN-实现全局编辑】

算法原理

InterFaceGAN对隐向量进行操作并将修改后的隐向量送入PGGANStyle­GAN等人脸生成网络,对隐向量准确移动以保证生成的图像具有指定的人脸属性。

具体下图所示,InterFaceGAN 发现在隐空间内中,某个面部属性上拥有不同属性表征的人脸图像是线性可分的,即在隐向量空间内存在某个超平面,使得在该超平面两侧的隐向量代表两类不同的人脸属性集合 (如嘴巴张开和闭合) ,将代表人脸的隐向量沿着该超平面的单位法向量方向 移动即可以对该人脸图像进行指定属性的编辑。

InterFaceGAN编辑示意图

上述过程可表示为如下公式: 其中 表示编辑步长,越大则表示属性改变的幅度越大(比如微笑、大笑)。

结果

InterFaceGAN对编辑的属性没有明确要求,只要其具有相对明确的可分性即可,可以是针对人脸的局部属性(比如嘴巴张合、鼻子大小),也可以是全局属性(比如性别、皮肤美白、年龄等),具体编辑的结果可见下:

interfaceGAN属性编辑结果

属性解耦

以上InterFaceGAN虽然能够完成某个指定属性的编辑但是存在耦合性,即对某个属性进行编辑时可能会影响其他属性(如上图变微笑时刘海变薄,鼻子变大时皮肤变黑等),为了解决该问题论文还提出了条件操作(Conditional Manipulation)方法,示意图如下:

InterFaceGAN条件操作

其中 分别表示两类人脸属性 的分类超平面的单位法向量,如果将代表人脸图像的隐向量沿着 方向移动,则能够在对人脸属性 编辑的过程中保证条件属性 不会被改变,提高人脸属性编辑的解耦性。

【ATMGAN-实现局部编辑】

算法先验

首先回顾在之前博客中提到过的关于StyleGAN2的一个重要先验:StyleGAN2中不同分辨率的特征张量代表不同细粒度的人脸属性。具体地,低分辨率代表脸型、姿态等粗粒度人脸属性,而中分辨率代表五官、发型等相对细粒且局部的属性,高分辨率则代表发丝、皮肤等更加细粒度的细节特征。

ATMGAN论文则根据该先验进一步分析每层特征图下不同通道的所代表的人脸特征:

StyleGAN2中两个通道的激活值分布

上图中 a) 行和 b) 行分别表示 StyleGAN2 网络中 16 × 16 大小的特征图下某两个通道的特征值分布情况,其中红色和绿色分别代表负值和正值且颜色越深绝对值越大,此外每张人脸图像下的数字分别表示各自通道在对应嘴巴区域的 8 个激活值的平均值。

可以看到 a)行中嘴巴区域的激活值随着嘴巴形态从闭合到张开值不断变大,而b)行无此变化规律。我们就可以称 a)行的通道对于嘴巴张开/闭合是具有编辑意义的,而b)行所代表的通道则不具有此编辑意义

找到有编辑意义的通道

以StyleGAN2为代表的生成对抗网络的生成器内部存在大量分辨率不同、通道数不同、特征表达不 同的激活张量,并非所有激活张量均对最终生成的人脸图像都具有编辑意义。为 了对指定的人脸属性进行编辑,需要依次确定待操作的激活张量、特征图 (通道) 和特征值。

而根据之前的提到的先验可以根据所操作人脸属性的细粒度找到合适分辨率的激活张量,然后为了确定该激活张量中哪个或哪些通道组合可用于控制指定的人脸属性编辑,可以使用以下公式计算每一个通道对于待操作属性的编辑意义得分: 其中 表示所选的激活张量中第个通道 的空间维度下标, 表示与大小相同的二维形式掩膜,该掩膜中在空间位置上对应于待编辑属性区域的素设为1,其他元素设为0。简单来说就是使用每个通道内在空间位置上对应于待编辑属性区域(比如嘴巴区域)的激活值总和代表该通道的编辑意义得分,因为根据ATMGAN对于通道属性的分析:编辑意义越高则对应特征值的激活信号越强。

利用该公式计算激活张量中每个通道对于待编辑属性的得分,并取前个得分高的通道作为最终待操作的通道。

此外要注意的是:对于指定属性下每个通道的编辑得分的计算,首先生成张人脸图像, 并计算在这张图像下每个通道 的平均得分作为其最终得分。此外因为相同人脸属性下不同的表现形式也会导致对应的激活值有着不同的数值分布,需要保证这张人脸图像对于待编辑的人脸属性有着相近或者相同的表达 (如均为嘴巴张开)。

局部编辑框架

在确定了待操作的激活张量和通道后,只需要在推理的过程中,对这部分通道对应人脸属性区域的激活值进行操作(直接增加)即可,示意图如下:

基于AMTGAN的人脸属性编辑

局部编辑验证

为了验证该编辑方法具有局部性,将编辑前后的结果做个差值示。具体地,在对下面👇🏻左边原图分别进行眼镜区域(去除眼镜)和鼻子区域(鼻子变大)操作后与原图做像素差值,意如下:

ATMGAN编辑结果前后差异图

红框内为一组结果且右边代表差异图,其中蓝色代表差值为0,偏白色表示差值大于零。可以比较清楚看到编辑结果只有在指定的区域才发生变化,而其他区域则会保持原图像的像素值,从而达到局部属性编辑的效果。

更多结果

ATMGAN局部编辑结果

【Neural Style Transfer-实现风格迁移】

算法原理

Image Style Transfer指出一张图像的风格可以量化表示为:该图像经过卷积神经网络的特征提取后每两个特征图之间的关联信息,即中间第层激活张量 下每两个通道之间计算偏心协方差后组成的偏心协方差矩阵。

具体地,首先抛弃激活张量的空间维度()将其拉伸成的二维矩阵,再计算该矩阵中任意两行向量不减去均值的协方差,最后得到 大小的偏心协方差矩阵 (即 Gram 矩阵),具体地该矩阵中每个元素可表示为:

上述激活张量的变化过程和 Gram 矩阵计算过程可以分别用下图中的(a)和(b)表示,得到的 Gram 矩阵中每个元素就代表原始激活张量中对应两个通道的关联信息,最终就可以用整个 Gram 矩阵代表原始图像的风格量化信息。

Gram矩阵计算示意图

有了上述理论基础,Image Style Transfer则在给定一个风格图和内容图的时候,通过逐步优化的方式,保证输出的结果图有两个性质:

  • 风格上和风格图接近(用L1损失拉近两个图的Gram矩阵-即风格损失)
  • 内容上和内容图接近(用L1损失拉近两个图的中间激活张量-内容损失)

同时,Real-Time Style Transfer为了解决上述基于优化方法的大问题-速度慢,提出了一个基于前向推理的风格迁移框架,在给定一张风格图和大量的内容图并使用的同样的风格+内容损失预先训练一个前向推理的网络 。待训练结束之后对于指定的内容图像 ,将其输入该网络就可以在保留本身内容信息的情况下直接转化得 到具有风格的输出结果。

结果

本博客使用Real-Time Style Transfer的方法,训练了几种可以生成指定风格的网络,具体结果如下:

风格迁移

总结

StyleleGAN系列的算法不仅提供了高质量人脸图像生成的算法,同时其强大的框架也未后续提供了很多人脸属性编辑的算法,包括妆容迁移、局部/全局属性编辑,极大程度提高了该类算法的应用落地。

同时风格迁移算法也为多样风格的图像生成提供了新的思路。