【深度学习】BeautyGAN: 美妆,化妆,人脸美妆

https://www.sysu-hcp.net/userfiles/files/2021/03/01/3327b564380f20c9.pdf

【深度学习】BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network

在这里插入图片描述

BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network

Tingting Li
Tsinghua-Berkeley Shenzhen Institute, Tsinghua University
litt.thu@foxmail.com

Ruihe Qian
Institue of Information Engineering of CAS
vitochien09@gmail.com

Chao Dong
SIAT-Sensetime Joint Lab, Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences
chao.dong@siat.ac.cn

Si Liu
Beijing Key Laboratory of Digital Media, School of Computer Science and Engineering, Beihang University
liusi@buaa.edu.cn

Qiong Yan
SenseTime Research
yanqiong@sensetime.com

Wenwu Zhu
Tsinghua-Berkeley Shenzhen Institute, Department of Computer Science and Technology, Tsinghua University
wwzhu@tsinghua.edu.cn

Liang Lin
Sun Yat-sen University
linliang@ieee.org

摘要

面部化妆迁移旨在将给定参考化妆人脸图像的化妆风格转换到另一张无妆的人脸图像,同时保持面部身份。这种实例级迁移问题比传统的域级迁移任务更具挑战性,尤其是在没有配对数据的情况下。化妆风格不同于全局风格(如绘画),因为它包含了几种局部风格/化妆品,包括眼影、口红、粉底等。现有的风格迁移方法难以提取和迁移这种局部而细腻的化妆信息。我们通过在一个双输入/输出生成对抗网络中结合全局域级损失和局部实例级损失来解决这个问题,称为BeautyGAN。具体而言,通过区分生成图像和域中的真实样本的判别器来确保域级迁移。实例级损失通过在不同的面部局部区域上计算像素级直方图损失来实现。我们进一步引入感知损失和循环一致性损失,以生成高质量的人脸图像并保持身份一致性。总体目标函数使网络能够通过无监督对抗学习来学习实例级翻译。我们还建立了一个包含3834张高分辨率人脸图像的新化妆数据集。大量实验表明,BeautyGAN能够生成视觉上令人愉悦的化妆人脸,并且准确地实现化妆迁移。数据和代码可在http://liusi-group.com/projects/BeautyGAN获取。

计算机与信息科学概念

  • Computing methodologies → Computer vision tasks
  • Neural networks
  • Unsupervised learning

关键词

面部化妆迁移;生成对抗网络

引文格式

Tingting Li, Ruihe Qian, Chao Dong, Si Liu, Qiong Yan, Wenwu Zhu, and Liang Lin. 2018. BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network. In 2018 ACM Multimedia Conference (MM ’18), October 22–26, 2018, Seoul, Republic of Korea. ACM, New York, NY, USA, 9 pages. https://doi.org/10.1145/3240508.3240618

1. 引言

化妆是一种通过使用特殊化妆品(如用于遮瑕的粉底、眼线、眼影和口红)来改善面部外观的普遍方式。随着成千上万的化妆产品的出现,从品牌、颜色到使用方式各不相同,没有专业建议的情况下很难找到适合的化妆风格。虚拟化妆应用程序是一个方便的工具,帮助用户尝试照片中的化妆风格,例如MEITU XIUXIU、TAAZ和DailyMakever。然而,这些工具都需要用户手动交互,并且仅提供一定数量的固定化妆风格。在日常生活中,名人总是带有漂亮的化妆风格,这提供了一些可以参考的例子。化妆迁移提供了一种高效的方法,帮助用户选择最适合的化妆风格。如图1所示,化妆迁移(我们方法的结果)可以将给定参考人脸图像的化妆风格转换到另一张无妆人脸图像上,而不改变面部身份。

现有的自动化妆迁移研究可以分为两类:传统的图像处理方法,如图像梯度编辑和基于物理的操作,以及通常基于深度神经网络的深度学习方法。图像处理方法通常将图像分解为多个层(如面部结构、颜色、皮肤),并在将参考人脸图像扭曲到无妆图像后迁移每一层。基于深度学习的方法采用多个独立的网络来处理每个化妆品。几乎所有以前的方法都将化妆风格视为不同成分的简单组合,因此最终输出图像在组合处看起来不自然,有明显的伪影(见图4)。

最近在图像到图像翻译方面的进展,如风格迁移,表明一个作用于整个图像的端到端结构可以生成高质量的结果。然而,直接将这些技术应用于我们的任务仍然是不可行的。面部化妆迁移有两个主要特点不同于以前的问题:1)化妆风格因人而异,需要在实例级别进行迁移。相反,典型的图像到图像翻译方法(如CycleGAN)主要用于域级迁移。CycleGAN在两个集合(如马和斑马)之间实现图像到图像的翻译,强调域间差异而忽略了域内差异。因此,在我们的问题中使用CycleGAN往往会生成一个平均的域级风格,在给定不同参考人脸的情况下不变(见图4)。2)化妆风格超越了全局风格,还包括独立的局部风格。具体而言,在传统的风格迁移工作中,风格通常是指全局的绘画方式,如笔触和颜色分布。相反,化妆风格更加细腻和精致,由包括眼影、口红、粉底等在内的几种局部化妆品组成。每种化妆品代表完全不同的风格。因此,很难在保留各种化妆品特性的同时,作为一个整体提取化妆风格。

