【论文解读】CVPR 2021 妆容迁移 论文解读 Spatially-invariant Style-codes Controlled Makeup Transfer
摘要
未对准的图像之间的妆容迁移始终是该领域内的难题之一,以前的方法大多数采用计算图像之间的像素级来克服这一障碍,但该方法不精确且计算量大。在本文中,作者从不同的角度将妆容迁移分解为两步:提取-分配过程。为此,作者提出了一种基于风格的可控GAN模型,该模型由三个部分组成,每个部分分别对应于目标风格编码、人脸特征提取和化妆融合。具体地,特定于部件的样式编码器将参考图像的组件式构图样式编码为中间潜在空间W中的样式代码。样式代码丢弃空间信息,因此对空间错位保持不变。另一方面,样式码嵌入了组件信息,使得能够从多个参考中灵活地进行部分补码编辑,该样式码与源标识特征一起集成到一个补码融合解码器中,以生成最终结果。
方法特点
本文提出的方法通过提取特征部件为样式码的方法,解决了空间错位的问题,取消了额外的计算,同时保持了较好的性能。
实现方法
公式计算
用
X
=
{
X
n
∣
X
n
∈
X
}
n
=
1
,
.
.
.
.
.
,
N
X=\{{X_n|X_n \in X\}}_{n=1,.....,N}
X={Xn∣Xn∈X}n=1,.....,N和
Y
=
{
Y
m
∣
Y
m
∈
Y
}
m
=
1
,
.
.
.
.
.
,
M
Y=\{{Y_m|Y_m \in Y\}}_{m=1,.....,M}
Y={Ym∣Ym∈Y}m=1,.....,M分别定义原始图像域(non-makeup image domain)以及参考图像域(makeup image domain)。 给定原始图像
x
x
x以及参考图像
y
y
y。我们的目的就在于找到
x
^
=
G
(
x
,
y
)
\widehat{x}=G(x,y)
x
=G(x,y)和
y
^
=
G
(
y
,
x
)
\widehat{y}=G(y,x)
y
=G(y,x)两者之间的映射函数。其中
x
^
\widehat{x}
x
代表结合
y
y
y以及原图
x
x
x的人脸特征结合后所得的图片。
下图描述了论文所提出的网络模型(SCGAN),其中包括三个网络组成成分:局部特征编码器(PSEnc)、面部特征编码器(FIEnc)以及一个化妆融合解码器(MFDec),附原文如下:
a Partspecific Style Encoder (PSEnc), a Face Identity Encoder (FIEnc), and a Makeup Fusion Decoder (MFDec).
PSEnc对参考图像(reference image)进行编码,将其特征转换为潜在空间 w w w中的样式代码。论文方法将参考图像特征提取为三个元素(eyes,skin,lip),并将其分别送入PSEnc进行转换。FIEnc负责提取源图像特征(source image),MFDec提出特征融合的具体方法并生成妆容迁移图像。网络的具体细节在下图的右半部分。
局部特征的样式编码器(PSEnc)
在妆容迁移网络中,首先需要考虑妆容特征的提取。简单地通过平均得到特征向量会造成特征之间不可避免的相干纠缠。参考styleGAN,作者提出了一种非线性映射函数将样式代码嵌入到样式空间中。通过这种方式,代码不再受到训练数据分布的限制。同时,网络通过引入先验数据,进一步支持特定部位的妆容迁移,使代码具有更高的可控性。
作者将面部特征提取为三个不同的部分,公式如下:
y
i
=
y
⊙
M
i
y_i=y \odot M_i
yi=y⊙Mi
其中
i
=
{
l
i
p
,
s
k
i
n
,
e
y
e
s
}
i=\{lip,skin,eyes\}
i={lip,skin,eyes},每个输入分量
y
i
y_i
yi被送入具有两个下采样卷积层的特征提取器。在具有平均池化层和 1×1 卷积层的映射模块之后,将每个组件
y
i
y_i
yi映射到特定于部分的样式代码
z
i
z_i
zi。 我们将三个组件的代码连接起来,在
Z
Z
Z潜在空间中形成一个完整的初始样式代码
z
z
z。
After a mapping module (Fig. 2 (b)) with an average pooling layer and a 1×1 convolutional layer, we map each component yi to a part-specific stylecode zi. We concatenate the codes of three components and form a complete initial style-code z in Z latent space
z = z l i p ⊗ z s k i n ⊗ z e y e s z=z^{lip}\otimes z^{skin}\otimes z^{eyes} z=zlip⊗zskin⊗zeyes
该公式代表将三个面部特征进行串联,正是这种串联的方法使得生成图像可以对任意的语义分割进行组合,也就是结合不同参考图像的妆容,获得不同的姿态和面部表情。另外,为了摆脱训练数据的影响,将样式代码z馈送到具有三个全连接层的多层感知机(MLP)中,以送入代码空间w。
w
=
M
L
P
(
z
)
w=MLP(z)
w=MLP(z)
人脸识别编码器(FIEnc)
FIEnc用于提取图像的人脸身份特征。它由两个下采样卷积层和三个resblocks组成。FIEnc的输入是源图像 x x x,输出是人脸身份特征 F i d F_{id} Fid。FIEnc 中的三个 resblocks 都是没有 AdaIN 层的常见残差块。
FIEnc serves for face identity feature extraction. It consists of two downsampling convolutional layers and three resblocks. FIEnc takes the input source image x and extract the face identity features F i d F_{id} Fid
F i d = F I E n c ( x ) F_{id}=FIEnc(x) Fid=FIEnc(x)
妆容迁移解码器(MFDec)
MFDec将参考图像样式代码
w
w
w与源图像身份特征
F
i
d
F_{id}
Fid逐渐融合,并将参考图像的妆容特征应用到生成图像上。它由三个融合块(fusion blocks)和两个上采样卷积层(upsampling convolutional layer)组成。 我们为 MFDec 中的每个融合块引入了两个 AdaIN 层。 样式代码 w 由可学习的仿射变换专门化,然后传递到每个融合块。 第 j 层 AdaIN 层定义如下:
A
d
a
I
N
(
F
i
,
w
j
)
=
w
s
,
j
F
j
−
μ
(
F
j
)
α
(
F
j
)
+
w
b
,
j
AdaIN(F_i,w_j)=w_{s,j}\frac{F_j- \mu (F_j)}{\alpha(F_j)}+w_{b,j}
AdaIN(Fi,wj)=ws,jα(Fj)Fj−μ(Fj)+wb,j
其中
w
s
,
j
w_{s,j}
ws,j 和
w
b
,
j
w_{b,j}
wb,j 是使用相应标量分量的缩放和偏置样式,
F
j
F_j
Fj 表示输入特征图,μ(·) 和 σ(·) 分别是通道均值和标准偏差。 经过两个上采样卷积层后,我们最终可以得到结果
x
^
\widehat{x}
x
。
损失函数
由于化妆图像和非化妆图像未配对。因此需要使用类似于CycleGAN的循环训练方法训练网络。引入对抗性损失来指导SCGAN网络以获得更好的效果。作者引入了两个类似于【12】中所述的判别器(Markovian discriminator),分别定义为
D
x
,
D
y
D_x,D_y
Dx,Dy。对抗性损失定义如下:
L
D
G
A
N
=
−
E
x
∼
X
[
l
o
g
D
X
(
x
)
]
−
E
y
∼
Y
[
l
o
g
D
Y
(
y
)
]
E
x
∼
X
,
y
∼
Y
[
l
o
g
(
1
−
D
X
(
G
(
y
,
x
)
)
)
(
1
−
D
Y
(
G
(
x
,
y
)
)
)
]
\mathcal{L}_D^{GAN} = -\mathbb{E}_{x \sim X}[logD_X(x)]-\mathbb{E}_{y \sim Y}[logD_Y(y)]\mathbb{E}_{x \sim X,y \sim Y}[log(1-D_X(G(y,x)))(1-D_Y(G(x,y)))]
LDGAN=−Ex∼X[logDX(x)]−Ey∼Y[logDY(y)]Ex∼X,y∼Y[log(1−DX(G(y,x)))(1−DY(G(x,y)))]
L
D
G
A
N
=
−
E
x
∼
X
,
y
∼
Y
[
l
o
g
D
X
(
G
(
y
,
x
)
)
×
D
Y
(
G
(
x
,
y
)
)
)
]
]
\mathcal{L}_D^{GAN}=-\mathbb{E}_{x\sim X,y\sim Y}[logD_X(G(y,x))\times D_Y(G(x,y)))]]
LDGAN=−Ex∼X,y∼Y[logDX(G(y,x))×DY(G(x,y)))]]
由于图片来自两个域,两者之间缺少像素级约束。为了保证源图像和输出图像之间的身份特征一致,使用感知损失来维护全局人脸身份。全局感知损失定义如下:
L
g
l
o
b
a
l
v
g
g
=
∣
∣
F
l
(
G
(
y
,
x
)
)
−
F
l
(
y
)
∣
∣
2
+
∣
∣
F
l
(
G
(
x
,
y
)
)
−
F
l
(
x
)
∣
∣
2
\mathcal{L}_{global}^{vgg}=||F_l(G(y,x))-F_l(y)||_2+||F_l(G(x,y))-F_l(x)||_2
Lglobalvgg=∣∣Fl(G(y,x))−Fl(y)∣∣2+∣∣Fl(G(x,y))−Fl(x)∣∣2
其中
F
l
(
⋅
)
F_l(·)
Fl(⋅)表示VGG模型第l层的特征,
∣
∣
⋅
∣
∣
2
||·||_2
∣∣⋅∣∣2是第二范数。除了全局感知损失,还需要引入局部感知损失来进一步保持非转移部分不变,例如牙齿、眉毛等。局部感知损失定义如下:
L
l
o
c
a
l
v
g
g
=
∑
i
=
1
I
∣
∣
F
l
(
G
(
y
,
x
)
⊙
M
y
,
i
)
−
F
l
(
y
⊙
M
y
,
i
)
∣
∣
2
+
∑
i
=
1
I
∣
∣
F
l
(
G
(
x
,
y
)
⊙
M
x
,
i
)
−
F
l
(
x
⊙
M
x
,
i
)
∣
∣
2
\mathcal{L}_{local}^{vgg}=\sum_{i=1}^I||F_l(G(y,x) \odot M_{y,i})-F_l(y\odot M_{y,i})||_2 +\sum_{i=1}^I ||F_l(G(x,y)\odot M_{x,i})-F_l(x\odot M_{x,i})||_2
Llocalvgg=i=1∑I∣∣Fl(G(y,x)⊙My,i)−Fl(y⊙My,i)∣∣2+i=1∑I∣∣Fl(G(x,y)⊙Mx,i)−Fl(x⊙Mx,i)∣∣2
其中M表示I={牙齿,头发,眼球,眉毛}中特定部分的掩码,i表示I的索引。此外,对于无监督学习未配对的图片,还需要使用循环一致性损失,定义如下:
L
c
y
c
=
∣
∣
G
(
G
(
y
,
x
)
,
y
)
−
y
∣
∣
1
+
∣
∣
G
(
G
(
x
,
y
)
,
x
)
−
x
∣
∣
1
(
∣
∣
⋅
∣
∣
表
示
第
一
范
数
)
\mathcal{L}_{cyc}=||G(G(y,x),y)-y||_1+||G(G(x,y),x)-x||_1 \quad \quad (||·||表示第一范数)
Lcyc=∣∣G(G(y,x),y)−y∣∣1+∣∣G(G(x,y),x)−x∣∣1(∣∣⋅∣∣表示第一范数)
此外,论文还提出了一种化妆损失函数,它由包括眼睛、嘴巴、皮肤的三个不同面部区域的局部直方图匹配组成,定义如下:
L
m
a
k
e
u
p
=
∣
∣
G
(
x
,
y
)
−
H
M
(
x
,
y
)
∣
∣
2
+
∣
∣
G
(
y
,
x
)
−
H
M
(
y
,
x
)
∣
∣
2
\mathcal{L}_{makeup}=||G(x,y)-HM(x,y)||_2+||G(y,x)-HM(y,x)||_2
Lmakeup=∣∣G(x,y)−HM(x,y)∣∣2+∣∣G(y,x)−HM(y,x)∣∣2
其中HM表示直方图匹配,HM(x,y)在具有y的化妆风格的同时保留x的身份特征。
最后,网络的总损失函数可以定义如下:
L
t
o
t
a
l
=
λ
G
A
N
(
L
D
G
A
N
+
L
G
G
A
N
)
+
λ
c
y
c
L
c
y
c
+
λ
g
L
g
l
o
b
a
l
v
g
g
+
λ
l
L
l
o
c
a
l
v
g
g
+
λ
m
a
k
e
u
p
L
m
a
k
e
u
p
\mathcal{L}_{total}=\lambda_{GAN}(\mathcal{L}_D^{GAN}+\mathcal{L}_G^GAN)+\lambda_{cyc}\mathcal{L}_{cyc}+\lambda_g\mathcal{L}_{global}^{vgg}+\lambda_l\mathcal{L}_{local}^{vgg}+\lambda_{makeup}\mathcal{L}_{makeup}
Ltotal=λGAN(LDGAN+LGGAN)+λcycLcyc+λgLglobalvgg+λlLlocalvgg+λmakeupLmakeup
其中
λ
\lambda
λ是各项损失函数在总损失中所占的权重。
运行效果
SCGAN 在 Makeup Transfer (MT) 数据集上进行了训练和测试,其中包含 3834 张女性图像。 有 1115 个非化妆图像和 2719 个化妆图像,包括姿势、种族等的变化。随机选择了100 张非化妆图像和 250 张化妆图像进行测试。 其余图像用于训练。 在所有实验中,图像都被调整为 256×256。 生成器和两个鉴别器的优化器是 Adam ,其中 β1 = 0.5 和 β2 = 0.999,固定学习率为 0.0002。 批量大小设置为 1,运行效果如下所示:
以及不同网络之间的成像对比。
参考文献
【1】Han Deng, Chu Han, Hongmin cai, Guoqiang Han, Shengfeng He.Spatially-invariant Style-codes Controlled Makeup Transfer.
【2】Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, and Alexei A Efros. Image-to-image translation with conditional adversarial networks. In CVPR, pages 1125–1134, 2017.