美文网首页
FaceShifter - 面向高保真和遮挡感知的换脸算法

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

作者: FaceBodyRecon | 来源:发表于2020-02-18 22:59 被阅读0次

    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个部分:

    • Identity Encoder \boldsymbol{z}_{id}(X_s):提取源图片X_s中的人脸身份信息

    • Multi-level Attributes Encoder \boldsymbol{z}_{att}(X_t):提取目标图片X_t的属性信息

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

    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个独立分支:

    • attributes embedding integration:假设属性嵌入(attributes embedding)为一个大小为C_{att}^{k} \times H^k \times W^k的3D张量\boldsymbol{z}_{att}^{k}(X_{t}),为了集成该属性,作者首先对\bar{\boldsymbol{h} }^{k}进行去归一化,然后计算一个属性激活(attributes activation)\boldsymbol{A}^{k}

      \boldsymbol{A}^{k}=\gamma_{att}^{k} \otimes \bar{\boldsymbol{h}}^{k}+\beta_{att}^{k}

      其中\gamma_{att}^{k}\beta_{att}^{k}是对\boldsymbol{z}_{att}^{k}卷积得到的调整参数。

    • identity embedding integration:假设身份嵌入(identity embedding)为长度为C_{id}的向量\boldsymbol{z}_{id}^{k},同样计算一个身份激活(identity activation)\boldsymbol{I}^{k}

      \boldsymbol{I}^{k}=\gamma_{id}^{k} \otimes \bar{\boldsymbol{h}}^{k}+\beta_{id}^{k}

      其中\gamma_{id}^{k}\beta_{id}^{k}是从\boldsymbol{z}_{id}通过全连接层得到的两个调整参数。

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

    最后再通过权重\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}

    其中

    • \mathcal{L}_{a d v}是对抗损失,使得生成的图片\hat{Y}_{s,t}尽可能真实

    • \mathcal{L}_{i d}为身份保留损失(identity preservation loss),用于保留源图片中的人脸身份信息:

      \mathcal{L}_{i d}=1-\cos \left(\boldsymbol{z}_{i d}\left(\hat{Y}_{s, t}\right), \boldsymbol{z}_{i d}\left(X_{s}\right)\right)

    • \mathcal{L}_{a t t}为属性保留损失(attributes preservation loss),用于保留目标图中的属性信息:

      \mathcal{L}_{a t t}=\frac{1}{2} \sum_{k=1}^{n}\left\|z_{a t t}^{k}\left(\hat{Y}_{s, t}\right)-\boldsymbol{z}_{a t t}^{k}\left(X_{t}\right)\right\|_{2}^{2}

    • \mathcal{L}_{r e c}是当源图片和目标图片为同一张图片时的重建损失:

      \mathcal{L}_{r e c}=\left\{\begin{array}{ll}{\frac{1}{2}\left\|\hat{Y}_{s, t}-X_{t}\right\|_{2}^{2}} & {\text { if } X_{t}=X_{s}} \\ {0} & {\text {otherwise}}\end{array}\right.

    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}

    其中

    • \mathcal{L}_{id}^{\prime}是身份保留损失,与第一阶段一致

      \mathcal{L}_{i d}^{\prime}=1-\cos \left(\boldsymbol{z}_{i d}\left(Y_{s, t}\right), \boldsymbol{z}_{i d}\left(X_{s}\right)\right)

    • \mathcal{L}_{chg}^{\prime}是变化损失,使得两个阶段生成的图片具有一致性

      \mathcal{L}_{chg}^{\prime}=\left|\hat{Y}_{s,t}-Y_{s,t}\right|

    • \mathcal{L}_{rec}^{\prime}是重建损失,表示当源图和目标图一致时,HEAR-Net生成的图片必须能够重建输入图片

      {\mathcal{L}_{rec}^{\prime}=\left\{\begin{array}{cl}{\frac{1}{2}\left\|Y_{s, t}-X_{t}\right\|_{2}^{2}} & {\text { if } X_{t}=X_{s}} \\ {0} & {\text { otherwise }}\end{array}\right.}

    下面是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

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

    相关文章

      网友评论

          本文标题:FaceShifter - 面向高保真和遮挡感知的换脸算法

          本文链接:https://www.haomeiwen.com/subject/uzznfhtx.html