另一个关键问题是缺乏训练数据。一方面,现有的化妆数据集(见表1)太小,无法训练足够大的网络,并且面部化妆图像大多是低分辨率/质量的。另一方面,很难获得一对具有不同化妆风格的对齐良好的人脸图像。因此,使用配对数据进行监督学习也是不可行的。

为了解决上述问题,我们提出了一种新的双输入/输出生成对抗网络,称为BeautyGAN,以实现化妆风格迁移在一个统一的框架中。它接受化妆和无妆脸作为输入,并直接输出迁移结果。不需要额外的前处理/后处理。类似于CycleGAN,网络首先通过一对区分生成图像和域中的真实样本的判别器将无妆脸迁移到化妆域。在域级迁移的基础上,我们通过采用在不同面部区域上计算的像素级直方图损失来实现实例级迁移。为了保持面部身份并消除伪影,我们还在总体目标函数中加入了感知损失和循环一致性损失。得益于双输入/输出设计,通过只使用一个生成器,可以在一个前向传递中实现输入和输出之间的循环一致性,从而实现化妆和去化妆。此外,在整个训练过程中不需要配对数据。如图1所示,生成的图像自然且视觉上令人愉悦,没有明显的伪影。

总结起来,主要贡献有三点:

  1. 我们通过双输入/输出生成对抗网络实现了自动化妆迁移。实验展示了迁移策略的有效性,生成的结果质量高于现有最先进的方法。
  2. 我们通过成功应用于局部区域的像素级直方图损失实现了实例级风格迁移。这种实例级迁移方法可以轻松推广到其他图像翻译任务,如头部肖像的风格迁移、图像属性迁移等。
  3. 我们建立了一个新的化妆数据集,包含3834张图像,可以在http://liusi-group.com/projects/BeautyGAN获取。

2. 相关工作

2.1 化妆研究

最近,化妆相关的研究引起了越来越多的关注。提出了一种基于局部约束字典学习的面部化妆检测和去除框架。引入了一种生成对抗网络,用于生成无妆图像以进行化妆不变的人脸验证。化妆迁移是另一种有吸引力的应用,旨在在保留

源图像身份的同时,从参考图像中迁移化妆风格。通过将图像分解为三层并逐层迁移化妆信息。这种方法可能会使源图像的面部细节变得平滑,因此提出了另一种图像分解方法。以上所有化妆迁移框架都基于传统方法,而提出了一种局部化妆迁移框架,采用深度学习方式。它将面部化妆分为几个部分,并对每个面部部分进行了不同的方法。采用变形和结构保持来合成化妆后图像。

与上述工作不同,我们的网络可以同时实现化妆迁移和去化妆。同时,统一的训练过程可以考虑不同区域化妆品之间的关系。此外,端到端网络本身可以学习源图像中化妆品的适应性,从而无需后处理。

2.2 风格迁移

风格迁移旨在结合来自不同图像的内容和风格。为实现这一目标,提出了一种方法,通过最小化内容和风格重建损失生成重建图像。为控制更多信息,如颜色、尺度和空间位置,提出了一种改进的方法,其中引入了感知因素。上述方法可以产生高质量的结果,但需要大量计算。提出了一种前馈网络,用于风格迁移,计算量较少且质量近似。

2.3 生成对抗网络 (GAN)

生成对抗网络(GAN)是一种生成模型,包含一个判别器和一个生成器。由于其生成视觉上逼真图像的能力,GAN被广泛用于计算机视觉任务。提出了一种用于图像超分辨率的生成对抗网络。采用条件GAN解决特定的眼部修复问题。通过对合成图像进行对抗模型训练以提高其真实性。甚至可以结合用户交互来进行实时图像编辑,利用GAN估计图像流形。

2.4 GAN用于图像到图像翻译

大多数现有的图像到图像翻译研究旨在学习从源域到目标域的映射。最近,有一些应用GAN的有前景的工作。提出了一个所谓的pix2pix框架,可以从标签图生成图像,并从边缘图重建对象。为解决缺乏配对图像进行训练的问题,提出了一种模型,其生成器通过权重共享约束绑定在一起,以学习联合分布。提出了循环一致性损失,以规范输入和翻译图像之间的关键属性。StarGAN甚至在一个生成器中解决了多域之间的映射问题。特别地,引入了一个与GAN一起工作的编码器,用于图像属性迁移。

3. 我们的方法:BeautyGAN

