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 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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342