您现在的位置是:首页 >其他 >【CVPR_2023论文精读】E4S: Fine-grained Face Swapping via Regional GAN Inversion网站首页其他
【CVPR_2023论文精读】E4S: Fine-grained Face Swapping via Regional GAN Inversion
【CVPR_2023论文精读】E4S: Fine-grained Face Swapping via Regional GAN Inversion
论文地址https://arxiv.org/abs/2211.14068(通过区域GAN反转实现细粒度的人脸交换)
GitHub地址https://github.com/e4s2022/e4s
项目地址:https://e4s2022.github.io/
0、前言
人脸交换是将源人脸的身份信息(如人脸成分的形状、纹理等)传递给给定的目标人脸,同时保留与身份无关的目标人脸属性信息(如表情、头部姿势、背景等)。
目前主要挑战是:
- 源脸身份的保存(
肤色
、形状、纹理)具体是面部皮肤、眉毛、眼睛、鼻子、嘴唇和嘴巴- 如何正确处理面部遮挡(
头发与目标脸相同
)具体是头发、眼镜、耳朵、耳环、颈部和背景等非内部人脸区域
-
身份保存
- 此文身份保存用RGI方法来明确地解纠缠人脸成分的形状和纹理,而不是使用人脸识别模型或3DMMs。 属性保存
- 此文属性保存是用纹理编码和mask的一个混合来完成。
缩写 | 全拼 |
---|---|
RGI | Regional GAN Inversion |
3DMM | 3D morphable face model |
E4S | editing for swapping |
这篇文章的主要贡献是从细粒度人脸编辑的角度重新思考了人脸交换,即对人脸各个区域细粒度的交换以实现换脸。
总体实现流程是
- 首先是对源脸进行重现(Reenactment)得到 I d I_d Id,即将源脸表现出与目标脸相似的姿势和表情。
- 其次使用一个预训练的人脸解析器来获取(重现和目标)脸部的masks,得到 M d M_d Md和 M t M_t Mt。
- 将( I d I_d Id, M d M_d Md)和( I t I_t It, M t M_t Mt)输入一个多尺度编码器 F ϕ F_phi Fϕ(多层卷积网络)中可以得到脸部各个区域的纹理编码(对应区域mask与各层Feature map进行Hadamard积之后进行平均池化操作,然后将各层结果连接再输入到MLP得到最终的style codes)。(这里用源脸身份区域对应的编码交换目标脸对应的编码)
- 将重现脸的mask和目标脸mask进行对应区域的拼接和缝合得到最终的mask,拼合的mask缺失的像素用源脸的面部皮肤进行填充。
- 将最终得到的纹理编码和mask通过mask-guided injection module输入到预训练的StyleGAN的生成器中,生成交换的人脸。(这一步就是提出的RGI)
- 最终将得到的交换的人脸与目标脸混合得到最终结果。
与现有的基于StyleGAN的人脸交换方法相比[15,41,48],我们提出的方法可以获得高保真的结果,在保持与目标相似的姿态和表情的同时,可以更好地保持来自源的身份。注意皮肤颜色的保持和适当的遮挡处理是我们比别人的优势。所有的面部图像都是1024×1024。
Abstract
简介
:我们提出了一种高保真人脸交换的新范式,忠实地保留了所需的微妙几何和纹理细节。方法具体介绍
:我们从细粒度的人脸编辑的角度重新思考了人脸交换(即editing for swapping,E4S),并提出了一个基于形状和纹理的清晰解纠缠的人脸交换框架。
根据E4S原则,我们的框架支持全局和局部的面部特征交换,以及控制用户指定的部分交换量。
此外,E4S范式天生能够通过面部masks处理面部遮挡occlusions。用的模型架构介绍
我们的系统的核心是一种新的Regional GAN Inversion(RGI)方法,它允许形状和纹理的显式解纠缠。
它还允许在StyleGAN的潜在空间中进行换脸。
具体来说,我们设计了一个多尺度的mask-guided的编码器,将每个人脸组件的纹理投射到regional style codes中。
我们还设计了一个mask-guided的注入模块来使用样式代码来操作feature maps。
在解纠缠的基础上,人脸交换被重新定义为一个简化的style and mask交换问题。实验
:大量的实验和与当前最先进的方法的比较表明,我们的方法在保持纹理和形状细节方面的优势,以及对高分辨率图像的工作。
1. Introduction
人脸交换是将源人脸的身份信息(如人脸成分的形状、纹理等)传递给给定的目标人脸,同时保留与身份无关的目标人脸属性信息(如表情、头部姿势、背景等)。
它在娱乐和电影制作行业具有巨大的应用潜力,因此在计算机视觉和图形学领域引起了相当大的关注。
【介绍什么是Face swapping】
人脸交换的首要挑战是身份保存,即如何忠实地保存源图像的独特面部特征。
现有的大多数方法[9,24,38]依赖于预训练的2D人脸识别网络[12]或3D变形人脸模型(3DMM)[7,13]来提取与身份相关的全局特征,然后将这些特征注入到人脸生成过程中。
然而,这些人脸模型的设计主要是为了分类而不是生成,因此可能无法捕捉到一些与人脸身份相关的信息和重要的视觉细节。
此外,基于单一输入图像建立的三维人脸模型难以满足鲁棒性和准确性的人脸形状恢复要求。
因此,以往方法的结果往往表现出“中间效应” :即,交换后的人脸既像源人脸,也像目标人脸,看起来像第三人,而不是忠实地保留源身份。
一个相关的问题是肤色,我们认为肤色有时是源身份的一个重要方面,应该保留,而以前的方法总是保持目标人脸的肤色,导致在交换具有不同肤色的人脸时产生不现实的结果。
【提出目前身份保存的方法,即大多通过预训练的2D人脸识别网络或3D变形人脸模型(3DMM),其问题在于预训练的模型用于分类而不是生成,故可能无法捕捉到一些与人脸身份相关的信息和重要的视觉细节。然后提出基于单一输入图像建立的三维人脸模型难以满足鲁棒性和准确性的人脸形状恢复要求。最后提出肤色也是源脸身份相关的。】
另一个挑战是如何正确处理面部遮挡。
例如,在实际应用中,输入图像中一些面部区域被头发遮挡是一种常见的情况。
一个理想的交换结果应该保持头发与目标脸相同,这意味着源图像被遮挡的部分应该恢复。
为了解决遮挡问题,FSGAN[25]设计了一个inpainting子网络来估计源脸缺失的像素,但它们的inpainted的脸是模糊的。
在FaceShifter[24]中精心设计了一个细化网络来保持目标中的遮挡区域;
然而,细化网络可能会带回一些目标的身份信息。
【提出了当前处理面部遮挡问题的方法,如FSGAN用的是inpainting sub-network来估计源脸缺失的像素,但是inpainted的脸是模糊的,而FaceShifter的refinement network 可能会带回一些目标脸的身份信息】
为了更有效地解决上述挑战,我们从细粒度的人脸编辑的新角度重新考虑了人脸交换,即“editing for swapping”(E4S)。
考虑到个体面部成分的形状和纹理都与面部身份相关,为了更好地保存身份,我们考虑对形状和纹理进行明确的解纠缠。
受细粒度人脸编辑[23]的启发,我们没有使用人脸识别模型或3DMMs来提取全局身份特征,而是利用component masks来提取局部特征。([23是Maskgan: Towards diverse and interactive facial image manipulation.])
通过这种解纠缠,人脸交换可以转化为两个给定人脸之间局部形状和纹理的替换。
然后将局部重构locally-recomposed的形状和纹理输入mask-guided的生成器,合成最终结果。
我们的E4S框架的另一个优势是,遮挡挑战可以很自然地由masks处理,因为当前的人脸解析网络[44]可以提供每个人脸区域的像素级标签。([44]是Bisenet v2: Bilateral network with guided aggregation for real-time semantic segmentation.)
生成器可以根据这些标签自适应地用交换后的纹理特征填充缺失的像素。
它不需要像以前的方法那样设计一个专用模块[24,25]。
【提出本文方法的具体细节,利用component masks来提取局部特征,然后将局部重构的形状和纹理输入mask-guided的生成器,合成最终结果。通过这种方法可以自然的解决遮挡问题。】
我们的E4S的关键是分解面部成分的形状和纹理。
最近,由于StyleGAN[18]在高质量图像生成方面的出色表现,它已经被应用到各种图像合成任务中,这启发了我们利用一个预先训练的StyleGAN来进行解纠缠。
这是一个雄心勃勃的目标,因为目前的GAN反演方法[30,33,36]只关注StyleGAN全局样式空间中的全局属性编辑(年龄、性别、表达等),而没有提供局部形状和纹理编辑机制。
【E4S的关键是分解面部成分的形状和纹理,用的是预训练的StyleGAN】
为了解决这个问题,我们提出了一种新的区域GAN反演(RGI)方法,该方法位于一个新的区域
W
+
mathcal{W}+
W+空间,称为
W
r
+
mathcal{W}^{r+}
Wr+。
具体来说,我们设计了一个mask-guided的多尺度编码器,将输入面投影到StyleGAN的风格空间中。
每个面部组件都有一组用于StyleGAN生成器的不同层的样式代码。
我们还设计了一个mask-guided的注入模块,它使用样式代码来根据给定的masks操作生成器中的特征映射。
这样,每个人脸分量的形状和纹理都得到了完全的解纠缠,其中纹理用style codes表示,形状用mask表示
。
此外,这种新的倒转潜在空间支持在形状和纹理上对每个单独的人脸组件进行编辑,可以实现人脸美化、发型转换、控制换脸的换脸程度等多种应用。
【解纠缠就是每个面部组件都对应StyleGAN生成器的一组不同层的样式代码,其中纹理用style codes表示,形状用mask表示】
总之,我们的贡献是:
- 我们从细粒度编辑的新视角来处理人脸交换,即editing for swapping,并提出了一个具有身份保存和遮挡处理的高保真人脸交换的新框架。
- 我们提出了一种基于StyleGAN的区域GAN反演(RGI)方法,该方法驻留在一个新颖的 W r + mathcal{W}^{r+} Wr+空间中,用于明确地解纠缠形状和纹理。它将换脸简化为交换相应的样式代码和masks。
- 人脸交换、人脸编辑和其他扩展任务的大量实验证明了我们的E4S框架和RGI的有效性。
2. Related Work
2.1 GAN Inversion
GAN反演的目的是将图像映射到相应的GAN潜码,从而尽可能忠实地重建输入。
通过这种方式,可以将inverted-then-edited的代码发送给生成器,以完成预期的编辑。
许多StyleGAN反演方法已经被提出用于面部操作。一般可分为三大类:
(1)基于学习的[3,30,34,36,42,43];
(2)基于优化的[1,2,16,32,46];
(3)混合方法[45]。
基于学习的方法训练编码器将图像映射到潜在空间。而基于优化的方法直接对潜码进行优化,以最小化给定图像的重构误差。基于优化的方法通常具有较好的反演性能,而基于学习的方法耗时较短。混合方法在上述两种方法之间进行权衡,并使用反向代码作为进行进一步优化的起点。
虽然使用现有的GAN反演方法可以实现特定的人脸编辑,但它们的工作方式是全局性的(如变老、姿势改变、男性变女性),不能精确控制局部面部成分。
我们的区域GAN反演通过基于预训练的StyleGAN的新的
W
r
+
mathcal{W}^{r+}
Wr+潜在空间填补了高保真的局部编辑的空白。
【介绍GAN Inversion,目前的方法大都是全局性的人脸编辑,而本文提出的方法可以进行细致的局部编辑】
2.2 Face Swapping
现有的换脸方法大致可以分为两类[9],即面向源的和面向目标的。
- 面向源的方法[5,6,25-27]从源开始,并设法将目标的属性传输到源。
这个阵营的早期方法可以追溯到[6],其中3D形状和相关场景参数被估计来对齐姿势和照明。
然后,[27]认为无需进行三维形状估计,提出了一种人脸分割网络来实现人脸交换。([27]是On face segmentation, face swapping, and face perception.)
最近,FSGAN中引入了两级管道[25,26],其中再现网络和inpainting网络分别解决了姿势对齐和遮挡问题。 - 面向目标的方法[4,9,19,22,24,38,40]从目标开始,并倾向于从源传输身份。
一般来说,这些技术通过使用预训练的人脸识别模型或3DMMs来保存源的身份。
由于识别模型经过训练进行分类,3DMMs不准确、不鲁棒,无法完全捕捉生成所需的与身份相关的细节,从而产生“中间效应”。
【介绍换脸,主要点出了预训练的人脸识别模型或3DMMs来保存源脸的身份存在的问题】
对于基于StyleGAN的人脸交换,MegaFS
[48]应用了预先训练的StyleGAN的先验知识,将图像分辨率提高到10242。
StyleFusion
[15]操作了S空间内的latent fusion[10,11],使局部语义区域的生成可控。
然而,每个面部区域的形状和纹理仍然纠缠在S空间中。
除了全局潜在融合外,[40]
还设计了区域感知投影仪,将源身份自适应地传递到目标人脸。([40]是Region-aware face swapping)
HiRes
[41]采用额外的编码器-解码器,以多尺度的方式聚合目标特性。
但是,这两种方法不支持细粒度和选择性交换。
【提出目前基于StyleGAN的人脸交换方法要么是每个面部区域的形状和纹理纠缠在一起,要么不支持细粒度和选择性交换】
我们的E4S属于source-oriented阵营。(用mask保存目标的非人脸区域,并结合reenactment network
G
r
G_r
Gr得到
I
d
I_d
Id保存内部的人脸区域)
受mask-guided的面部编辑的启发[8,23,28,47],我们从面部编辑的角度重新思考了面部交换,将其视为对所有面部成分的形状和纹理的编辑,即细粒度的面部交换。
为了更好地保存身份,我们建议基于提出的RGI方法来明确地解纠缠人脸成分的形状和纹理,而不是使用人脸识别模型或3DMMs。
3. Methodology
3.1. Editing-for-Swapping (E4S) Framework
我们的E4S框架内部主要由两个阶段组成:(a)reenactment,(b)swapping and generation,整个流程如图2所示。
我们提出的E4S框架概述。
(a)对于源图像 I s I_s Is和目标 I t I_t It,利用reenactment network
G r G_r Gr驱动 I s I_s Is对 I t I_t It表现出相似的姿态和表情,得到 I d I_d Id。估计了 I t I_t It和 I d I_d Id的分割掩码。
(b)将驱动对和目标对 ( I d , M d ) (I_d,M_d) (Id,Md)和 ( I t , M t ) (I_t,M_t) (It,Mt)输入mask-guided encoder
F ϕ F_phi Fϕ,分别提取每个区域的样式代码来描述纹理,生成纹理代码 S d S_d Sd和 S t S_t St,然后交换masks和对应的texture codes
,并通过mask-guided injection module
将它们发送到预训练的StyleGAN生成器
G θ G_θ Gθ,以合成交换后的人脸 I ~ ilde{I} I~。
-
主要就是四个模块
-
reenactment network
G r G_r Gr是一个预训练的人脸重现模型FaceVid2Vid -
mask-guided encoder
F ϕ F_phi Fϕ为多层卷积网络 -
mask-guided injection module
-
预训练的StyleGAN生成器
G θ G_θ Gθ
3.1.1 Reenactment.
首先对源图像和目标图像的人脸区域进行裁剪,得到裁剪后的人脸
I
s
I_s
Is和
I
t
I_t
It。然后,我们使用dlib[20]工具箱裁剪面部区域,并检测面部地标landmarks。接下来,我们按照原始的StyleGAN[17]对齐裁剪的脸,并将其大小调整为1024×1024的分辨率。
【图像预处理】
为了驱动
I
s
I_s
Is达到与
I
t
I_t
It相似的姿势和表情,我们采用了一个预训练的人脸重现模型FaceVid2Vid[37],从而得到一个驱动的人脸
I
d
I_d
Id。
这样的人脸重现处理可以描述为:
I
d
=
G
r
(
I
s
,
I
t
)
I_d = G_r(I_s, I_t)
Id=Gr(Is,It),其中
G
r
G_r
Gr表示FaceVid2Vid模型。
进一步,我们估计 segmentation masks 目标人脸
I
t
I_t
It的
M
t
M_t
Mt和被驱动人脸
I
d
I_d
Id的
M
d
M_d
Md,从而得到目标和被驱动对
(
I
t
,
M
t
)
(I_t,M_t)
(It,Mt)和
(
I
d
,
M
d
)
(I_d,M_d)
(Id,Md)。
对于人脸解析,我们使用一个现成的人脸解析器[49],其中每个segmentation mask属于19个语义类别中的一个。
为了简单起见,我们将对称面部成分的类别聚合起来,得出12个类别,即背景、眉毛、眼睛、鼻子、嘴巴、嘴唇、面部皮肤、脖子、头发、耳朵、眼镜和耳环。([49]是face-parsing.pytorch. https://github.com/zllrunning/face-parsing.PyTorch)
【说明
I
d
I_d
Id的获得方法,与利用的face parser!!!】
3.1.2 Swapping and Generation.
在这个阶段,我们将在E4S中详细说明换脸的过程。
我们首先将驱动对
(
I
d
,
M
d
)
(I_d,M_d)
(Id,Md)和目标对
(
I
t
,
M
t
)
(I_t,M_t)
(It,Mt)分别输入面具引导的多尺度编码器
F
ϕ
F_phi
Fϕ中,其提取出style codes来表示每个面部区域的纹理。这一步可以总结为:
其中
S
t
S_t
St和
S
d
S_d
Sd分别为目标面和被驱动面提取的纹理编码。
编码器
F
ϕ
F_phi
Fϕ的详细模块将在第3.2节中介绍。
然后将
S
t
S_t
St的几个面部成分的纹理编码与
S
d
S_d
Sd的纹理编码进行交换,得到重构后的纹理编码
S
s
w
a
p
S_{swap}
Sswap。
在这里,交换的部分是:眉毛、眼睛、鼻子、嘴、嘴唇、脸皮肤、脖子和耳朵。
请注意,这里的皮肤是经过仔细考虑的,因为它与身份相关,而它被现有的大多数作品所忽略。
【texture codes交换的部分
S
s
w
a
p
S_{swap}
Sswap得到的是用
S
d
S_d
Sd的眉毛、眼睛、鼻子、嘴、嘴唇、脸皮肤、脖子和耳朵的纹理替换
S
t
S_t
St的纹理,其余保留】
除了纹理交换外,形状交换也需要实现人脸交换的目的。
由于形状是由面部masks表示的,我们从一个空的蒙版
M
s
w
a
p
M_{swap}
Mswap作为画布canvas开始,然后在以下步骤中完成mask重组。
首先,我们保持目标蒙版
M
t
Mt
Mt的颈部和背景布局,并将它们的蒙版缝合到
M
s
w
a
p
M_{swap}
Mswap上。
然后,我们缝合驱动面具
M
d
M_d
Md的内部面部区域,包括面部皮肤、眉毛、眼睛、鼻子、嘴唇和嘴巴。
最后,我们将目标面具
M
t
M_t
Mt的头发、眼镜、耳朵和耳环缝合到
M
s
w
a
p
M_{swap}
Mswap上。
请注意,驱动掩模
M
d
M_d
Md和目标掩模
M
t
M_t
Mt可能不能完美地对齐,导致交换后的掩模中出现一些缺失像素,这总是由遮挡引起的。
我们观察到,这些缺失的区域通常在面部皮肤和毛发之间或面部皮肤和颈部之间。
作为解决方案,我们用面部皮肤填充这些区域
,这是我们方法的独特优势。
与现有方法FSGAN[25]或FaceShifter[24]相比,我们的方法不需要训练额外的子网络来处理遮挡。
详情请参阅我们的Supp补充。
【得到的mask
M
s
w
a
p
M_{swap}
Mswap是目标脸的属性部分和驱动脸的身份部分】
在获得重构后的掩模
M
s
w
a
p
M_{swap}
Mswap和纹理代码
S
s
w
a
p
S_{swap}
Sswap后,我们将它们通过掩模引导风格注入模块送入StyleGAN生成器
G
θ
G_θ
Gθ,合成交换面,其表达式为
I
~
=
G
θ
(
M
s
w
a
p
,
S
s
w
a
p
)
ilde{I} = G_θ(M_{swap}, S_{swap})
I~=Gθ(Mswap,Sswap)。
这里,
G
θ
G_θ
Gθ将在第3.2节详细介绍。
最后,将交换后的人脸
I
~
ilde{I}
I~与目标图像
T
T
T混合在一起生成最终的交换图像。
【最终交换后的人脸
I
~
ilde{I}
I~还需与目标图像
T
T
T混合在一起以生成最终的交换图像】
3.2. Disentanglement of Shape and Texture
我们的E4S框架的核心是如何精确地编码每个区域的纹理,这些纹理与它们的形状是不纠缠的。
之前的蒙版引导人脸编辑方法[23,28,47]尝试使用蒙版作为生成器的输入,并注入纹理样式来引导生成,但在编辑过程中仍难以保存身份和面部细节(见图8)。
此外,它们生成的人脸分辨率有限,其中[23]的分辨率为5122,其余的分辨率为2562。
【[23]是Maskgan: Towards diverse and interactive facial image manipulation.
[28]是Semantic image synthesis with spatially-adaptive normalization.叫(SPADE)
[47]是Sean: Image synthesis with semantic region-adaptive normalization.】
为了追求更好的形状和纹理分解以及高分辨率和高保真生成,我们求助于强大的生成模型StyleGAN,它可以生成10242分辨率的图像。
我们不是从头开始训练StyleGAN,而是探索开发GAN反演方法的可能性。
具体来说,我们使用了一个预训练的StyleGAN来解纠缠,避免了大量的计算资源和训练的不稳定性。
虽然有很多GAN反演技术[30,34,43]被提出用于
W
mathcal{W}
W或
W
+
mathcal{W}^+
W+空间的人脸编辑,但它们只关注全局的人脸属性编辑,如年龄、姿势和表情。
因此,它们不能用于局部编辑的形状和纹理的解缠。
针对这一不足,我们提出了一种新的区域GAN反演(RGI)方法,该方法将人脸面具融入到样式嵌入和生成过程中,从而填补了基于局部编辑的GAN反演的空白。我们的RGI概述如图3所示。
【Regional GAN Inversion (RGI)可以用于局部的形状和纹理的编辑】
我们提出的RGI概述。将输入人脸 I I I及其分割图 M M M输入到多尺度编码器 F ϕ F_phi Fϕ中提取每个区域的纹理向量。
然后,将多尺度纹理向量串接并通过一些MLPs得到驻留在StyleGAN的一个新的 W r + mathcal{W}^{r+} Wr+潜空间中的样式编码。
我们的蒙版引导StyleGAN生成器使用区域样式代码和蒙版M来生成重建的人脸 I ~ ilde{I} I~。
3.2.1 Mask-guided Style Extraction.
给定图像I及其对应的分割掩模M,我们首先将图像I输入多尺度编码器
F
ϕ
F_phi
Fϕ生成特征图
[
F
1
,
F
2
,
…
,
F
N
]
[F_1, F_2,…, F_N]
[F1,F2,…,FN],其中N为尺度数,
F
ϕ
F_phi
Fϕ为多层卷积网络。
然后,我们可以根据特征图
[
F
1
,
F
2
,
…
,
F
N
]
[F_1, F_2,…, F_N]
[F1,F2,…,FN]和面具M获得每个个体面部区域的多尺度特征。
具体来说,对于每个feature map
F
i
F_i
Fi,我们将mask M缩小到相同的空间大小,并对
F
i
F_i
Fi进行平均池化操作,将每个面部区域的features聚合为:
式中,C为segmentation categories,⊙为Hadamard积,
⌊
M
⌋
i
⌊M⌋_i
⌊M⌋i为与
F
i
F_i
Fi高度和宽度相同的缩小版面膜。
进一步将区域j的多尺度特征向量
{
v
i
j
}
i
=
1
N
{v_{ij}}^N_{i=1}
{vij}i=1N串接并馈送到MLP中,得到样式码:
式中,
s
j
s_j
sj为第j个面部区域的风格编码。
然后,样式代码和mask M被输入StyleGAN生成器,以合成交换后的人脸。
在这里,我们将
s
∈
R
C
×
18
×
512
s∈mathbb{R}^{C×18×512}
s∈RC×18×512表示为
W
r
+
W^{r+}
Wr+空间。
【这里具体说明了每个面部区域style codes的获得方式】
3.2.2 Mask-guided Style Injection.
如图4(a)所示,原始的StyleGAN生成器从一个空间大小为4×4的常量feature map开始,由一系列的style blocks组成。
每个样式块包含调制、解调和3×3卷积层。
此外,还引入了噪声层
B
oxed{B}
B来增加多样性。
每个块的可学习核权值和偏差分别记为W和b。
在卷积层之前,W将根据其对应的样式代码与
R
512
mathbb{R}^{512}
R512的形状缩放。
每两个样式块之间增加一个2倍的上采样层,以提高特征图的分辨率。
【介绍原始的StyleGAN】
与原始StyleGAN中的样式代码不同,它全局控制输出图像的外观,我们建议提取区域样式代码,精确地控制对应的人脸组件及其掩码的外观,如上所述。
为此,我们将原始StyleGAN的样式块扩展为一个以给定蒙版为条件的蒙版引导的样式块。
具体来说,我们总结了每个区域掩码引导的中间特征映射,可以形成:
其中
F
l
−
1
F_{l−1}
Fl−1和
F
l
F_l
Fl分别表示第
l
l
l层的输入和输出特征映射。
W
j
l
′
W'_{jl}
Wjl′表示第
l
l
l层第
j
j
j个分量的缩放核权重,∗表示卷积操作。
与式(2)相似,
⌊
M
⌋
l
⌊M⌋_l
⌊M⌋l为第
l
l
l层对应的缩小版蒙版。
我们遵循与原始StyleGAN相同的调制和解调,并在区域上扩展了风格调制。
式(5)中,
W
l
W_l
Wl为第
l
l
l层的原始核权值,
s
j
l
s_{jl}
sjl为第
l
l
l层第
j
j
j个组件的样式代码。
图4(b)说明了我们提出的掩模引导式注入的原理图操作。
【介绍了mask-guided style injection的过程】
注意,蒙版只被注入到StyleGAN的前K层。
也就是说,我们在最后(18−K)层中不使用蒙版引导样式块。
出现这种现象的原因有两个:
(1)我们在K = 11、13、15、18时进行了实验,实验发现当K大于13时,重建图像的视觉差异很小;
(2)由于最后(18−K)层的分辨率较大(即5122−10242),在没有蒙版引导样式块的情况下,可以减少训练过载。
考虑到这两个因素,我们在所有的实验中设置K = 13为默认值。
【实验中设置前K = 13层为mask-guided style block】
3.3. Training Objective
在训练过程中,我们只利用重构作为代理任务,不需要像现有的大多数人脸交换方法那样交换成对的人脸,这使得我们的方法更高效,更容易训练。
训练完成后,可以使用纹理编码器
F
ϕ
F_phi
Fϕ生成任何输入人脸的每个区域纹理编码。
如3.1节所述,可以很容易地在
W
r
+
W^{r+}
Wr+潜在空间中实现换脸。
我们采用了GAN反演文献中常用的损失函数,在我们的增刊中有详细的描述。
【得看Supplement点击https://e4s2022.github.io/files/supp_CR.pdf】
4. Experimental setup
4.1 Datasets.
CelebAMask-HQ[23]包含30K高质量的人脸图像,分割为28k和2K,分别用于训练和测试。
该数据集还提供面部分割蒙版,包括19个语义类别。
FFHQ[17]包含70K高质量图像,多样性较大,但人脸分割面具没有正式给出。
我们使用一个预训练的人脸解析器[49]来提取人脸分割面具。
4.2 Implementation Details.
我们使用PyTorch[29]来实现我们的框架,并在8个NVIDIA A100 GPUs.上训练我们的模型。
在训练过程中,我们将每个GPU的批处理大小设置为2,并使用Adam[21]优化器初始化学习速率为10−4 (β1 = 0.9, β2 = 0.999)。
对于CelebAMask-HQ和FFHQ数据集,我们分别为200K和300K迭代训练模型。
初始学习速率分别在100K和150K迭代时衰减0.1倍。
此外,我们以0.5的比例随机翻转图像。
5. Ablation study
在本节中,我们进行消融研究,以验证我们提出的E4S框架和RGI方法的设计选择。
图5为定性比较,表1为定量比较,其中考虑了重构性能。
5.1 Re-enactment.
为了使源显示出与目标相似的姿态和表情,我们在形状和纹理交换过程之前采用了一个预先训练的人脸再现模型[37]。(One-shot free-view neural talking-head synthesis for video conferencing.)
为了验证E4S中Re-enactment步骤的必要性,我们将标准的E4S管道与没有Re-enactment步骤的管道进行了比较。
如图5第一列所示,在禁用再现时,交换后的结果与目标人脸不对齐(红色圈出区域),表明姿态信息也被嵌入到样式代码所代表的每个区域纹理中。
【表明姿态信息也被嵌入到style codes所代表的每个区域纹理中】
5.2 SEAN vs. RGI.
我们的E4S框架是通用的。
具体来说,这些方法包含一个编码器提取每个区域的样式代码,一个生成器控制每个区域的样式代码以及分割掩码,这些方法可以适应我们的E4S框架。
为了验证这一点,我们用SEAN[47]代替我们的RGI来扮演图2中的
F
ϕ
F_phi
Fϕ和
G
θ
G_θ
Gθ的角色。
从图5的第二列中,我们可以看到SEAN可以产生一个整体视觉愉悦的结果,而我们的结果保留了更多的细节(眼睛和面部皮肤)。
而且,SEAN只显示了2562的人脸生成能力,而我们的是10242。这也显示了我们提出的RGI的优越性。
(Sean: Image synthesis with semantic region-adaptive normalization.)
【用SEAN替换RGI验证消融实验】
5.3 Identity loss.
在重建设置下训练RGI时,我们增加了一个ID损失。
从表1中的配置(A)来看,当我们不应用ID丢失时,性能与基线相当。
但是,如果不使用ID loss,就会导致一些身份信息的丢失,这一点在图5的第三列中得到了证实。
【证明Identity loss是必要的】
5.4 Pre-trained vs. fine-tuned StyleGAN.
虽然预先训练的StyleGAN可以用于换脸,但头发纹理细节不能总是保存得很好。
为了在头发上获得更强健的表现,我们对头13层的StyleGAN进行了微调。
表1中的配置(B)意味着我们冻结StyleGAN生成器的参数,只训练纹理编码器
F
ϕ
F_phi
Fϕ和我们的RGI中的后续MLPs。
虽然(B)可以获得更好的SSIM、PSNR和RMSE,但FID较差。
图5中的最后一列展示了一个例子。
如图所示,微调可以改善发质,同时保持面部其他内部成分的纹理。
【对头13层的StyleGAN进行了微调可以改善发质,同时保持面部其他内部成分的纹理】
6. Face swapping results
我们将该方法与之前的人脸交换算法FSGAN[25]、SimSwap[9]、FaceShifter[24]和HifiFace[38]进行了比较。
我们还比较了目前最先进的基于StyleGAN的换脸方法,包括MegaFS[48]、StyleFusion[15]和HiRes[41]。
具体来说,我们在FFHQ数据集上训练我们的模型。
然后,我们从CelebAMask-HQ中随机抽取500对源-目标对,并获得每种方法交换的结果。
6.1 Qualitative results.
定性比较如图6和图7所示。
可以看出,我们的方法实现了更真实和高保真的交换结果。
与FSGAN[25]相比,我们的结果更清晰。
对于SimSwap[9]和Hififace[38],它们交换的面孔会受到一些失真和扭曲artifacts and distortions(第二行)。
我们的E4S和FaceShifter[24]可以产生视觉上令人满意的结果;然而,我们的方法更好地保留了纹理的细节。
我们进一步比较在源人脸和目标人脸(图6最后两行)存在遮挡的更有挑战性的情况下的性能。
我们可以清楚地看到,我们的方法可以填补源人脸(第三行)缺失的皮肤,并保持目标人脸(最后一行)的眼镜。
虽然在FSGAN中设计了一个专用的inpainting子网络,但其inpainted结果却十分模糊。
FaceShifter提出了一种细化网络来保持目标图像中的遮挡,但这可能会带回一些目标的身份信息,使它们交换后的结果与目标相似。
请注意,我们的方法是唯一可以很好地保持源的皮肤颜色的方法,这也是一个与身份相关的属性。
如果由于不同的照明条件,源皮肤不能完全适应目标,可以提前为源添加一个照明转换步骤。
在以后的工作中,我们将光线从纹理中分离出来。
为了进行公平的比较,我们还在图7中展示了一些基于StyleGAN的方法与我们的方法的结果。
虽然所有这些方法都使用了预先训练的StyleGAN,但我们发现MegaFS[48]的结果看起来是源和目标的混合体,这是模糊的,缺乏纹理。
StyleFuison[15]的结果显示了一点过度平滑,例如亚当·莱文的例子。
虽然HiRes[41]可以实现10242的分辨率,但是结果仍然受到一些artifacts的影响。
相比之下,我们的方法可以生成更真实和高质量的人脸。更多结果请参考我们的补充。
6.2 Quantitative results.
同时,我们还对来自源的身份保持方法和来自目标的属性保持方法进行了定量比较。
结果报告在表2中。
为了保持源身份,我们首先使用CosFace[35]提取所有源面和交换结果的ID特征向量。
对于每个交换的人脸,我们通过从所有源人脸中搜索最相似的人脸来执行人脸检索。
相似性是通过余弦距离来度量的。
Top-1和Top-5准确度是评价指标。
在目标属性保存方面,我们分别使用HopeNet[31]和三维人脸重建模型[13]来估计姿态和表情。
我们计算每个交换后的人脸与其ground-truth目标人脸之间的姿态和表情的
ℓ
2
ℓ_2
ℓ2距离。
结果表明,我们的方法获得了最佳的检索精度,这说明我们交换的人脸在很大程度上保存了源脸身份。
图6所示的视觉比较也支持这一观察。
在目标属性保存方面,我们在姿态和expression方面的性能仍然可以与SOTA方法相媲美。
一般来说,面向目标的方法在保持姿势和表达方面表现得更好,因为它们从目标开始,而面向源的方法需要从源开始生成这些信息。
然而,面向目标的方法的一个副作用是,它们只稍微修改了目标人脸的形状和纹理,不能完全保留身份(见图6中的FaceShifter和图7中的HiRes)。
也就是说,在这些方法中,身份和属性保护之间存在着一种权衡。
注意,在我们的E4S框架中,人脸再现方法的准确性是影响姿态和表情保存的关键因素。
我们的E4S框架是通用的,性能可以通过更高级的再现模型进一步改进。
7. Face editing results
除了人脸交换之外,我们的RGI驻留在
W
r
+
mathcal{W}^{r+}
Wr+空间中也可以方便地用于细粒度的人脸编辑。
可以编辑特定区域的mask或用参考图像交换特定区域(例如,眼睛、嘴唇)的样式,以获得所需的编辑结果。
这使得我们的RGI能够支持各种应用,如面部美化,发型转移,以及控制换脸的换脸程度。
详情请参阅我们的补充资料。
在本节中,我们将我们的方法与领先的细粒度人脸编辑作品进行比较:SPADE[28]、SEAN[47]和MaskGAN[23]。
为了进行公平的比较,我们在CelebAMask-HQ的训练集上训练我们的RGI网络,并在测试集上对其进行评估。
我们使用正式发布的竞争方法的预训练模型来获得它们的推理结果。
7.1 Qualitative results.
我们展示了与图8竞争方法的视觉对比.
我们对原来的面膜做了一些修改,比如头发,眉毛,下巴。
可以观察到,我们的方法产生了更高保真度和自然的编辑结果,其中其他组件的细节和整体身份信息得到了很好的维护。
7.2 Quantitative results.
我们测量了竞争方法的图像重建质量和我们的RGI。
结果在Tab.3中报告。
其中使用SSIM[39]、PSNR、RMSE和FID[14]作为度量。
我们还比较了SofGAN[8],这是一个类似StyleGAN的生成模型,依赖于样式代码优化进行重构。
为了进行公平的比较,对我们的RGI应用了一个优化阶段(即RGI-Optim.)。
如表3所示,我们的方法在所有指标上都优于其他方法,这说明了我们的方法在视觉检测方面的优越性。
我们发现SEAN[47]有时会在头发区域产生伪影。
相比之下,我们的RGI可以实现高保真重建,更好地保持身份、纹理和光照。
此外,我们的RGI-Optim。
能更好地保存面部细节(如头发的卷曲程度、胡须的粗细、酒窝、背景等)。
更多的视觉对比,请查看我们的补充。
8. Conclusion
方法简介
:在本文中,我们提出了一种新的人脸交换框架E4S,该框架明确地分解了每个人脸成分的形状和纹理,并将人脸交换重新定义为一个简化的纹理和形状交换问题。方法具体介绍
:为了寻求这种解纠缠以及高分辨率和高保真,我们提出了一种新的区域GAN反演(RGI)方法。
具体来说,多尺度mask引导编码器将输入脸投射到每个区域样式的代码中。
此外,mask引导注入模块使用样式码根据给定的masks操作生成器中的特征映射。实验
:在人脸交换、人脸编辑和其他扩展应用中的大量实验证明了该方法的优越性。
个人总结和思考
- 是一个基于StyleGAN的方法,创新点主要在与细粒度的mask和纹理编码之间的交换。最终生成的对应的style codes和修改的mask输入到一个修改的StyleGAN生成器也是一个贡献。还有是对对头13层的StyleGAN进行了微调可以改善发质,同时保持面部其他内部成分的纹理。然后也能进行人脸编辑。
- 这种细粒度编辑的角度是值得借鉴的,可以发现越来越多的工作都是在逐步的精细化。
- 同时其他角度的思考也是必要的。
- 后续对代码进一步了解之后在更新。