我们的目标是实现参考化妆图像与无妆图像之间在实例级别的面部化妆迁移。考虑两个数据集, A ⊆ R H × W × 3 A \subseteq \mathbb{R}^{H \times W \times 3} ARH×W×3指代无妆图像域, B ⊆ R H × W × 3 B \subseteq \mathbb{R}^{H \times W \times 3} BRH×W×3指代具有各种化妆风格的化妆图像域。我们同时学习这两个域之间的映射,表示为 G : A × B → B × A G : A \times B \rightarrow B \times A G:A×BB×A,其中 A × B A \times B A×B表示笛卡尔积。也就是说,给定两个图像作为输入:一个源图像 I s r c ∈ A I_{src} \in A IsrcA和一个参考图像 I r e f ∈ B I_{ref} \in B IrefB,网络应该生成一个化妆后的图像 I s r c B ∈ B I_{src}^B \in B IsrcBB和一个去妆图像 I r e f A ∈ A I_{ref}^A \in A IrefAA,表示为 ( I s r c B , I r e f A ) = G ( I s r c , I r e f ) (I_{src}^B, I_{ref}^A) = G(I_{src}, I_{ref}) (IsrcB,IrefA)=G(Isrc,Iref) I s r c B I_{src}^B IsrcB综合了 I r e f I_{ref} Iref的化妆风格,同时保持 I s r c I_{src} Isrc的面部身份,而 I r e f A I_{ref}^A IrefA实现了从 I r e f I_{ref} Iref中去除化妆。基本问题是如何学习实例级别的对应关系,应该确保结果图像 I s r c B I_{src}^B IsrcB和参考图像 I r e f I_{ref} Iref之间的化妆风格一致性。请注意,没有配对数据用于训练。

为了解决这个问题,我们引入了在不同化妆品上作用的像素级直方图损失。此外,感知损失用于保持面部身份和结构。然后,我们可以在不改变面部结构的情况下将确切的化妆迁移到源图像。该方法基于生成对抗网络,并且便于将所有损失项整合到一个完整的目标函数中。对抗损失有助于生成视觉上令人愉悦的图像,并细化不同化妆品之间的关联。损失函数和网络架构的详细信息如下所示。

3.1 完整目标

如图2所示,整体框架由一个生成器 G G G和两个判别器 D A D_A DA D B D_B DB组成。在公式 ( I s r c B , I r e f A ) = G ( I s r c , I r e f ) (I_{src}^B, I_{ref}^A) = G(I_{src}, I_{ref}) (IsrcB,IrefA)=G(Isrc,Iref)中, G G G接受两个图像 I s r c ∈ A I_{src} \in A IsrcA I r e f ∈ B I_{ref} \in B IrefB作为输入,并生成两个翻译后的图像作为输出, I s r c B ∈ B I_{src}^B \in B IsrcBB I r e f A ∈ A I_{ref}^A \in A IrefAA

我们首先给出 D A D_A DA D B D_B DB的目标函数,其中只包含对抗损失。 D A D_A DA区分生成的图像 I r e f A I_{ref}^A IrefA与集合 A A A中的真实样本,公式为:

L D A = E I s r c [ log ⁡ D A ( I s r c ) ] + E I s r c , I r e f [ log ⁡ ( 1 − D A ( I r e f A ) ) ] L_{D_A} = \mathbb{E}_{I_{src}} [\log D_A(I_{src})] + \mathbb{E}_{I_{src}, I_{ref}} [\log(1 - D_A(I_{ref}^A))] LDA=EIsrc[logDA(Isrc)]+EIsrc,Iref[log(1DA(IrefA))]

类似地, D B D_B DB旨在区分生成的图像 I s r c B I_{src}^B IsrcB与集合 B B B中的真实样本,公式为:

L D B = E I r e f [ log ⁡ D B ( I r e f ) ] + E I s r c , I r e f [ log ⁡ ( 1 − D B ( I s r c B ) ) ] L_{D_B} = \mathbb{E}_{I_{ref}} [\log D_B(I_{ref})] + \mathbb{E}_{I_{src}, I_{ref}} [\log(1 - D_B(I_{src}^B))] LDB=EIref[logDB(Iref)]+EIsrc,Iref[log(1DB(IsrcB))]

生成器 G G G的完整目标函数包含四种类型的损失:对抗损失、循环一致性损失、感知损失和化妆约束损失:

L G = λ a d v L a d v + λ c y c L c y c + λ p e r L p e r + L m a k e u p L_G = \lambda_{adv} L_{adv} + \lambda_{cyc} L_{cyc} + \lambda_{per} L_{per} + L_{makeup} LG=λadvLadv+λcycLcyc+λperLper+Lmakeup

其中 λ a d v \lambda_{adv} λadv λ c y c \lambda_{cyc} λcyc λ p e r \lambda_{per} λper是控制每项相对重要性的权重。 G G G的对抗损失整合了 L D A L_{D_A} LDA L D B L_{D_B} LDB

L a d v = L D A + L D B L_{adv} = L_{D_A} + L_{D_B} Ladv=LDA+LDB

