SimSwap: An Efficient Framework For High Fidelity Face Swapping
Tencent, China 2021
简介:
提出了一个高效的框架,称为简单交换(SIMSWAP),旨在实现广义的、高保真的人脸交换。 与以往的方法相比,此框架能够在保留目标人脸属性的前提下,将任意源人脸的身份转换为任意目标人脸。 通过以下两种方式克服上述缺陷。 首先,作者提出了身份注入模块(IIM),它将源人脸的身份信息在特征级传递到目标人脸中。 利用该模块,将特定于身份的人脸交换算法的框架扩展为任意人脸交换的框架。 其次,提出了弱特征匹配损失,有效地帮助模型以隐式的方式保留人脸属性。 在自然人脸上的大量实验表明,SIMSWAP能够在保持属性的同时实现竞争性的身份性能,比以前的最先进的方法更好。 该代码已经在GitHub上提供
结论:
提出了一个有效的SIMSWAP框架,旨在实现广义的、高保真的人脸交换。 提出了身份注入模块:特征级传递身份信息,并将特定于身份的人脸交换扩展到任意的人脸交换。 弱特征匹配损失使该框架具有良好的属性保存能力。 大量的实验结果表明,此模型能够生成视觉效果良好的结果,并且这种方法能够更好地保存属性。
人脸交换技术介绍:
人脸交换是一种很有前途的技术,它将源人脸的身份转换为目标人脸,同时保持目标人脸的属性(如表情、姿态、光照等)不变。 它在电影工业中被广泛应用于生产不存在的人脸。
人脸交换的主要困难可以归纳为:
1) 一个具有较强泛化能力的人脸交换框架应适用于任意人脸;
2) 结果面的同一性应接近于源人脸的同一性;
3) 结果人脸的属性(如表情、姿态、灯光等)应与目标人脸的属性一致。
人脸交换方法主要有两种,包括图像级的源人脸交换方法和特征级的目标人脸交换方法。 面向源的方法将属性(如表情和姿态)从目标人脸转移到源人脸,然后将源人脸融合到目标图像中。 这些方法对源图像的姿态和光照敏感,不能准确地再现目标的表情。面向目标的方法直接修改目标图像的特征,能够很好地适应源人脸的变化。。 基于GAN的工作在特征层次上结合了源的身份和目标的属性,并将应用扩展到任意身份。 最近的一项工作利用了两个阶段的框架,并实现了高保真的结果。 然而,这些方法过于关注标识修改。 它们对属性保存的约束很弱,经常会遇到表情或姿势不匹配的情况。
为了克服人脸交换在泛化和属性保持方面的缺陷
提出了一个高效的人脸交换框架SIMSWAP,该团队分析了一种特定身份的人脸交换算法DeepFakes. 2020. faceswap的体系结构,发现该算法缺乏通用性是由于将身份信息集成到译码器中,因此译码器只能适用于一个特定的身份。 为了避免这种集成,作者提出了ID注入模块
此外,身份和属性信息在特征级高度耦合。 直接对整个特征进行修改会导致属性性能下降,需要利用训练损失(作者采用Condition Gan来监督损失,pix2pix 的架构)来缓解这种影响。
由于显式约束结果图像的各个属性与目标图像的属性匹配过于复杂,我们提出了弱特征匹配损失。 我们的弱特征匹配丢失使生成的结果在高语义级别上与输入目标一致,并隐式地帮助我们的体系结构保留目标的属性。 通过使用这个术语,我们的SIMSWAP能够实现具有竞争力的身份性能,同时拥有比以前最先进的方法更好的属性保存技能。 大量的实验证明了该算法的通用性和有效性。
算法
在给定源图像和目标图像的情况下,提出了一个框架,在保持目标人脸属性不变的情况下,将源人脸的身份转换到目标人脸中。 框架从特定于身份的人脸交换体系结构DeepFakes. 2020. faceswap扩展而来,可以适应任意身份。
论文行文思路从以下四个方向入手
1.首先讨论了原始体系结构的局限性
2.展示如何将其扩展到任意标识的框架
3.提出了弱特征匹配损失,这有助于保持目标的属性
4.损失函数
原始体系结构的局限性
DeepFakes的体系结构包括两个部分,一个公共编码器和两个特定于身份的解码器。 在训练阶段,-Architecture接收扭曲的源图像,并将其恢复到原始未扭曲的源图像。 同样的过程将使用-Architecture对目标图像进行。 在测试阶段,一个目标映像将被发送到-Architecture。 架构会将其误认为是扭曲的源图像,并生成具有源标识和目标属性的图像。 在此过程中,编码器ENC提取目标人脸的特征,这些特征包含目标人脸的身份信息和属性信息。 由于解码器设法将目标特征转换为具有源人脸身份的图像,因此源人脸的身份信息必须被集成到权值中。 因此,DeepFakes中的解码器只能适用于一个特定的身份。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6MYMzmXb-1664440061199)(E:\人脸融合\SimSwap\md_img\simswap论文与代码研读\v2-f34be31eed4179f36f1c5b12b627f962_r (1)].png)
在训练模型时,训练了 2 个解码器。 解码器 A 使用编码向量并尝试重新创建人脸 A,解码器 B 使用编码向量并尝试重新创建人脸 B。当最终交换人脸时,我们切换解码器,因此我们提供模型的人脸 A是通过解码器 B得到的。由于编码器已经在两组人脸上进行了训练,因此模型将对 A 的输入人脸进行编码,然后尝试从解码器 B 中重建它,从而导致我们的模型输出交换的人脸。
扩展到任意标识的框架
通过在编码器和解码器之间增加一个额外的ID注入模块来改进该体系结构,从而使整个体系结构可以泛化为任意身份
给定一个目标图像,我们把它通过我们的编码器来提取它的特征。 由于我们的任务是将目标人脸与源人脸进行交换,因此我们必须在保持属性信息不变的情况下,将身份信息替换为源人脸的身份信息。 然而,信息中的身份和属性信息高度耦合,难以区分。 因此,我们在整体上直接进行修改,并利用训练损失来激励网络隐含地学习哪些部分应该改变,哪些部分应该保留。 ID注入模块致力于将身份信息转换为源人脸的身份信息。 该模块由两部分组成,身份提取部分和嵌入部分。 在身份提取部分,我们对输入的源图像进行处理,该图像包含了源人脸的身份和属性信息。 由于我们只需要前者,我们使用一个人脸识别网络Deng_ArcFace_Additive_Angular_Margin_Loss_for_Deep_Face_Recognition_CVPR_2019_paper.pdf 来提取身份向量。 在嵌入部分,我们使用ID块将身份信息注入到特征中。
ID Embedding模块采用9个ID-Block,且采用Adaptive Instance Normalization(AdaIN)来代替Batch Norm。
在训练过程中,从生成的结果中提取身份向量,并利用身份损失最小化距离。 然而,身份丢失会使网络过度拟合,只生成具有源身份的正面人脸图像,而丢失目标的所有属性。 为了避免这种现象,我们利用对抗训练的思想并使用鉴别器来区分有明显误差的结果。 对抗性损失对提高生成结果的质量也起着重要作用。 使用PatchGan 版本的鉴别器。[Image-to-Image Translation with Conditional Adversarial Networks.pdf](Image-to-Image Translation with Conditional Adversarial Networks.pdf)
弱特征匹配损失,保留目标的属性
在人脸交换任务中,修改应该只在身份部分进行,而目标人脸的属性(如表情、姿态、光照等)应该保持不变。 但是,由于我们是直接进行整体修改,同时包含了目标人脸的身份信息和属性信息,因此属性信息很可能会受到身份嵌入的影响。 为了防止属性不匹配,使用训练损失来约束它们。 然而,如果我们选择显式地约束所有属性,我们将不得不为每个属性训练一个网络。 整个过程应该是不切实际的,因为要考虑的属性太多了。 因此,我们提出了利用弱特征匹配损失进行隐式约束的方法(Gan loss)。 offeature匹配的思想起源于PIX2PIXHD Wang_High-Resolution_Image_Synthesis_CVPR_2018_paper.pdf ,它使用鉴别器从地面真值图像和生成的输出中提取多层特征。 原始特征匹配损失写为:
修改后的,论文所用的特征匹配损失函数
相同:
都采用了均值L1距离来监督。
不同:论文的是只要深层特征均值L1监督,理由如下
原本的特征匹配损失是为了在像素级上对结果进行约束,因此浅层图像的特征起关键性作用。人脸交换任务中,从输入的目标图像中引入过多的纹理信息(低层的channels)会使结果与目标人脸相似,给身份修改带来困难,因此删除了原始特征匹配项中的前几层。也就是删除纹理信息,属性是高语义信息,主要存在于深层特征中。故而丢弃浅层纹理信息,只保存高级语义信息。通过使用这样的损失函数,即使没有显式地约束网络的任何特定属性,它也将隐式地学习如何保留输入目标人脸的属性。
损失函数
5个组成部分,包括身份损失、重构损失、对抗性损失、梯度惩罚和弱特征匹配损失。
身份损失
用余弦相似度距离表示,约束两个对象之间的距离
重构损失
如果是用源人脸生成源人脸,则结果应当是一样的。
对抗损失与梯度惩罚
作者引用的别人的loss
弱特征匹配损失和整体损失
对比实验,模型测试
与面向源的FSGAN, 面向目标的 DeepFakes,FaceShifter在数据集FaceForensics++做比对。
困难点,没有一个统一的评价指标可以来判断生成图片的好坏,若采用机器学习分类来判断,也没有一个统一的标准,故而这里采用的主观评价。
由人主观判断可知:
DeepFakes的结果会受到灯光和姿势不匹配的影响
FaceShifter设法产生体面的人脸交换结果,但结果脸的表情和注视方向并不完全尊重目标脸的表情和注视方向。过于关注身份部分,往往不能保持像表情和注视方向这样的属性。
由人主观判断可知:
DeepFakes的结果会受到灯光和姿势不匹配的影响
FaceShifter设法产生体面的人脸交换结果,但结果脸的表情和注视方向并不完全尊重目标脸的表情和注视方向。过于关注身份部分,往往不能保持像表情和注视方向这样的属性。