【算法背景】
GAN除了在之前介绍的图像转换有巨大的应用潜力,得益于StyleGAN和StyleGAN2在人脸生成上的逼真效果,GAN的另一个应用-人脸属性编辑也得到了巨大的发展,该类技术旨在通过对人脸图像进行操作达到个性化设计的目的,主要包含人脸滤镜、 人脸贴妆、人脸变形、人脸特征变换、人脸风格化等,示意图下:
考虑到StyleGAN对于人脸属性编辑的重大意义,本篇博客将重点介绍基于此系列算法的人脸属性编辑方法,暂不讨论基于传统图像处理的人脸算法(如磨皮、美颜、瘦脸等),也不讨论以StarGAN、MaskGAN为代表的其他深度学习方法。
【StyleMixing-实现妆容迁移】
算法原理
之前博客中提到:StyleGAN2 中不同分辨率的激活张量控制人脸图像中不同细 粒度的属性特征,即分辨率越高、特征细粒度越小。具体地,中小分辨率的激活张 量控制诸如性别、年龄、人脸姿态、发型、嘴巴形态、戴眼镜等主要的人脸身份特征,而高分辨率的激活张量控制诸如光线、色调等人脸细节信息。StyleMixing能够组合不同人脸图像下不同细粒度的特征,以保证生成的人脸图像能够从不同的人脸图像中抽取不同细粒度的面部属性,算法示意图如下:
结果
使用这类技术我们可以实现类似妆容迁移的效果,比如在控制某个人物脸部特征(比如性别、脸型、发型等)不变的情况,将另一个人物的更细粒度特征(如肤色、灯光、环境)等迁移到第一个人脸上,这类算法实现的最终效果如下:
【InterFaceGAN-实现全局编辑】
算法原理
InterFaceGAN对隐向量进行操作并将修改后的隐向量送入PGGAN、StyleGAN等人脸生成网络,对隐向量准确移动以保证生成的图像具有指定的人脸属性。
具体下图所示,InterFaceGAN
发现在隐空间内中,某个面部属性上拥有不同属性表征的人脸图像是线性可分的,即在隐向量空间内存在某个超平面,使得在该超平面两侧的隐向量代表两类不同的人脸属性集合
(如嘴巴张开和闭合) ,将代表人脸的隐向量
上述过程可表示为如下公式:
结果
InterFaceGAN对编辑的属性没有明确要求,只要其具有相对明确的可分性即可,可以是针对人脸的局部属性(比如嘴巴张合、鼻子大小),也可以是全局属性(比如性别、皮肤美白、年龄等),具体编辑的结果可见下:
属性解耦
以上InterFaceGAN虽然能够完成某个指定属性的编辑但是存在耦合性,即对某个属性进行编辑时可能会影响其他属性(如上图变微笑时刘海变薄,鼻子变大时皮肤变黑等),为了解决该问题论文还提出了条件操作(Conditional Manipulation)方法,示意图如下:
其中
【ATMGAN-实现局部编辑】
算法先验
首先回顾在之前博客中提到过的关于StyleGAN2的一个重要先验:StyleGAN2中不同分辨率的特征张量代表不同细粒度的人脸属性。具体地,低分辨率代表脸型、姿态等粗粒度人脸属性,而中分辨率代表五官、发型等相对细粒且局部的属性,高分辨率则代表发丝、皮肤等更加细粒度的细节特征。
ATMGAN论文则根据该先验进一步分析每层特征图下不同通道的所代表的人脸特征:
上图中 a) 行和 b) 行分别表示 StyleGAN2 网络中 16 × 16 大小的特征图下某两个通道的特征值分布情况,其中红色和绿色分别代表负值和正值且颜色越深绝对值越大,此外每张人脸图像下的数字分别表示各自通道在对应嘴巴区域的 8 个激活值的平均值。
可以看到 a)行中嘴巴区域的激活值随着嘴巴形态从闭合到张开值不断变大,而b)行无此变化规律。我们就可以称 a)行的通道对于嘴巴张开/闭合是具有编辑意义的,而b)行所代表的通道则不具有此编辑意义。
找到有编辑意义的通道
以StyleGAN2为代表的生成对抗网络的生成器内部存在大量分辨率不同、通道数不同、特征表达不 同的激活张量,并非所有激活张量均对最终生成的人脸图像都具有编辑意义。为 了对指定的人脸属性进行编辑,需要依次确定待操作的激活张量、特征图 (通道) 和特征值。
而根据之前的提到的先验可以根据所操作人脸属性的细粒度找到合适分辨率的激活张量,然后为了确定该激活张量中哪个或哪些通道组合可用于控制指定的人脸属性编辑,可以使用以下公式计算每一个通道对于待操作属性的编辑意义得分:
利用该公式计算激活张量中每个通道对于待编辑属性的得分,并取前
此外要注意的是:对于指定属性下每个通道的编辑得分的计算,首先生成
局部编辑框架
在确定了待操作的激活张量和通道后,只需要在推理的过程中,对这部分通道对应人脸属性区域的激活值进行操作(直接增加)即可,示意图如下:
局部编辑验证
为了验证该编辑方法具有局部性,将编辑前后的结果做个差值示。具体地,在对下面👇🏻左边原图分别进行眼镜区域(去除眼镜)和鼻子区域(鼻子变大)操作后与原图做像素差值,意如下:
红框内为一组结果且右边代表差异图,其中蓝色代表差值为0,偏白色表示差值大于零。可以比较清楚看到编辑结果只有在指定的区域才发生变化,而其他区域则会保持原图像的像素值,从而达到局部属性编辑的效果。
更多结果
【Neural Style Transfer-实现风格迁移】
算法原理
Image
Style
Transfer指出一张图像的风格可以量化表示为:该图像经过卷积神经网络的特征提取后每两个特征图之间的关联信息,即中间第
具体地,首先抛弃激活张量的空间维度(
有了上述理论基础,Image Style Transfer则在给定一个风格图和内容图的时候,通过逐步优化的方式,保证输出的结果图有两个性质:
- 风格上和风格图接近(用L1损失拉近两个图的Gram矩阵-即风格损失)
- 内容上和内容图接近(用L1损失拉近两个图的中间激活张量-内容损失)
同时,Real-Time Style
Transfer为了解决上述基于优化方法的大问题-速度慢,提出了一个基于前向推理的风格迁移框架,在给定一张风格图
结果
本博客使用Real-Time Style Transfer的方法,训练了几种可以生成指定风格的网络,具体结果如下:
总结
StyleleGAN系列的算法不仅提供了高质量人脸图像生成的算法,同时其强大的框架也未后续提供了很多人脸属性编辑的算法,包括妆容迁移、局部/全局属性编辑,极大程度提高了该类算法的应用落地。
同时风格迁移算法也为多样风格的图像生成提供了新的思路。