生成器 G G G和判别器 D A D_A DA D B D_B DB之间进行minmax博弈, G G G试图最小化对抗损失,而判别器 D A D_A DA D B D_B DB旨在最大化相同的损失函数。其余三种损失将在后续部分详细说明。

3.2 域级化妆迁移

我们利用域级化妆迁移作为实例级化妆迁移的基础。由于双输入/输出架构,提出的网络可以在一个生成器内同时学习两个域之间的映射。输出图像需要保持输入图像的面部身份和背景信息。为满足这两个约束,我们引入感知损失和循环一致性损失。

与直接测量像素级欧几里得距离的差异不同,感知损失计算由深度卷积网络提取的高层特征之间的差异。在本文中,我们利用在ImageNet数据集上预训练的16层VGG网络。对于图像 x x x F l ( x ) F^l(x) Fl(x)表示在VGG的第 l l l层上的相应特征图,其中 F l ∈ R C l × H l × W l F^l \in \mathbb{R}^{C_l \times H_l \times W_l} FlRCl×Hl×Wl C l C_l Cl是特征图的数量, H l H_l Hl W l W_l Wl分别是每个特征图的高度和宽度。因此,输入图像 I s r c I_{src} Isrc I r e f I_{ref} Iref与输出图像 I s r c B I_{src}^B IsrcB I r e f A I_{ref}^A IrefA之间的感知损失表示为:

L p e r = 1 C l × H l × W l ∑ i j k E l L_{per} = \frac{1}{C_l \times H_l \times W_l} \sum_{ijk} E^l Lper=Cl×Hl×Wl1ijkEl

$$
E^l = [F^l(I_{src}) - Fl(I_{src}B)]^2_{ijk} + [F^l(I_{ref}) - F^l(I_{ref}

A)]2_{ijk}
$$

其中 F i j k l F^l_{ijk} Fijkl l l l层中第 i i i个滤波器在位置 ⟨ j , k ⟩ \langle j,k \rangle j,k的激活值。

为了保持背景信息,我们还引入循环一致性损失。当输出图像传递到生成器时,它应该生成与原始输入图像尽可能接近的图像。这个过程可以表示为:

( I s r c , I r e f ) → G ( I s r c , I r e f ) → G ( G ( I s r c , I r e f ) ) ≈ ( I s r c , I r e f ) (I_{src}, I_{ref}) \rightarrow G(I_{src}, I_{ref}) \rightarrow G(G(I_{src}, I_{ref})) \approx (I_{src}, I_{ref}) (Isrc,Iref)G(Isrc,Iref)G(G(Isrc,Iref))(Isrc,Iref)

损失函数公式为:

L c y c = E I s r c , I r e f [ d i s t ( I s r c r e c , I s r c ) + d i s t ( I r e f r e c , I r e f ) ] L_{cyc} = \mathbb{E}_{I_{src}, I_{ref}} [dist(I_{src}^{rec}, I_{src}) + dist(I_{ref}^{rec}, I_{ref})] Lcyc=EIsrc,Iref[dist(Isrcrec,Isrc)+dist(Irefrec,Iref)]

其中 ( I s r c r e c , I r e f r e c ) = G ( G ( I s r c , I r e f ) ) (I_{src}^{rec}, I_{ref}^{rec}) = G(G(I_{src}, I_{ref})) (Isrcrec,Irefrec)=G(G(Isrc,Iref))。距离函数 d i s t ( ⋅ ) dist(\cdot) dist()可以选择L1范数、L2范数或其他度量。

3.3 实例级化妆迁移

为了进一步鼓励网络学习实例级化妆迁移,必须在化妆风格一致性上增加约束。我们观察到面部化妆可以视觉上识别为颜色分布。无论是口红、眼影还是粉底,化妆过程主要可以理解为颜色变化。在文献中可以找到各种颜色迁移方法。我们采用直方图匹配(Histogram Matching,HM)这一直接的方法,并引入额外的像素级直方图损失,限制输出图像 I s r c B I_{src}^B IsrcB和参考图像 I r e f I_{ref} Iref在化妆风格上的一致性。

直方图损失

如果我们直接在两幅图像的像素级直方图上采用均方误差(MSE)损失,由于指示函数,梯度将为零,因此对优化过程没有贡献。因此,我们采用直方图匹配策略,首先生成一个地面真值重映射图像。假设我们要计算原始图像 x x x和参考图像 θ \theta θ之间的直方图损失,我们首先在 x x x θ \theta θ上执行直方图匹配,以获得具有相同颜色分布但仍保留内容信息的重映射图像 H M ( x , θ ) HM(x,\theta) HM(x,θ)。在得到 H M ( x , θ ) HM(x,\theta) HM(x,θ)之后,方便利用 H M ( x , θ ) HM(x,\theta) HM(x,θ) x x x之间的MSE损失,然后反向传播梯度进行优化。

面部分割

