SimSwap:一种高效的高保真人脸交换框架阅读笔记

SimSwap提出了一种新方法,通过ID注入模块在特征级转移身份信息,同时使用弱特征匹配损失保留目标人脸的属性。这种方法解决了传统人脸交换方法中泛化能力和属性保留的挑战,实现了在保持表情和凝视方向等属性的同时进行任意源到目标的人脸交换。
摘要由CSDN通过智能技术生成

SimSwap:一种高效的高保真人脸交换框架

介绍

存在的问题:缺乏泛化到任意身份的能力或未能保留面部表情和凝视方向等属性的方法
改进:能够将任意源人脸的身份转移到任意目标人脸,同时保留目标人脸的属性。
1、提出了ID注入模块(IIM),该模块在特征级将源人脸的身份信息传输到目标人脸。
通过使用该模块,我们将特定于身份的人脸交换算法的体系结构扩展到任意人脸交换的框架。
2、提出了弱特征匹配损失,以隐含的方式保存面部属性
两种类型的人脸交换方法:
1、图像级处理源人脸的面向源方法——将属性从目标面部转移到源面部,然后将源面部混合到目标图像中。对于源图像敏感,源面部的夸张表情或大姿势。
人脸与特定人脸库中的身份进行交换 Face swapping: automatically replacing faces in photographs
利用3D人脸数据集来转移表情和姿势,利用泊松混合将源人脸合并到目标图像中,无法准确再现表情On Face Segmentation, Face Swapping, and Face Perception.
fsgan使用人脸再现网络进行表情和姿势的转移,再使用人脸修复网络将源人脸融合到目标图像中
2、特征级处理目标人脸的面向目标方法——提取目标图像的特征,直接修改目标图像的特征,将特征恢复到输出的人脸交换图像中。
训练一个生成器 ,能够用特定的身份交换人脸Fast Face-Swap Using Convolutional Neural Networks
deepfake使用编码器解码器架构,能够在两个特定身份之间交换人脸,但缺少泛化能力

结合来自源面部区域和目标非面部区域的潜在表示来产生结果,未能保持目标的表情
FSNet: An Identity-Aware Generative Model for Image-Based Face Swapping.
RSGAN: face swapping and editing using face and hair representation in latent spaces.

IPGAN从源图像中提取身份向量,从目标图像中提取属性向量,将它们发给解码器,生成的结构很好地传递源人脸的身份,无法保持目标人脸的表情和姿势。
FaceShifer复杂的两阶段框架,最先进的身份性能,对属性施加太弱的约束,结果表达式不匹配。

缺乏泛化是由于将身份信息集成到解码器中造成的,解码器只能应用于一个特定的身份,因此提出一个ID注入模块,通过嵌入源人脸的身份信息对目标图像的特征进行修改,消除身份信息与解码器权重之间的相关性。
身份信息和属性信息在特征级别上是高度耦合的,对整个特征的直接修改会导致属性性能下降,需要训练损失来减轻这种影响。
显示约束结果图像的每个属性以匹配目标图像的属性过于复杂,所以提出弱特征匹配损失,在高语义级别上将生成的结果与输入的目标对齐,并隐式的帮助保留目标的属性。

方法

在这里插入图片描述
生成器由三部分组成,编码器、ID注入模块、解码器。编码器从IT提取FeaT,ID注入模块将Is的身份信息注入FeaT,解码器将修改后的特征恢复到结果图像中,使用身份损失鼓励生成与源人脸具有相似身份的结果,弱特征匹配保留目标人脸的属性,同时不对身份修改性能造成太大的损害。
判别器被用来评估生成器图像和真实图像之间的相似性和差异性,并向生成器提供反馈,以便生成器能够生成更逼真、真实的图像。

原体系deepfake的局限性

在这里插入图片描述
deepfake架构包含两个部分,一个公共编码器和两个身份特定的解码器,在训练阶段,接收扭曲的源图像,将它们恢复为原始的未扭曲的源图像,目标图像同样。在测试阶段,体系结构会将目标图像误以为是扭曲的源图像,并生成具有源身份目标属性的图像。
在此过程中,编码器提取目标的特征,包括目标的面部和属性信息,解码器设法将目标的特征转换为具有源身份的图像,源人脸的身份信息必须以集成到解码器,因此解码器只能应用于一个特定的身份。

扩展到任意身份

