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

2020-02-18  本文已影响0人  FaceBodyRecon

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 X_s和目标图target image X_t,源图提供人脸身份信息,目标图提供人脸属性信息,包括姿态、表情、光照和背景等。首先AEI-Net网络生成高置信度的换脸结果\hat{Y}_{s,t},然后HEAR-Net网络进一步改进得到最终的结果Y_{s,t}

AEI-Net

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

AEI-Net

Identity Encoder

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

Multi-level Attributes Encoder

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

\boldsymbol{z}_{a t t}\left(X_{t}\right)=\left\{\boldsymbol{z}_{a t t}^{1}\left(X_{t}\right), \boldsymbol{z}_{a t t}^{2}\left(X_{t}\right), \cdots \boldsymbol{z}_{a t t}^{n}\left(X_{t}\right)\right\}

其中\boldsymbol{z}_{a t t}^{k}\left(X_{t}\right)表示U-Net编码器的第k层特征图。

AAD生成器

AAD(Adaptive Attentional Denormalization)生成器用于将\boldsymbol{z}_{id}(X_{t})\boldsymbol{z}_{att}(X_{t})中的信息结合起来生成\hat{Y}_{s,t},其主要结构是AAD层,见上图(c)。其输入为\boldsymbol{h}_{in}^{k},首先做Instance Normalization

\bar{\boldsymbol{h}}^{k}=\frac{\boldsymbol{h}_{in}^{k} - \boldsymbol{\mu}^{k}}{\boldsymbol{\sigma}^{k}}

然后从\bar{\boldsymbol{h} }^{k}分出3个独立分支:

最后再通过权重\boldsymbol{M}^{k},将\boldsymbol{A}^{k}\boldsymbol{I}^{k}做element-wise combination:

\boldsymbol{h}_{o u t}^{k}=\left(1-\boldsymbol{M}^{k}\right) \otimes \boldsymbol{A}^{k}+\boldsymbol{M}^{k} \otimes \boldsymbol{I}^{k}

损失函数

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

\mathcal{L}_{\mathrm{AEI-Net}}=\mathcal{L}_{a d v}+\lambda_{a t t} \mathcal{L}_{a t t}+\lambda_{i d} \mathcal{L}_{i d}+\lambda_{r e c} \mathcal{L}_{r e c}

其中

HEAR-Net

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

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

HEAR-Net

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

\Delta Y_{t}=X_{t}-\operatorname{AEI-Net}\left(X_{t}, X_{t}\right)

然后将\Delta Y_{t}和AEI-Net的结果\hat{Y}_{s,t}送入一个U-Net结构,输出最终完善的结果Y_{s,t}

Y_{s,t} = \operatorname{HEAR-Net}(\hat{Y}_{s,t}, \Delta Y_{t})

损失函数

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

\mathcal{L}_{\mathrm{HEAR-Net}} = \mathcal{L}_{id}^{\prime} + \mathcal{L}_{chg}^{\prime} + \mathcal{L}_{rec}^{\prime}

其中

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

HEAR-Net Result

Experiments

实现细节

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读