人脸属性编辑是一个很广的应用领域,不仅可以用于辅助其他诸如人脸识别等相关的任务,也可以独立成若干新的任务,在人机交互,娱乐社交领域有广泛应用,本文我们简单介绍其中核心算法以及如何深入学习。
作者&编辑 | 言有三
1. 人脸属性编辑应用
所谓人脸属性编辑,即改变人脸的某些属性,比如姿态、年龄等,或者将人脸图转变为具有特定风格的图人脸属性编辑包含非常多的应用,比如人脸化妆去妆、人脸年龄的更改、人脸卡通头像生成、换脸等。
1.1 人脸年龄编辑
人脸年龄编辑,即更改人脸的年龄属性,可以用于仿真人脸随着年龄变化的过程,从而在相关领域进行应用。比如在影视等作品中预测年轻演员变老后模样,或者反之。
另外,它也可以用于辅助跨年龄的人脸识别问题,从而在寻找丢失多年的儿童等应用中提高算法的精度。
1.2 人脸表情编辑
人脸表情编辑即更改脸部的表情属性,包括嘴唇、鼻子等区域。可以广泛应用于人机交互和娱乐社交领域,也可以用于人脸表情去除,辅助提升人脸识别等算法等精度。
1.3 人脸姿态编辑
人脸姿态编辑即更改人脸的姿态,可以用于仿真不同的姿态以及对人脸进行正脸化,辅助大姿态下人脸检测,关键点定位以及人脸识别等任务。
1.4 人脸身份编辑(换脸)
换脸即将某一人脸变为其他的人脸,可以应用于娱乐和影视制作领域。
1.5 人脸妆造编辑
人脸妆造编辑,指的是将一张人像的妆容迁移到任意一张人像照片中,或者进行去妆,这是相对于塑形等更新的美颜技术。
1.6 人脸风格化编辑
人脸风格化即将真实人脸图像生成具有特定风格的图片,主要用于娱乐社交领域。
2. 深度学习人脸编辑核心技术
当前的人脸编辑核心技术以GAN和风格化为基础,本文不 会详解介绍它们,而是直接介绍人脸编辑的相关模型。
2.1 表情编辑
表情的编辑可以广泛应用于娱乐社交领域,对表情进行归一化后也有助于提升大表情图像的关键点定位,人脸识别等算法的性能,下面我们介绍一个代表。
“Geometry Guided Adversarial Facial Expression Synthesis”[1]中提出了一个基于关键点的表情编辑GAN,简称G2-GAN,它将人脸关键点的热图作为条件来控制表情的生成与去除,其结构如下图。
该模型包括两个生成器和两个判别器。生成器GE是一个表情生成器,输入带表情的关键点热图HE和无表情的正脸图IN,生成有表情的图IE。生成器GN则相反,输入带表情的关键点热图HE和有表情的正脸图IE,生成无表情的图IN。在表情生成任务中,HE扮演的是控制幅度的角色,而在表情去除的任务中,HE扮演的则是一个类似于标注的角色。
判别器DE用于判别真实的三元组(IN,HE,IE)和生成的三元组(IN,HE,GE(IN,HE)),DN类似。
整体的损失函数包括4部分:
第一部分是标准的GAN损失,包括生成器损失和判别器损失。
第二部分是像素损失,用于约束生成器的输出结果与输入图的像素平滑,定义如下:
第三部分是与CycleGAN相同的循环损失,从输入图经过两个生成器后构成了一个闭环,定义如下,其中G和G’互为相反方向的生成器。
第四部分是属性保持损失,用于约束身份信息不会被更改。
2.2. 年龄编辑
人脸年龄对于人脸识别等算法构成了挑战,年龄的编辑不仅可以用于娱乐社交领域,对年龄进行归一化后更有助于提升人脸识别等算法等性能,下面我们介绍一个代表。
CAAE模型[2]是一个基于Latent Space的模型,它首先假设人脸图像处于一种高维流形(high-dimensional manifol)中,当图像在这个流形中沿着某个特定方向移动时,年龄就会随着发生自然的变化,不过在高维流形中操作人脸图像是一件非常困难的事情,我们无法直接描绘该轨迹。
因此与大部分生成模型的思路一样,首先需要将图像映射到低维的latent space,得到一个低维的向量,最后再把处理后的低维向量映射回到高维流形中。这两次映射分别由编码器(Encoder E)和生成器(Generator G)实现,模型结构如下图:
Encoder E输入图像,输出特征向量z,之后与n维的年龄标签向量进行拼接作为G的输入,G则输出仿真后的人脸。
判别器包含两个,一个是Dimg,一个是Dz。年龄标签向量填充后与人脸图进行通道拼接输入到判别器Dimg,该判别器判别生成图的真实性,实际上就是年龄段的分类,它包含若干个卷积层和若干个全连接层。Dz则用于约束z是一个均匀分布,它包含若干个全连接层。
CAAE模型的主要问题是生成的结果图缺少细节,并且无法保持人脸的身份属性。
2.3. 姿态编辑
Face Frontalization(FFGAN)[3]是一个早期的姿态编辑GAN,它通过输入人脸和3DMM模型的系数,使用生成器来生成正脸,并使用判别器判断正假,使用人脸识别模型来监督人脸身份属性保持。
在FFGAN模型中,3DMM系数提供了全局的姿态信息以及低频的细节,而输入的大姿态图像则提供了高频细节,整个损失函数包括5部分,除了人脸重建损失,全变分平滑损失,GAN的对抗损失以及人脸识别身份保持损失之外,还添加了一个人脸对称性的约束作为对称损失。
2.4. 妆造编辑
美颜和美妆是人脸中很常见的技术,在网络直播以及平常的社交生活中都有很多应用场景。妆造编辑算法,指的是将一张人像的妆容迁移到任意一张人像照片中,这是美颜算法中比较复杂的技术,下面我们介绍一个典型代表BeautyGAN[4]。
BeautyGAN采用了经典的图像翻译结构,生成器G包括两个输入,分别是无妆图Isrc、有妆图Iref,通过编码器(encoder)、若干个残差模块(residual blocks)、解码器(decoder)组成的生成器G 得到两个输出,分别是上妆图IBsrc、卸妆图IAref,结构示意图如下。
BeautyGAN使用了两个判别器DA和DB,其中DA用于区分真假无妆图,DB用于区分真假有妆图。
除了基本的GAN损失之外,BeautyGAN包含了3个重要的损失,分别是循环一致性损失Cycle consistency loss,感知Perceptual loss,妆造损失Makeup loss,前两者是全局损失,最后一个是局部损失。
为了消除迁移细节的瑕疵,将上妆图IBsrc和卸妆图IAref再次输入给G,重新执行一次卸妆和上妆,得到两张重建图Iresrc和卸妆图Ireref,此时通过循环损失(cycle consistency loss)约束一张图经过两次G变换后与对应的原始图相同。因为生成器的输入包含了一对图,所以与CycleGAN的不同之处在于这里使用了同一个生成器G,该损失用于维持图像的背景信息,具体的损失定义与CycleGAN相同,不再赘述。
上妆和卸妆不能改变原始的人物身份信息,这可以通过基于VGG模型的Perceptual loss进行约束,定义如下:
其中Cl,Hl,Wl分别是网络第l层的通道数,特征图高度和宽度。
为了更加精确的控制局部区域的妆造效果,BeautyGAN训练了一个语义分割网络提取人脸不同区域的掩膜(mask),使得无妆图和有妆图在脸部、眼部、嘴部三个区域需满足妆造损失(makeup loss),妆造损失通过直方图匹配实现,其中一个区域的损失定义如下:
item可以分别表示脸部、眼部、嘴部三个区域,HM是一个直方图匹配操作,M就是图对应的掩膜,表示逐个像素相乘。
整个makeup损失定义如下:
完整的BeautyGAN生成器损失为:
2.5. 换脸算法
换脸算法的流行起源于Deepfakes[5],它是一个开源的项目,同时也是一类算法的统称,其训练流程和测试流程分别如下图:
Deepfakes的训练需要两个域的图像集,称之为A和B。Deepfakes在使用同样的编码器的约束下,分别在集合A和集合B上训练出一个解码器。在使用时从集合A中选择图片,经过编码器提取特征后再输入在集合B上训练完成的解码器,就可以实现将图像A中的人脸换成集合B中的人脸,感兴趣的可以参考开源代码进行尝试
2.6 人脸风格化
以Pix2pix为代表的条件GAN如今已经被广泛应用于图像翻译领域,是当下使用GAN做人脸风格化生成的主流模型架构。由于成对的数据非常难以获取,因此不需要成对数据的CycleGAN有更广阔的应用空间。然而直接采用CycleGAN无法保证生成结果图五官的分布合理性,因为研究人员会对其进行改进,下面我们介绍一个典型代表。
UGATIT[6]使用了注意力机制对关键区域进行学习,生成器和判别器结构如下图。
注意力机制实际上就是全局和平均池化下的类激活图(Class Activation Map-CAM)的使用,输入是下采样的特征图,输出各个通道的权重,实现了特征图下的注意力机制学习,这个注意力机制模型的目标是学习到那些能够区分源域和目标域区别的重要区域。
另外UGATIT大量使用了AdaLIN。在图像风格化领域中,Instance Normalization(IN)和Layer Normalization(LN)相比Batch Normalization是更加常用的技术,IN因为对各个图像特征图单独进行归一化,会保留较多的内容结构,LN与IN相比,使用了多个通道进行归一化,能够更好地获取全局特征,AdaLIN便是结合了两者的特点。
2.7 统一的人脸属性编辑框架
前面针对人脸各个属性的编辑,分别介绍了相关的研究框架,但实际上还可以通过一个统一的框架来完成。Nvidia公司研究人员提出的StyleGAN[7]是一个非常经典的生成网络,它可以精确控制所生成人脸图像的各类属性。
上图展示了StyleGAN和一般GAN的对比,StyleGAN包含了一个映射网络(Mapping network f)和一个生成网络(Synthesis network g)。
映射网络f总共有8层,输入是512维的噪声z,然后是8个全连接层,输出512维的向量w。通过一个网络进行编码后,模型可以生成一个不必遵循训练数据集合数据分布的向量,并且可以减少特征之间的相关性。
w经过8个不同的仿射变换A得到生成网络g中每一个AdaIN层所需要的尺度和偏移,AdaIN层是一个在生成对抗网络和风格化领域中应用非常广泛的归一化层
生成网络synthesis network g是一个分辨率逐级提升的结构,总共有18层,每两层上采样一个尺度,输入大小从4×4变换到1024×1024。其中AdaIN的尺度和偏移可以控制每一层的属性,以生成人脸图像为例,在论文的实验中发现,按照尺度可以分为三种特征。
全局特征:主要是在分辨率不超过8×8的尺度,影响面部姿势、发型、面部形状等特征。
中级特征:主要是在分辨率16×16和32×32的尺度,它影响更精细的面部特征,如发型、眼睛的睁闭等。
细节特征:主要是在分辨率64×64到1024×1024的尺度,它影响眼睛、头发和皮肤等纹理和颜色细节。
因此,通过改变w到AdaIN层的风格矩阵,就可以影响生成人脸的各方面的属性,从而实现人脸的属性编辑。
参考文献
[1] Lingxiao Song, Zhihe Lu, Ran He, Zhenan Sun, Tieniu Tan. Geometry Guided Adversarial Facial Expression Synthesis. CoRR abs/1712.03474 (2018).
[2] Zhang Z, Song Y, Qi H. Age progression/regression by conditional adversarial autoencoder[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 5810-5818.
[3] Yin X, Yu X, Sohn K, et al. Towards large-pose face frontalization in the wild[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 3990-3999.
[4] Li T, Qian R, Dong C, et al. Beautygan: Instance-level facial makeup transfer with deep generative adversarial network[C]//Proceedings of the 26th ACM international conference on Multimedia. 2018: 645-653.
[5] https://github.com/deepfakes/faceswap
[6] Kim J , Kim M , Kang H , et al. U-GAT-IT: Unsupervised Generative Attentional Networks with Adaptive Layer-Instance Normalization for Image-to-Image Translation[J]. 2019.
[7] Karras T,Laine S,Aila T.A style-based generator architecture for generative adversarial networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.2019:4401-4410.