我们不直接在整个图像上使用直方图损失,而是将化妆风格分为三个重要成分——口红、眼影、粉底。最新的方法也将这三种成分作为化妆代表。然后我们在每个部分上应用局部直方图损失。原因有两点。首先,背景和头发的像素与化妆无关。如果我们不将它们分开,它们将扰乱正确的颜色分布。其次,面部化妆超越了全局风格,而是几个独立风格在不同化妆品区域的集合。从这个意义上说,我们采用在文献中的面部分割模型来获得面部引导掩码 M = F P ( x ) M = FP(x) M=FP(x)。对于每个输入图像 x x x,预训练的面部分割模型将生成一个索引掩码 M M M,表示几个面部位置,包括嘴唇、眼睛、面部皮肤(对应粉底)、头发、背景等。最后,对于每个 M M M,我们跟踪不同的标签,生成三个对应的二进制掩码,代表化妆品空间: M l i p M_{lip} Mlip M e y e M_{eye} Meye M f a c e M_{face} Mface。需要注意的是,眼影在 M M M上没有注释,因为无妆图像没有眼影。但我们期望结果图像 I s r c B I_{src}^B IsrcB具有与参考图像 I r e f I_{ref} Iref相似的眼影颜色和形状。根据眼睛掩码 M e y e M_{eye} Meye,我们计算包围眼影的两个矩形区域,然后排除眼睛区域、中间的头发和眉毛区域。这样我们可以创建一个特定的二进制掩码,代表眼影 M s h a d o w M_{shadow} Mshadow

化妆损失

总体化妆损失由作用于嘴唇、眼影和面部区域的三个局部直方图损失集成而成:

L m a k e u p = λ l L l i p s + λ s L s h a d o w + λ f L f a c e L_{makeup} = \lambda_l L_{lips} + \lambda_s L_{shadow} + \lambda_f L_{face} Lmakeup=λlLlips+λsLshadow+λfLface

其中 λ l \lambda_l λl λ s \lambda_s λs λ f \lambda_f λf是权重因子。我们将图像与它们对应的二进制掩码相乘,并在结果图像 I s r c B I_{src}^B IsrcB和参考图像 I r e f I_{ref} Iref之间进行空间直方图匹配。形式上,我们定义局部直方图损失为:

L i t e m = ∥ I s r c B − H M ( I s r c B ⊙ M i t e m 1 , I r e f ⊙ M i t e m 2 ) ∥ 2 L_{item} = \|I_{src}^B - HM(I_{src}^B \odot M_{item}^1, I_{ref} \odot M_{item}^2)\|^2 Litem=IsrcBHM(IsrcBMitem1,IrefMitem2)2

M 1 = F P ( I s r c B ) M^1 = FP(I_{src}^B) M1=FP(IsrcB)

M 2 = F P ( I r e f ) M^2 = FP(I_{ref}) M2=FP(Iref)

这里, ⊙ \odot 表示元素级乘法, i t e m item item在集合 { l i p s , s h a d o w , f a c e } \{lips, shadow, face\} {lips,shadow,face}中。

4. 数据收集

我们收集了一个新的面部化妆数据集,总共包含3834张女性图像,其中1115张无妆图像和2719张化妆图像。我们将这个数据集称为MakeupTransfer(MT)数据集。它包括种族、姿势、表情和背景杂乱的一些变化。集合了大量化妆风格,包括烟熏妆风格、华丽妆风格、复古妆风格、韩妆风格和日妆风格,从细腻到浓烈。具体而言,还有一些裸妆图像,为了方便,已归类为无妆类别。初始数据来自于网络爬取。我们手动删除在不良照明条件下的低分辨率图像。然后,保留的图像进行68个标志点的人脸对齐。根据两眼位置,将它们变换为相同的空间大小256×256。在3834张图像中,我们随机选择100张无妆图像和250张化妆图像进行测试。其余图像分为训练集和验证集。

MT是迄今为止最大的化妆数据集,与其他已发布的化妆数据集相比。现有的化妆数据集大多由不超过1000张图像组成。它们通常为一个对象组装一对图像:化妆前图像和化妆后图像对。尽管这种配对图像中获取的是同一对象,但它们在视图上有所不同:姿势、表情甚至照明。通常,它们用于研究化妆在人脸识别中的影响,不适用于化妆迁移任务。MT数据集包含多种化妆风格和超过3000个对象。化妆数据集之间的详细比较见表1。MT数据集的例子如图3所示。

5. 实验

在本节中,我们描述了网络架构和训练设置。所有实验均应用我们发布的相同MT数据集。我们从定性和定量的角度比较我们的方法与其他基线的性能。并进一步对BeautyGAN的组成部分进行详细分析。

5.1 实现细节

