FaceShifter - 面向高保真和遮挡感知的换脸算法

FaceShifter

换脸是最近一两年比较火的应用,例如2019年一夜爆红的App ZAO,玩过的小伙伴估计对她的惊艳效果还记忆犹新。

所谓换脸,就是有源图像A和目标图像B,把A中的人脸身份信息迁移到人脸B中,同时保留图B中的人脸姿态、表情、背景等信息。换脸简单,但是要换得清晰、自然、毫无违和感还是相当难的。

Title

FaceShifter提出了一个基于两阶段法的具有高真实感和遮挡感知的换脸算法。第一个阶段包含一个叫做Adaptive Embedding Integration Network(AEI-Net)的GAN网络,用于生成置换的人脸,先通过属性编码器提取目标人脸的多尺度属性,然后利用包含Adaptive Attentional Denormalization (AAD)层的生成器自适应地将人脸身份和属性在合成人脸时集成进来,从而生成高真实感的置换之后的人脸。第二个阶段处理脸部遮挡问题,通过一个新颖的Heuristic Error Acknowledging Refinement Network (HEAR-Net),自监督地改进不自然的人脸区域。

Teaser

Methods

FaceShifter的输入包含两种图片,源图source image 和目标图target image ,源图提供人脸身份信息,目标图提供人脸属性信息,包括姿态、表情、光照和背景等。首先AEI-Net网络生成高置信度的换脸结果,然后HEAR-Net网络进一步改进得到最终的结果。

AEI-Net

AEI-Net (Adaptive Embedding Integration Network)用于生成置换后的人脸图片,其应该包含源图中的人脸身份信息,同时包含目标图片中的属性,如姿态、表情、光照和背景等。整个网络如下图所示,主要包含3个部分:

  • Identity Encoder :提取源图片中的人脸身份信息

  • Multi-level Attributes Encoder :提取目标图片的属性信息

  • Adaptive Attentional Denormalization (AAD) Generator:生成置换的人脸图片

AEI-Net

Identity Encoder

身份编码器是一个预训练的人脸识别模型ArcFace,使用最后一个全连接层之前的特征向量作为人脸的身份信息。

Multi-level Attributes Encoder

多尺度属性编码器类似U-Net结构,用于提取目标图的多尺度属性信息

其中表示U-Net编码器的第层特征图。

AAD生成器

AAD(Adaptive Attentional Denormalization)生成器用于将和中的信息结合起来生成,其主要结构是AAD层,见上图(c)。其输入为,首先做Instance Normalization

然后从分出3个独立分支:

  • attributes embedding integration:假设属性嵌入(attributes embedding)为一个大小为的3D张量,为了集成该属性,作者首先对进行去归一化,然后计算一个属性激活(attributes activation):

    其中和是对卷积得到的调整参数。

  • identity embedding integration:假设身份嵌入(identity embedding)为长度为的向量,同样计算一个身份激活(identity activation):

    其中和是从通过全连接层得到的两个调整参数。

  • adaptively attention mask:为了自适应地调整属性集成和身份集成的有效区域,使得两者能够合成不同的人脸区域,作者在AAD层中加入了attention机制,即从通过卷积和sigmoid激活生成一个attentional mask ,其值介于0到1之间。

最后再通过权重,将和做element-wise combination:

损失函数

AEI-Net的损失函数主要由4个部分组成:

其中

  • 是对抗损失,使得生成的图片尽可能真实

  • 为身份保留损失(identity preservation loss),用于保留源图片中的人脸身份信息:

  • 为属性保留损失(attributes preservation loss),用于保留目标图中的属性信息:

  • 是当源图片和目标图片为同一张图片时的重建损失:

HEAR-Net

虽然AEI-Net能够很好地保留目标图片的属性信息,但是对于目标图中存在的遮挡物很难保留。前人为了解决这个问题一般会训练一个人脸分割网络,但这需要大量的标注,而且这种有监督训练对于训练集中不存在的图片很难处理。

当目标人脸有遮挡物时,这些遮挡物在置换后的人脸上可能会消失,如下图所示。同时作者发现,如果源图和目标图完全相同,遮挡物同样可能消失,此时重建的图片和输入图片之间的误差,作者称为启发式误差(Heuristic Error),蕴含了遮挡信息。基于此,作者提出HEAR-Net(Heuristic Error Acknowledging Refinement Network),来进一步完善置换的人脸图片。

HEAR-Net

HEAR-Net的网络结构如上图所示,首先计算目标图片的启发式误差

然后将和AEI-Net的结果送入一个U-Net结构,输出最终完善的结果:

损失函数

HEAR-Net的损失函数包含3个部分:

其中

  • 是身份保留损失,与第一阶段一致

  • 是变化损失,使得两个阶段生成的图片具有一致性

  • 是重建损失,表示当源图和目标图一致时,HEAR-Net生成的图片必须能够重建输入图片

下面是HEAR-Net改进的效果,对于遮挡情况改善还是很明显的。

HEAR-Net Result

Experiments

实现细节

对于每张图片,首先根据检测的5个人脸关键点,对人脸进行对齐和裁剪,得到大小并带有部分背景的人脸图片。

AEI-Net在CelebA-HQ, FFHQ和VGGFace数据集上训练,HEAR-Net在启发式误差大于10%的数据中进行训练,并通过渲染叠加一些遮挡物做了数据增广。

结果比较

作者比较了其与众多方法的结果,包括FaceSwap,DeepFakes,IPGAN和Nirkin et al.的方法,由于这些方法都是先合成人脸内部区域,然后将其与目标人脸融合,所以置换后的人脸保持了目标人脸的轮廓形状,而且这些方法对于光照、遮挡等无法处理。作者的方法完全没有这些问题,能够生成高置信度的换脸结果。

Comparison

同时作者也做了一些定量的比较,本文提出的FaceShifter方法在人脸置换后身份的保持,人脸姿态和表情的保留方面均好于其他方法。

Quantitative Comparison

下面是其他一些结果

FaceShifter Results

参考

  1. FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping. Lingzhi Li, Jianmin Bao, Hao Yang, Dong Chen, and Fang Wen. ArXiv, 2019.
  2. https://github.com/deepfakes/faceswap

欢迎关注公众号“人脸人体重建”,和您分享值得关注的人脸人体相关技术最新文章。

你可能感兴趣的:(FaceShifter - 面向高保真和遮挡感知的换脸算法)