论文:Latent to Latent: A Learned Mapper for Identity Preserving Editing of Multiple Face Attributes in StyleGAN-generated Images
🔗Link:论文地址
摘要:Several recent papers introduced techniques to adjust the attributes of human faces generated by unconditional GANs such as StyleGAN. Despite efforts to disentangle the attributes, a request to change one attribute often triggers unwanted changes to other attributes as well. More importantly, in some cases, a human observer would not recognize the edited face to belong to the same person. We propose an approach where a neural network takes as input the latent encoding of a face and the desired attribute changes and outputs the latent space encoding of the edited image. The network is trained offline using unsupervised data, with training labels generated by an off-the-shelf attribute classifier. The desired attribute changes and conservation laws, such as identity maintenance, are encoded in the training loss. The number of attributes the mapper can simultaneously modify is only limited by the attributes available to the classifier – we trained a network that handles 35 attributes, more than any previous approach. As no optimization is performed at deployment time, the computation time is negligible, allowing real-time attribute editing. Qualitative and quantitative comparisons with the current state-of-the-art show our method is better at conserving the identity of the face and restricting changes to the requested attributes.
简单概括一下:最近很多文章介绍了利用StyleGAN调整人脸属性的工具方法,尽管在解纠缠方面做了很多努力,但往往在修改人脸某一属性的情况下会同时修改其他人脸属性,同时很多修改过的人脸不再像原来的人。于是作者提出来一种神经网络,以人脸的latent code+所需要调整的属性attributes作为输入,输出为更改过的latent code。训练过程中,使用无监督的数据,训练标签由pretrained属性分类器生成,同时加入了身份维护。
Introduction
基于属性的人脸图像编辑是一个非常活跃的研究领域,有许多直接的实际应用。给定一个人的照片,可以生成更改过特定属性的新照片(比如年龄或面部表情被修改)。但目前存在一些纠缠问题:例如,当面部变老时,在面部添加了眼镜(眼镜的存在应该是一个独立可控的属性)。此外,即便修改了很多属性,编辑前后图像中的人物应该保持不变(应能辨认出是同一个人)。
最近,StyleGan反演技术可以更加有效地将真实世界的图片投射到latent space,一旦获取了图片在latent space的latent code,就可以通过更改部分latent code实现属性编辑。之前的论文提到过可以在latent space内寻找到切割特定属性正负样本的超平面,然后获取到改变该属性的directions,但这些属性在latent space中却是复杂的、非线性的,通过线性修改很容易修改到其他属性。为了解决该问题,很多最新的papers开始使用非线性的映射,同时也有的做法是针对特定属性只修改对应的style层(例如,修改年龄时,更改StyleGAN的第6和7层)
本文中,作者训练了一个神经网络来完成latent-to-latent的transformation,用于获取image with the changed attribute所对应的latent code。由于这个技术是one-shot,同时不依赖于线性或非线性的directions变化,一旦网络训练完成,可针对任意其他图片完成编辑。训练该网络不需要对图片进行手动标记,只需要通过一个属性分类器,所以网络可控制的属性数量完全由属性分类器决定,在作者的实验中,训练了一个可控制35个不同面部属性的分类器(比过去所有方法都要多)。作者认为在改变特定属性时应保持其他属性不变,例如改变年龄也不应该自动改变头发的颜色,在作者的体系结构中通过FaceNet计算脸部特征之间的欧氏距离来计算身份损失。
本文的贡献如下:
- 提出了一种编辑人脸属性的新技术:在latent space完成transformation
- 通过使用预训练属性分类器,训练端对端的latent-to-latent网络,无需人为标注图片
- 与当前先进方法对比,在编辑某一属性时,大大减少了更该其他属性的情况,同时可以减少由于属性编辑带来的人脸身份损失
Latent-to-Latent
Defining and measuring face attributes
当我们去描述一张图片中的人脸时,我们通常会使用诸如性别、年龄、头发等属性,将这些人类评估表示为与图像关联的属性集合
{
a
0
,
a
1
,
.
.
.
a
n
}
\{a_0,a_1,...a_n\}
{a0,a1,...an}
但很难使所有属性都正交,因此在许多情况下,这些属性是独立的,但在人群中统计相关。例如,年龄与头发颜色无关,但通常情况下老年人与白发有关。我们定义了一个attribute regressor,将一张图片返回其属性的评估值。一个能够有效对attribute分类的预训练模型是训练该网络的关键组成部分。我们使用了一个随机初始化的ResNet50网络,并额外加入了一个卷积层和两个全连接层,最终输出一个直观的表示属性。该分类模型网络采用监督训练,使用图像和属性向量成对的训练数据集。【作者在该工作中使用了微软的FaceAPI创建的训练集】
Adjusting the attributes with a latent-to-latent network
给定一张图片I和属性向量a,我们希望用户可以指定一个不同的属性向量:a'=a+Δa
,然后生成一个新的图片I’,但数十年的工作证明了这种在图片领域transformation的困难性。
我们的方法基于以下想法:图片I和I’都是StyleGan生成得到,同时和latent codes w、w’有关联。如果I来自真实世界图片,可以先将它反演到latent space生成w,接下来利用网络完成:
f
(
w
,
∆
a
,
θ
)
→
w
′
,
其
中
H
(
G
(
w
′
)
)
=
a
′
f(w, ∆a, θ) → w',其中H(G(w'))=a'
f(w,∆a,θ)→w′,其中H(G(w′))=a′
我们声明latent-to-latent transformation f通过Δa寻找到w’都是single shot,和以往方法不同,我们的方法不是通过在潜在空间中确定并遵循某些属性对应的方向来逐步进行转换,也不是依赖于沿着不同的属性变化,最后我们的方法也不是修改latent representation使其更适合属性编辑, 就此而言,我们的方法回避了与latent space非线性相关的挑战。
我们的方法中使用了StylegGan(18*512)、35维属性变换向量,由于在空间地图中,latent space的维度代表着 “styles”,所以在transformation network中使用卷积层是不合适的。我们的transformation是single shot,因此循环架构不适用。我们使用了一个多层全连接神经网络,自由变量是层的大小和数量同时非线性使用,为了保护输入图像的细节,我们将所有隐藏层都设置为输入输出相同的size。至于网络的层数,我们进行了1~4层的实验,这对训练数据以及机器性能的消耗有显著提升。
过去的研究中证明了简单的遵循线性方向不会产生好结果,虽然ReLU是默认的神经网络中非线性的激活函数,但在我们的网络中它表现并不好,因为它通过网络传播不可避免地抑制了一些信息,因此我们最终选择使用Tanh函数。
Training the latent-to-latent network
训练latent-to-latent transformation网络可以使用标注过的人脸图片监督训练,但这毫无疑问耗费的成本过大。
我们的训练方法是将网络嵌入到一个框架中,其中信息流经许多pretrained组件,除了f 网络参与训练,其他的网络冻结权重。通过应用不同的信息流,我们可以定义一些不同的损失,有助于训练latent-to-latent网络的功能。
该框架的输入采用三元组(I, w, a)形式来表示图像【对应的潜在编码及其初始属性】,我们只需要一个初始图像 I 或一个初始潜在编码 w 来创建这个三元组。如果我们从 w 开始,可以使用生成器 G 创建图像 I。如果我们从 I 开始,可以通过GAN反演生成潜在编码。在这两种情况下,属性 regressor H 都可用于查找 a。因此,训练过程是基于无监督的输入数据。
我们观察到,仅仅改变单个属性可能会产生不合理的属性向量,比如一个胡子男没有面部毛发,所以我们首先通过了一种方法修正了目标属性向量,生成了一个修正过的属性向量ac’,所以输入到网络中的应该是:
Δ
a
=
a
c
′
−
a
Δa = a_c'-a
Δa=ac′−a
输入在网络中通过特定路径传播,产生了不同的loss,这些loss再backprogated来更新f。
Target attribute loss
生成图像的属性应尽可能接近修正后的目标属性。 我们使用输出 a^ 和校正后值ac’之间的均方误差,均方误差在这里很有帮助。
L
A
=
∣
∣
a
ˆ
−
a
c
′
∣
∣
2
L_A = ||aˆ − a_c' ||^2
LA=∣∣aˆ−ac′∣∣2
Cycle loss
从逻辑上讲,同一个人的属性变化应该是可逆的:将年龄增加十年然后减少它应该会产生相同的图像。 这种目标属性损失不会自动强制执行,因为在这个过程中,图片的其他方面可能未被特定属性覆盖得到改变。 我们以循环损失的形式实现这个目标,实现为原始潜在向量 w 与通过应用两个属性变化获得的潜在向量之间的距离相反的迹象。 我们将使用 L1 距离进行测量潜在空间中的距离:
L
C
=
∣
∣
w
−
f
(
f
(
w
,
∆
a
)
,
−
∆
a
)
∣
∣
L_C = ||w − f(f(w, ∆a), −∆a)||
LC=∣∣w−f(f(w,∆a),−∆a)∣∣
Identity loss
当不添加属性改变时,应该生成相同的latent vector。
L
I
=
∣
∣
w
−
f
(
w
,
0
)
∣
∣
L_I = ||w − f(w, 0)||
LI=∣∣w−f(w,0)∣∣
Neighborhood loss
潜在空间变换的一个挑战是由于非线性和潜在空间内部相互纠缠,相对较小的属性转换可能会使向量偏离较大。Neighborhood loss代表原始latent vector偏离的输出,鼓励网络实现属性转换后的latent vector与原始latent code的偏离量最小。
L
N
=
∣
∣
w
−
f
(
w
,
∆
a
)
∣
∣
2
L_N = ||w − f(w, ∆a)||2
LN=∣∣w−f(w,∆a)∣∣2
Face identity loss
确保属性变换前后的人身份一致,在这里使用了FaceNet完成。
L
F
I
d
=
∣
∣
F
(
G
(
w
)
)
−
F
(
G
(
f
(
w
,
∆
a
)
)
)
∣
∣
2
L_{FId} = ||F(G(w)) − F(G(f(w, ∆a)))||^2
LFId=∣∣F(G(w))−F(G(f(w,∆a)))∣∣2
实验结果
其他的详见论文。
Conclusions
在本文中,我们介绍了一种在 StyleGAN 生成的图像中编辑人脸属性的新技术。 我们的方法基于一个映射潜在向量的网络,潜在到潜在映射器可以通过嵌入在一个更大的网络中来学习,并结合以下方法对其进行训练损失。 其中一些损失强制执行新的属性值,而另一些则引导网络找到解决方案,使得保留原始图片的个人身份和其他特征。 通过定性和定量实验我们发现,与最先进的方法相比,我们的方法可以处理更多的属性,更好的维护面部的个人身份。