所以要把身份信息从解码器中分离出来,在编码器和解码器之间添加额外的ID注入模块改进。
给定目标图像,通过编码器提取它的特征,直接在整体的目标特征上进行修改,使用训练损失鼓励网络隐含地学习目标特征的哪部分应该比改变,哪部分应该被保留
该模块包括身份提取和嵌入两部分,在身份提取部分,处理输入源图像,源人脸的身份信息和属性信息,只需要源人脸的身份特征,使用人脸识别网络【ArcFace:Additive Angular Margin Loss for Deep FaceRecognition】提取源图像的身份向量VS,在嵌入部分,使用ID-Block将身份信息注入到特征中,ID-Block是Residual Block【Deep Residual Learning for Image Recognition. 】的修改版,正在使用自适应实例规范化(AdaIN)[Arbitrary Style Transfer in Real-Time with Adaptive Instance Normalization]来取代原始的批量规范化[Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift]。
在这里插入图片描述
在这里插入图片描述
是输入特征的通道平均值和标准偏差
在这里插入图片描述
是从使用全连接层的身份向量Vs中生成的两个变量
为了保证足够的身份嵌入,总共使用了9个 ID-Blocks。
在注入身份信息后,将修改后的特征通过解码器来生成最终结果IR,(这里,我理解的特征是目标图像特征,编码器提取的是目标脸特征,将源脸身份特征注入,然后解码),解码器只专注用于从特征中恢复图像,将身份修改任务交给ID注入模块。
在训练过程,提取身份向量VR从生成的结果IR中,使用身份损失最小化VR和vs之间的距离,身份损失的最小化使网络过度拟合,并且只生成具有源身份的正面图像,同时丢失目标的所有属性。为了避免这种情况,利用对抗性训练的思想,使用鉴别器来区别有明显错误的结果,使用patchGAN版本的鉴别器。

保留目标属性

直接在目标特征上进行修改,属性信息(表情、姿势、照明 )很可能受到身份嵌入的硬性,为了防止属性不匹配,使用训练损失来约束它们。如果选择显示约束所有属性,就得为每个属性训练一个网络,所以以弱特征匹配损失隐式约束。
(将目标图和生成图的属性信息进行匹配,从而保留目标属性)
特征匹配的思想起源于pix2pixHD,从ground truth和生成的输出中提取多层特征,原始特征匹配损失为:在这里插入图片描述
Di表示鉴别器D的第i层特征提取器,Ni表示第i层元素数量,M是层次的总数量,IR是生成的输出,IGT是它对应的ground truth图像。
没有ground truth使用目标图像代替,去掉前几层,只使用最后几层来计算弱特征匹配损失
在这里插入图片描述
m是开始计算弱特征匹配损失的层。
原始特征匹配损失来稳定训练,要求生成器在多个级别上生成自然统计数据,浅层的特征主要包含纹理信息,能够在像素级约束结果,但是引入过多的纹理信息会使结果与目标人脸相似,并导致身份修改困难,因此删除了原始特征匹配项中的前几层。通过这样的损失,即使没有在任何特定属性上显示地约束网络,也会隐式地学习如何保留输入目标人脸的属性。

目标是约束属性性能,属性是高语义信息,存在于深层特征中,要求结果图像在深层与目标图像对准
【对于人脸图像,浅层特征主要包含纹理信息、颜色信息和边缘等低级特征,而深层特征则更关注人脸的形状、轮廓和特定属性等高级特征,如眼睛、鼻子、嘴唇等部位的位置、大小、形状等。】
【与传统的 pix2pix 模型相比,Pix2pixHD 在以下几个方面做出了改进:
Multi-scale Generator:Pix2pixHD 中使用的生成器为 Multi-scale Generator。该生成器包含多个分辨率的子生成器,每个子生成器负责生成一个不同分辨率的图像。通过使用多个子生成器,在提取更丰富的特征表示的同时,也可以更好地处理各种尺度的细节信息。
Global Discriminator:Pix2pixHD 中的判别器为 Global Discriminator。该判别器不仅考虑局部区域的特征信息,还考虑整个图像的全局特征,从而更好地评估生成图像和真实图像之间的相似度和差异性。
Feature Matching:Pix2pixHD 中使用特征匹配损失(Feature Matching Loss)来约束生成图像和真实图像之间的特征距离。这可以帮助模型更好地学习如何生成具有高质量、高保真度的图像,并避免生成图像中出现过多的噪声和失真。
Image Pooling:Pix2pixHD 中使用图像池(Image Pooling)来提高模型的鲁棒性和泛化能力。通过在训练过程中保留一部分生成图像,并将其作为下一次训练时判别器的输入,可以避免模型陷入过拟合状态,并提高模型对不同输入的适应能力。】

损失函数