网络架构。我们设计了带有两个输入和两个输出的生成器 G G G。具体来说,网络包含两个分别带有卷积的独立输入分支。在中间,我们将这两个分支连接起来,并将它们输入到几个残差块中。然后,输出特征图将通过两个独立的反卷积分支进行上采样,以生成两个结果图像。注意,这些分支在各层中不共享参数。我们还对 G G G使用实例归一化。对于判别器 D A D_A DA D B D_B DB,我们采用相同的70×70 PatchGANs,它将局部重叠图像块分类为真实或伪造。

训练细节。为了稳定训练过程并生成高质量图像,我们采用了两种额外的训练策略。首先,受CycleGAN启发,我们将对抗损失中的所有负对数似然目标替换为最小二乘损失。例如,公式1定义如下,同样适用于公式2和4:

L D A = E I s r c [ ( D A ( I s r c ) − 1 ) 2 ] + E I s r c , I r e f [ D A ( I r e f A ) 2 ] L_{D_A} = \mathbb{E}_{I_{src}} [(D_A(I_{src}) - 1)^2] + \mathbb{E}_{I_{src}, I_{ref}} [D_A(I_{ref}^A)^2] LDA=EIsrc[(DA(Isrc)1)2]+EIsrc,Iref[DA(IrefA)2]

其次,我们引入谱归一化

以稳定训练判别器。它计算量轻且易于整合,满足利普希茨约束:

W S N ( W ) : = W σ ( W ) W_{SN}(W) := \frac{W}{\sigma(W)} WSN(W):=σ(W)W

其中 σ ( W ) \sigma(W) σ(W) W W W的谱范数,表示为:

σ ( w ) : = max ⁡ h : h ≠ 0 ∥ W h ∥ 2 ∥ h ∥ 2 = max ⁡ ∥ h ∥ 2 ≤ 1 ∥ W h ∥ 2 \sigma(w) := \max_{h:h\neq0} \frac{\|Wh\|_2}{\|h\|_2} = \max_{\|h\|_2 \leq 1} \|Wh\|_2 σ(w):=h:h=0maxh2Wh2=h21maxWh2

这里, h h h是每层的输入。

在所有实验中,我们通过PSPNet获得不同面部区域的注释标签掩码。用于保持身份的VGG16网络的relu_4_1特征层被应用。这样的VGG16在ImageNet上预训练,并在整个训练过程中固定参数。公式3和9中的参数为: λ a d v = 1 \lambda_{adv} = 1 λadv=1 λ c y c = 10 \lambda_{cyc} = 10 λcyc=10 λ p e r = 0.005 \lambda_{per} = 0.005 λper=0.005 λ l = 1 \lambda_l = 1 λl=1 λ s = 1 \lambda_s = 1 λs=1 λ f = 0.1 \lambda_f = 0.1 λf=0.1。我们使用Adam从头开始训练网络,学习率为0.0002,批量大小为1。

5.2 基线

Digital Face Makeup 是一种早期的化妆迁移工作,采用传统图像处理方法。

DTN 是最先进的化妆迁移工作。它提出了一种局部化妆迁移网络,独立地迁移不同的化妆品。

Deep Image Analogy 是一项最新的工作,实现了跨两个语义相关图像的视觉属性迁移。它采用图像类比来匹配从深度神经网络中提取的特征。我们将其应用于化妆迁移任务进行比较。

CycleGAN 是一种代表性的无监督图像到图像翻译工作。为了适应化妆迁移任务,我们在其中修改了生成器,使用两个分支作为输入,但保持所有其他架构和设置不变。

Style Transfer 是一种相关工作,训练了一个前馈网络,用于从各自的图像中合成风格和内容信息。我们采用无妆图像作为内容,参考化妆图像作为风格进行实验。

5.3 与基线的比较

定性评估。如图4所示,我们展示了与基线的定性比较结果。我们观察到,尽管Guo等人生成的图像上有化妆,但结果都有明显的伪影。看起来像一个假面具附在无妆脸上。面部和眼睛轮廓周围出现不匹配问题。一些错误的细节被迁移,如第二行和第四行的黑色眼影被迁移为蓝色。Liu等人独立地迁移不同的化妆品,导致眼睛区域和嘴唇区域周围的对齐伪影。粉底和眼影也没有正确迁移。风格迁移生成的图像引入了颗粒状伪影,降低了图像质量。它通常迁移全局风格,如绘画笔触,因此不适用于精细的化妆风格迁移。与上述方法相比,CycleGAN可以生成相对真实的图像。然而,化妆风格与参考不一致。Liao等人生成的输出具有与参考图像相似的化妆风格,并显示出自然的结果。然而,它不仅迁移面部化妆,还迁移参考图像中的其他特征。例如,第三张图像将背景颜色从黑色变为灰色,第四张图像改变了头发颜色,所有图像都修改了瞳孔颜色以与参考图像相似。此外,它迁移的化妆风格比参考图像轻,尤其是在口红和眼影方面。

