新的换脸模型FaceShifter论文的简单而完整的解释(一)

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 新的换脸模型FaceShifter论文的简单而完整的解释(一)

如今,深度学习可以在图像合成和处理领域产生惊人的效果。我们已经看到了这样一些例子:使想象中的人产生幻觉的网站,展示名人说从未说过的话的视频,以及使人们跳舞的工具。这些例子都足够的真实可以愚弄我们大多数人。其中一个新颖的壮举是FaceShifter[1],这是一个深度学习模型,它可以在优于最新技术的图像中交换人脸。在本文中,我们将了解它是如何工作的。

问题陈述

我们有一个源人脸图像Xₛ和一个目标人脸图像Xₜ,我们希望生成一个新的人脸图像Yₛ,它具有Xₜ(姿势、照明、眼镜等)的属性,但具有Xₛ中的人的身份。图1总结了这个问题陈述。现在,我们继续解释模型。

image.png

图1。换脸的问题陈述。显示的结果来自于FaceShifter模型。改编自[1]

FaceShifter模型

FaceShifter由两个网络组成,称为AEI网和HEAR网。AEI网络生成一个初步的面部交换结果,HEAR网络对该输出进行优化。让我们将两者分开进行分析。

AEI网络

AEI网是"自适应嵌入集成网络"的缩写。这是因为AEI网络由3个子网络组成:

  1. 身份编码器:一种将Xₛ嵌入到描述图像中人脸身份的空间的编码器。
  2. 多级属性编码器:一种将Xₜ嵌入到一个空间中的编码器,该空间描述了交换面时要保留的属性。
  3. AAD生成器:将前两个子网的输出集成起来,生成Xₜ中的面孔与Xₛ的标识交换的生成器。

AEI网络如图2所示。让我们把它的细节具体化。

image.png

图2。AEI网的体系结构。改编自[1]

身份编码器

该子网络将源图像Xₛ投影到低维特征空间。输出只是一个向量,我们称之为zᵢ,如图3所示。这个向量在Xₛ中编码面部的身份,这意味着它应该提取我们人类用来区分不同人面部的特征,比如眼睛的形状、眼睛和嘴的距离、嘴的弯曲度等等。

作者使用预先训练过的编码器。他们使用了一个经过训练的人脸识别网络。这有望满足我们的要求,因为区分人脸的网络必须提取与身份相关的特征。

image.png

图3。身份编码器。改编自[1]

多级属性编码器

该子网络对目标图像X进行编码。它产生多个向量,每个向量以不同的空间分辨率描述Xₜ的属性,一般有8个特征向量,称为zₐ。这里的属性是指目标图像中的面部结构,如面部的姿势、轮廓、面部表情、发型、肤色、背景、场景照明等。如图4所示,它是一个具有U型网络结构的ConvNet,其中,输出向量仅仅是上尺度/解码部分中的每一级的特征映射。请注意,此子网络未预先训练。

image.png

图4。多级属性编码器体系结构。改编自[1]

将Xₜ表示为多个嵌入是必要的,因为在单个空间分辨率下使用一个嵌入将导致生成交换面的所需输出图像的信息丢失(即,我们希望从Xₜ保留太多精细细节,这使得压缩图像不可行)。这一点在作者所做的消融研究中很明显,他们试图仅使用前3个zₐ嵌入而不是8个zₐ嵌入来表示Xₜ,这导致图5中的输出更加模糊。

image.png

图5。使用多个嵌入来表示目标的效果。如果使用前3个zₐ嵌入,则输出为压缩的;如果使用所有8个嵌入,则输出为AEINet。改编自[1]

AAD生成器

AAD生成器是"自适应注意非规范化生成器"的缩写。它综合了前两个子网的输出以提高空间分辨率,从而产生AEI网的最终输出。它通过叠加一个新的块AADResblock来实现,如图6所示。

image.png

图6。左图中的AAD生成器体系结构,右图中的AAD Resblock。改编自[1]

这个块的新部分是AAD层。我们把它分成3部分,如图7所示。从较高的层次上讲,第1部分告诉我们如何编辑输入特征映射hᵢ,使其在属性方面更像Xₜ。具体地说,它输出两个张量,其大小与hᵢₙ的大小相同,一个张量包含与hᵢₙ中的每个单元格相乘的缩放值,另一个张量包含移位值。第1部分图层的输入是属性向量之一。同样,第2部分将告诉我们如何编辑特征地图hᵢ,使其更像Xₛ。

image.png

图7。AAD层的体系结构。改编自[1]。

目录
相关文章
|
6月前
|
机器学习/深度学习 监控 算法
傻傻分不清目标检测、语义分割和实例分割,看这篇就够了
傻傻分不清目标检测、语义分割和实例分割,看这篇就够了
358 0
|
人工智能 JSON 测试技术
语言模型悄悄偷懒?新研究:​上下文太长,模型会略过中间不看
语言模型悄悄偷懒?新研究:​上下文太长,模型会略过中间不看
134 0
|
机器学习/深度学习 自然语言处理 算法
论文赏析【EMNLP19】语言模型效果不好?也许你可以给它添加一点句法信息
论文赏析【EMNLP19】语言模型效果不好?也许你可以给它添加一点句法信息
101 0
|
机器学习/深度学习 人工智能 自然语言处理
图与代码不一致,Transformer论文被发现错误,网友:早该被指出1000次
图与代码不一致,Transformer论文被发现错误,网友:早该被指出1000次
129 0
|
机器学习/深度学习 编解码 监控
姿态估计 | 基于CenterNet究竟还可以做多少事情?AdaptivePose便是经典!(一)
姿态估计 | 基于CenterNet究竟还可以做多少事情?AdaptivePose便是经典!(一)
130 0
|
机器学习/深度学习 固态存储
姿态估计 | 基于CenterNet究竟还可以做多少事情?AdaptivePose便是经典!(二)
姿态估计 | 基于CenterNet究竟还可以做多少事情?AdaptivePose便是经典!(二)
87 0
|
存储 编解码 C++
实验分析非常精彩 | Transformer中的位置嵌入到底改如何看待?(二)
实验分析非常精彩 | Transformer中的位置嵌入到底改如何看待?(二)
575 0
|
自然语言处理 数据建模 计算机视觉
实验分析非常精彩 | Transformer中的位置嵌入到底改如何看待?(一)
实验分析非常精彩 | Transformer中的位置嵌入到底改如何看待?(一)
249 0
|
机器学习/深度学习 测试技术 异构计算
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕Desenet卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
|
机器学习/深度学习 数据挖掘 PyTorch
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。

热门文章

最新文章