身份损失:限制Vr和Vs,使用余弦相似度来计算距离
在这里插入图片描述
重建损失:如果生成和目标图像具有相同的身份,如果生成的和目标图像是不同的身份,则此项为0
在这里插入图片描述
对抗性损失和梯度惩罚:使用对抗性损失的Hinge version,使用多尺度鉴别器在大姿态下获得更好性能,使用梯度惩罚项防止鉴别器发生梯度爆炸。
【对抗性损失(Adversarial Loss)是一种常用的生成对抗网络(GAN)中的损失函数,其主要作用是使生成器生成的图像更加真实。它通过让一个判别器网络(Discriminator)来评估生成器生成的图像的真实程度,并将生成器的输出与一个已知的真实图像进行比较,从而为生成器提供反馈信号。
对于GAN模型,通常使用交叉熵损失来定义对抗性损失。但是,当使用交叉熵损失时,会出现梯度饱和的问题,影响模型的收敛速度和稳定性。为了解决这个问题,铰链损失(Hinge Loss)被引入到对抗性损失中,以获得更好的稳定性和收敛速度。
铰链损失基于GAN的判别器网络,用于鼓励判别器在真实样本和虚假样本之间保持同等的边界距离。具体来说,对于一个真实样本,判别器应该输出一个正数;对于虚假样本,判别器应该输出一个负数。这样,可以定义一个如下的铰链损失:
L = max(0, 1 - y * D(x))
其中,y 取值为 +1 或 -1,表示真实样本或虚假样本;x 表示输入数据;D(x) 代表判别器的输出结果。
这个损失函数相当于是一个 max 函数,只有当 x 被正确分类时(即 y * D(x) > 1),损失才为0。如果虚假样本被错误分类为真实样本,那么损失就是 y * (D(x)-1),这时损失会增加。使用铰链损失,可以有效地解决GAN中梯度消失和不稳定的问题,从而提高模型的质量和稳定性。】
弱特征匹配损失:由于使用的是多尺度鉴别器,使用所有鉴别器来计算弱特征匹配损失
在这里插入图片描述
总损失:在这里插入图片描述

实验

实验细节

训练集:VGGFace2,删除尺寸小于 250*250的图像,对齐并裁剪到尺寸为224×224的标准位置
Arcface人脸识别模块,Adam优化器
在这里插入图片描述
交替训练了一批具有相同身份的图像对和一批具有不同身份的图像对。训练超过500次迭代。

定性对比

源图像不需要有正面姿势或中性表情,因为只使用它们的身份向量,所有图像都被排除在训练集之外
在这里插入图片描述
DeepFakes的结果受到严重的光照和姿势不匹配的影响。FaceShifter能够产生不错的人脸交换结果,但结果人脸的表情和凝视方向并不完全尊重目标人脸的表情。我们的SimSwap生成了合理的人脸交换结果,同时在属性保存方面实现了更好的性能。
在这里插入图片描述
FSGAN的结果未能再现目标面部的表情(第1行)、凝视方向(第1和第4行),并且在其结果和目标图像之间的照明条件存在明显差异。我们的SimSwap在属性保存方面实现了更好的性能。此外,FSGAN对输入源图像非常敏感。如第2行所示,目标人脸有一个清晰的眼睛区域,但FSGAN会带来源人脸的阴影。

消融实验

ID嵌入
遵循FF++中相同的源和目标对,使用simswap进行人脸交换,使用另一个人脸识别网络【CosFace_pytorch,
Cosface: Large margin cosine loss for deep face recognition】提取生成的帧和原始帧的身份向量,对于每个生成的帧,在原始帧中搜索最近的人脸,检查该人脸是否来自正确的源视频,
准确率IDretrieval作为该方法的身份性能表示。
使用姿态估计器【Fine-grained head pose estimation without keypoints.】来估计生成帧和原始帧的姿态,并计算平均L2距离
在这里插入图片描述
Faceshifer更注重身份信息交换,ID检索越高越好,原始特征匹配更注重属性信息交换,距离越小越好。
Simswap-oFM“one feature map per layer”,具有最低的ID检索,因为它在浅层次上对齐结果(注重浅层次纹理的属性匹配,对身份修改困难)
swap删除浅层次的属性匹配,ID检索就居中了,匹配深层次的属性,属性差也就居中了
Simswap-nFM,消除所有级别的约束与Faceshifter具有非常接近的身份性能(不进行属性匹配,ID检索就好,属性差就大)

IMM直接作用于整个FeaT,身份嵌入会影响属性保留的性能,需要平衡身份和属性
第一种,是设置身份权重鼓励更强的修改技能,第二种,是在特征匹配中选择或多或少的特征,两种方法的结合可以产生广泛的结果。
在这里插入图片描述
第二个,保留原始特征匹配中的前几层,去除最后几层。(难修改身份,属性不咋样匹配)
第三个,使用原始的特征匹配但减少oFM的权重到5。
第四个,使用原始的特征匹配增加id权重到20。
第六个,与simswap相同的弱特征匹配损失,增加id的权重到20
与simswap相同的训练策略训练上述所有网络,测试了所有网络的ID检索。 随机选取1000对不同身份的源和目标,生成人脸交换结果,使用结果和源之间的平均身份损失衡量身份修改技能,然后随机挑选1000张图像,把每张图像作为源和目标进行自我交换,使用平均重建损失衡量在人脸交换过程中目标的属性信息丢失。

在特征匹配中保留最后几层对身份性能的影响较小,强大的身份修改能力会导致属性保存困难
在这里插入图片描述
wFM id+更有可能从源人脸引入头发

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值