与基线相比,我们的方法生成的高质量图像上具有最准确的化妆风格,无论是在眼影、口红还是粉底方面进行比较。例如,在第二行,只有我们的结果迁移了参考图像中的黑色眼影。结果还显示BeautyGAN保持了原始无妆图像中的其他与化妆无关的组件,如头发、衣服和背景。在图5中,我们放大了眼妆和口红迁移的表现,以更好地展示比较。更多结果见补充文件。

定量比较。为了对BeautyGAN进行定量评估,我们进行了用户研究,参与者包括84名志愿者。我们随机选择了10张无妆测试图像和20张化妆测试图像,每种化妆迁移方法将获得10×20个化妆后结果。两种代表性基线方法进行比较:Liao等人和Liu等人。每次,我们展示五张图像,包括一张无妆图像、一张作为参考的化妆图像和三张随机排列的化妆迁移图像。参与者被指示根据质量、真实感和化妆风格相似性对三张生成的图像进行排名。排名1表示最佳化妆迁移表现,而排名3表示最差。

表3显示了结果。对于每种方法,我们对票数进行归一化,并获得三种排名的百分比。BeautyGAN有61.84%的结果排名第一,而Liao等人为33.91%,Liu等人为4.25%。此外,BeautyGAN在排名3列中的比例最低。我们观察到BeautyGAN大多被评为排名1,Liao等人主要分布在排名2,Liu等人则大多票数在排名3。用户研究表明,我们的方法优于其他基线。

5.4 BeautyGAN的组件分析

为了研究整体目标函数中每个组件的重要性,我们进行了消融研究。我们主要分析感知损失项和化妆损失项的效果。因此,实验始终包含对抗损失和循环一致性损失。表2显示了设置,图6展示了结果。

在实验A中,我们从公式3中移除感知损失项。在这种情况下,结果都是像素级扭曲和合并的假图像。相反,包含感知损失项的其他实验显示无妆脸的身份得以保留。因此,这表明感知损失有助于保持图像身份。

实验B、C、D、E旨在研究化妆损失项,该项由作用于不同化妆区域的三个局部直方图损失组成: L f a c e L_{face} Lface L s h a d o w L_{shadow} Lshadow L l i p s L_{lips} Llips。在实验B中,我们直接从公式3中移除化妆损失。我们发现生成的图像在肤色和口红上略有修改,但没有从参考图像迁移化妆风格。然后我们在实验C、D、E中依次添加 L f a c e L_{face} Lface L s h a d o w L_{shadow} Lshadow L l i p s L_{lips} Llips。列C显示了粉底成功从参考图像迁移的结果。在粉底迁移的基础上,实验D在其中添加了眼影约束 L s h a d o w L_{shadow} Lshadow。我们观察到局部眼妆也被迁移。列E是使用整体化妆损失训练的结果。它显示与列D相比,还迁移了口红。总之,化妆损失对实例级化妆迁移是必要的。化妆损失的三项分别在粉底、眼影和口红迁移中起作用。

6. 结论与未来工作

在本文中,我们提出了一种双输入/输出BeautyGAN用于实例级面部化妆迁移。通过一个生成器,BeautyGAN可以在一个前向传递中同时实现化妆和去化妆。我们引入像素级直方图损失来约束化妆风格的相似性。为了保持身份,引入了感知损失和循环一致性损失。实验结果表明,我们的方法在现有方法上取得了显著性能提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/380717.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务设计原则——高性能:锁

文章目录 1.锁的问题2.无锁2.1 串行无锁2.2 无锁数据结构 3.减少锁竞争参考文献 1.锁的问题 高性能系统中使用锁,往往带来的坏处要大于好处。 并发编程中,锁带解决了安全问题,同时也带来了性能问题,因为锁让并发处理变成了串行操…

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册 前言: 什么是 MySQL? MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,…

Kafka Producer发送消息流程之消息异步发送和同步发送

