换脸即将源人脸的身份转移到目标人脸,同时保持目标人脸的属性(如表情、姿势、光照等)不变。
目前主要有两种类型的人脸交换方法:
在图像层作用于源人脸的面向源的方法。将目标面部的属性(如表情和姿势)转移到源面部,然后将源面部混合到目标图像中。该方法对源图像的姿态和光照很敏感,不能准确地再现目标的表情。
在特征层作用于目标人脸的面向目标的方法。直接修改目标图像的特征,可以很好地适应源面部的变化。DeepFakes能够生成两个特定身份之间的人脸交换结果,但缺乏泛化能力。
1. SimSwap
【2021】SimSwap: An Efficient Framework For High Fidelity Face Swapping
项目路径:https://github.com/neuralchen/SimSwap
贡献
基于基础GAN框架:
引入了ID Injection Module (IIM),将源人脸的身份信息在特征级传输到目标人脸,解决身份限制的问题,将特定人脸互换算法的结构扩展到任意人脸互换。
提出Weak Feature Matching Loss,隐式保持目标属性的一致性。
网络结构
![](https://i-blog.csdnimg.cn/blog_migrate/b4a16a996b2e526528143c55d8eb8fd8.png)
Figure 1. SimSwap框架
比较DeepFakes
DeepFakes的架构包含两个部分,一个公共编码器Enc和两个特定于身份的解码器DecS、DecT。在此过程中,编码器Enc提取目标的特征,其中包含目标面部的身份和属性信息,解码器DecS设法将目标特征转换为具有源身份的图像,源面部的身份信息必须已集成到DecS,因此,DeepFakes中的解码器只能应用于一个特定身份。
网络结构设计
a. ID Injection Module
包含两部分:
1)身份特征提取,用人脸识别网络ArcFace从源人脸提取身份特征向量。
2)嵌入,使用ID-Blocks将身份信息注入特征,ID-Block即残差模块的变体,将批正则化改为AdaIN。
和
是channel-wise的均值和方差,源人脸的均值和方差来自特征向量
。
整个IIM共使用9个ID-Blocks。
由于训练中涉及不同身份的源图像,因此解码器的权重应该与任何特定身份无关,其只专注于从特征中恢复图像,而将身份修改任务留给ID注入模块,因此该架构可以应用于任意身份。
训练过程中若使用Identity Loss容易使网络过拟合,只生成带有源身份的图像,而失去目标的所有属性。为了避免这种现象,利用对抗性训练的思想,使用Discriminator来区分具有明显错误的结果。Adversarial Loss在提高生成结果的质量方面起着重要的作用。
b. Weak Feature Matching Loss
利用训练损失约束来防止目标人脸属性被源人脸影响。然而,如果选择显式地约束所有属性,需要为每个属性训练一个网络。因此,提出Weak Feature Matching Loss隐式地进行约束。
Original Feature Matching Loss:
,
表示判别器的第i层特征提取,
表示第i层元素数量。
Weak Feature Matching Loss:
,相比原始公式,移除最开始的m层。
主要区别:原始训练是需要生成器在多个层次上产生自然统计信息,且浅层的特征将起关键作用,因为浅层的特征主要包含纹理信息,能够在像素级上约束结果。但在人脸交换任务上,损失的目的是约束属性,即主要存在于深层特征中的高度语义信息,引入过多的纹理信息可能导致结果和目标人脸相似,影响身份修改,所以抛弃浅层。
2. FaceShifter
【2020】FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping
*换脸效果不如SimSwap,但AEI-Net结构被SberSwap引用,故放在SberSwap之前介绍。
之前很多方法只用目标面部的姿态和表情引导合成转换人脸,然后使用目标人脸的掩码将人脸混合。这一过程很容易产生伪影(SimSwap也有这个问题),原因有:1)在合成交换人脸时,除了姿态和表情外,对目标图像的了解很少,很难尊重目标的属性,如场景照明或图像分辨率;2)这样的混合将丢弃源面部位于目标面部之外的所有外围区域。
贡献
设计Adaptive Embedding Integration Network(AEI-Net,自适应嵌入集成网络)。
提出一种多层属性编码器,用于提取不同空间分辨率下的目标属性。
提出带Adaptive Attentional Denormalization(AAD,自适应注意反标准化层)的生成器,自适应地学习在哪里集成属性或身份嵌入。
设计Heuristic Error Acknowledging Refinement Network (HEAR-Net,启发式误差识别优化网络),在重构误差的指导下进一步优化结果,可以识别出更多的异常类型,如眼镜、阴影和反射效果以及其他不常见的遮挡。
网络结构
AEI-Net
![](https://i-blog.csdnimg.cn/blog_migrate/422a061fb6d08ed836a1bdd708029b0f.png)
Figure 2. 第一阶段的AEI-Net。AEI-Net由一个身份编码器、一个多层属性编码器和一个AAD生成器组成。AAD生成器使用构建在AAD层上的级联AAD ResBlks集成多个特征层的身份和属性信息。
a. Identity Encoder
使用预先训练的人脸识别模型作为身份特征编码器,定义身份嵌入特征为模型最终FC层之前生成的最后一个特征向量。
b. Multi-level Attributes Encoder
人脸属性相比身份需要更多的空间信息,因此提出将属性embeddings表示为多层次的特征映射。使用UNet结构,并定义属性嵌入特征为U-Net解码器生成的特征映射。
c. Adaptive Attentional Denormalization Generator(自适应注意反标准化生成器)
用于整合身份embeddings和属性embeddings以生成初始的交换人脸。相比简单的特征拼接,提出AAD,即使用denormalizations在多个特征级别进行特性集成(启发于AdaIN,AdaIN主要用于风格迁移,其接收两个信息源:内容输入x和风格输入y,基于实例归一化将权值参数改为风格向量的方差和均值 (channel-wise)),以一种更自适应的方式实现该任务。
具体实现:如Figure 2 (c),表示输入AAD的激活图,经过BN后输入三天并行的分支:
1)属性整合:将三维属性特征经过两个卷积层获得两个调制参数,得到属性激活
(element-wise)。
2)身份整合:将一维属性特征经过两个FC获得两个调制参数,得到身份激活
。
3)AAD层的一个关键设计是自适应调整身份嵌入和属性嵌入的有效区域,使其能够参与人脸不同部位的合成。例如,身份嵌入应该相对更多地集中在合成面部最能区分身份的部分,如眼睛、嘴巴和面部轮廓。因此,在AAD层中采用了一种注意机制,即基于通过卷积和sigmoid操作生成一个注意力掩码
,最终得到
(element-wise)。
AAD生成器由级联 AAD Residual Blocks (如Figure 2 (b)) 组成,AAD ResBlks内部包含两个AAD层。
HEAR-Net
![](https://i-blog.csdnimg.cn/blog_migrate/b312fc4894aabb4fa5617aa5b84affb4.png)
Figure 3. 第二阶段的HEAR-Net
第一阶段的人脸交换可能无法保留目标人脸上出现的遮挡,因此设计利用重构图像与其输入之间的误差来定位面部遮挡,即启发式地完善异常发生的位置。
启发式误差即目标图像重构误差,将启发式误差
和第一阶段结果
输入U-Net结构,最终得到细化后的图像
。
3. SberSwap
【2022】GHOST—A New Face Swap Approach for Imageand Video Domains
论文:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9851423
项目路径:https://github.com/ai-forever/sber-swap
![](https://i-blog.csdnimg.cn/blog_migrate/7a867f31cbe1823f416d17875d4f852c.png)
Figure 4. GHOST Pipeline全流程
Model
基于baseline architecture——AEI-Net:
对SimSwap的reconstruction loss function进行升级
只对数据集中来自同一人脸的n帧进行计算,保证不因转换发生任何改变。
原始损失函数:当时,
,否则
。
改进后损失函数:当时,
,否则
。
新增针对眼部的损失函数
面部交换结果在视觉感知的重要组成部分是注视方向的转移,尤其是在进行图像到视频交换时,在这种情况下,每一帧都应该代表相同的视线方向,以建立逼真的感知。 因此添加一个眼部损失来纠正注视方向,用以比较使用人脸关键点模型获得的和
的眼部热图,
。
Post-processing & Blending
后处理:超分等处理以获得高质量的信息转换。
混合:提出自适应混合以更有效地传输源面的形状(没细讲方法,提出了一些优化,包含在人脸检测过程使用segmentation mask + 高斯模糊mask边缘,解决边缘伪影问题)。