文章目录 1. 异步发送2. 同步发送 1. 异步发送 Kafka默认就是异步发送,在Main线程中的多条消息,没有严格的先后顺序,Sender发送后就继续下一条,异步接受结果。 public class KafkaProducerCallbackTest {public static void mai…

JVM:JavaAgent技术

文章目录 一、Java工具的介绍二、Java Agent技术1、介绍2、静态加载模式3、动态加载模式 三、搭建java agent静态加载模式环境1、创建maven项目2、编写类和premain方法3、编写MANIFEST.MF文件4、使用maven-assembly-plugin进行打包5、创建Spring Boot应用 一、Java工具的介绍 …

C++ | Leetcode C++题解之第240题搜索二维矩阵II

题目&#xff1a; 题解&#xff1a; class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m matrix.size(), n matrix[0].size();int x 0, y n - 1;while (x < m && y > 0) {if (matrix[x][y] targ…

HTML5大作业三农有机,农产品,农庄,农旅网站源码

文章目录 1.设计来源1.1 轮播图页面头部效果1.2 栏目列表页面效果1.3 页面底部导航效果 2.效果和源码2.1 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_4…

Spring3(代理模式 Spring1案例补充 Aop 面试题)

一、代理模式 在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能&#xff0c;这种类型的设计模式属于结构型模式。 代理模式通过引入一个代理对象来控制对原对象的访问。代理对象在客户端和目标对象之间充当中介&#xff0c;负责将客户端…

Visual Studio 2022美化

说明&#xff1a; VS版本&#xff1a;Visual Studio Community 2022 背景美化 【扩展】【管理扩展】搜索“ClaudiaIDE”&#xff0c;【下载】&#xff0c;安装完扩展要重启VS 在wallhaven下载壁纸图片作为文本编辑器区域背景图片 【工具】【选项】搜索ClaudiaIDE&#xff…

基于python深度学习遥感影像地物分类与目标识别、分割实践技术应用

目录 专题一、深度学习发展与机器学习 专题二、深度卷积网络基本原理 专题三、TensorFlow与Keras介绍与入门 专题四、PyTorch介绍与入门 专题五、卷积神经网络实践与遥感图像场景分类 专题六、深度学习与遥感图像检测 专题七、遥感图像检测案例 专题八、深度学习与遥感…

四、GD32 MCU 常见外设介绍

系统架构 1.RCU 时钟介绍 众所周知&#xff0c;时钟是MCU能正常运行的基本条件&#xff0c;就好比心跳或脉搏&#xff0c;为所有的工作单元提供时间 基数。时钟控制单元提供了一系列频率的时钟功能&#xff0c;包括多个内部RC振荡器时钟(IRC)、一个外部 高速晶体振荡器时钟(H…

《背包乱斗》为什么好玩 苹果电脑怎么玩《背包乱斗》游戏 mac怎么玩steam windows游戏

在当今竞争激烈的游戏市场中&#xff0c;《背包乱斗》以其独特的魅力在众多作品中脱颖而出&#xff0c;吸引了大量玩家的关注和喜爱。其创新的游戏机制和不断迭代的内容&#xff0c;加之出色的视觉效果和社区建设&#xff0c;使其成为了游戏界的一股清流。 一、《背包乱斗》为…

【计算机视觉】siamfc论文复现实现目标追踪

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置)&#xff0c;来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…

jmeter部署

一、windows环境下部署 1、安装jdk并配置jdk的环境变量 (1) 安装jdk jdk下载完成后双击安装包&#xff1a;无限点击"下一步"直到完成&#xff0c;默认路径即可。 (2) jdk安装完成后配置jdk的环境变量 找到环境变量中的系统变量&#xff1a;此电脑 --> 右键属性 …

Figma 中文版指南:获取和安装汉化插件

Figma是一种主流的在线团队合作设计工具&#xff0c;也是一种基于 Web 端的设计工具。在当今的设计时代&#xff0c;Figma 的使用满足了每个人的设计需求&#xff0c;不仅可以实现在线编辑&#xff0c;还可以方便日常管理&#xff0c;有效提高工作效率。然而&#xff0c;相信很…

RPM、YUM 安装 xtrabackup 8 (mysql 热备系列一)包含rpm安装 mysql 8 配置主从

RPM安装 percona-xtrabackup-80-8.0.35-30.1.el7.x86_64.rpm 官网&#xff1a; https://www.percona.com/ 下载地址&#xff1a; https://www.percona.com/downloads wget https://downloads.percona.com/downloads/percona-distribution-mysql-ps/percona-distribution-mysq…

【Vue3】响应式数据

【Vue3】响应式数据 背景简介开发环境基本数据类型对象数据类型使用 reactive 定义对象类型响应式数据使用 ref 定义对象类型响应式数据 ref 和 reactive 的对比使用原则建议 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0…

Linux系统之部署扫雷小游戏(三)

Linux系统之部署扫雷小游戏(三) 一、小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看apache2服…

项目管理进阶之RACI矩阵

前言 项目管理进阶系列续新篇。 RACI&#xff1f;这个是什么矩阵&#xff0c;有什么用途&#xff1f; 在项目管理过程中&#xff0c;如Team规模超5以上时&#xff0c;则有必要采用科学的管理方式&#xff0c;满足工作需要。否则可能事倍功半。 Q&#xff1a;什么是RACI矩阵 …

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理

【HarmonyOS】HarmonyOS NEXT学习日记&#xff1a;五、交互与状态管理 在之前我们已经学习了页面布局相关的知识&#xff0c;绘制静态页面已经问题不大。那么今天来学习一下如何让页面动起来、并且结合所学完成一个代码实例。 交互 如果是为移动端开发应用&#xff0c;那么交…

Unity Apple Vision Pro 开发(四):体积相机 Volume Camera

文章目录 &#x1f4d5;教程说明&#x1f4d5;教程内容概括&#x1f4d5;体积相机作用&#x1f4d5;创建体积相机&#x1f4d5;添加体积相机配置文件&#x1f4d5;体积相机配置文件参数&#x1f4d5;体积相机的边界盒大小&#x1f4d5;体积相机边界盒大小和应用边界盒大小的区别…