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

news2024/11/13 15:10:50

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.coloradmin.cn/o/1931277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NSSCTF中24网安培训day2中web题目【下】

[NISACTF 2022]easyssrf 这道题目考察的是php伪协议的知识点 首先利用file协议进行flag查找 file:///flag.php 接着我们用file协议继续查找fl4g file:///fl4g 接着我们访问此文件,得到php代码如下 这里存在着stristr的函数&#x…

AI视频教程下载-ChatGPT速成课程:工作中的ChatGPT入门

使用ChatGPT提升你的生产力:利用OpenAI的革命性ChatGPT模型。 你准备好深入人工智能交流的世界,彻底改变你的职业生涯了吗?本课程适合技术背景和非技术背景的人士,它以独特、有趣且专业的方式,教授如何使用OpenAI的Ch…

【鸿蒙OS】【ArkUI】鸿蒙OS UI布局适配终极攻略

鸿蒙OS UI布局适配终极攻略 像素适配大法,此方法也适合Android ArkUI为开发者提供4种像素单位,框架采用vp为基准数据单位。 vp相当于Android里的dp fp相当于Android里的sp 官方是如何定义的呢,如下图 今天我来教大家如何用PX做到ArkUI的终级适配&…

【python】Pandas 运行报错分析:KeyError: Label not found

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Docker基本讲解及演示

Docker安装教程 Docker安装教程 1、Docker介绍 Docker是一个开源的应用容器引擎,允许开发者将应用程序及其依赖项打包成一个轻量级、可移植的容器,然后发布到任何支持 Docker 的环境中运行,无论是开发机、测试机还是生产环境。 Docker基于…

CentOS 7 网络配置

如想了解请查看 虚拟机安装CentOS7 第一步:查看虚拟机网络编辑器、查看NAT设置 (子网ID,网关IP) 第二步:配置VMnet8 IP与DNS 注意事项:子网掩码与默认网关与 第一步 保持一致 第三步:网络配置…

EXCEL VBA工程密码破解 工作表保护破解

这里写目录标题 破解Excel宏工程加密方法一 新建破解宏文件方法二 修改二进制文件 破解工作表保护引用 破解Excel宏工程加密 如图所示 白料数据处理已工程被加密。 方法一 新建破解宏文件 1 创建一个XLSM文件,查看代码 ALTF11 2 新建一个模块,“插…

打包一个自己的Vivado IP核

写在前面 模块复用是逻辑设计人员必须掌握的一个基本功,通过将成熟模块打包成IP核,可实现重复利用,避免重复造轮子,大幅提高我们的开发效率。 接下来将之前设计的串口接收模块和串口发送模块打包成IP核,再分别调用…

Vue+Echarts做图表展示

1.Echarts安装 终端运行安装命令: npm install echarts -s 在main.js做全局引用: //引入echarts import * as echarts from echarts //vue全局注入echarts Vue.prototype.$echarts echarts; 2.页面使用Echarts画柱状图和饼图 效果: 代码展…

Qt各个版本安装的保姆级教程

文章目录 前言Qt简介下载Qt安装包安装Qt找到Qt的快捷方式总结 前言 Qt是一款跨平台的C图形用户界面应用程序开发框架,广泛应用于桌面软件、嵌入式软件、移动应用等领域。Qt的强大之处在于其高度的模块化和丰富的工具集,可以帮助开发者快速、高效地构建出…

esplice老项目(非maven)导入idea问题

解决导入idea显示不正常 老项目导入idea后,显示为如下所示: 显示的不太正常,正常显示为下面这个样子: 解决 非老项目 idea的项目中所有的文件全部变成了.java(已解决) 老项目 以下内容参考:idea导入项目后java文…

阿里云CDN架构技术(一)

CDN补充 cdn内容分发网络(content delivery network,cdn) 构建在互联网TCP/IP四层模型之上对用户透明的覆盖网。 该网络通过全球范围内分布式部署边缘服务器,将互联网内容从互联网中心缓存到靠近用户的边缘服务器上,…

SymPy,一个可以做数学题的Python库,如何使用SymPy进行微积分计算?

SymPy 是一个 Python 库,用于符号数学。这意味着 SymPy 可以帮助用户执行从基本代数到微积分、方程求解、积分、极限、级数、几何、组合数学、离散数学和量子物理等广泛的数学计算。它允许用户以完全符号化的方式处理数学表达式,而无需将问题转换为数值近…

大模型的“幻觉”克星!被低估的RAG技术

1 RAG与大模型、Prompt、微调的关系 本文主要带大家深入学习一下最近AI领域的重要技术RAG,本文致力于用大白话给大家说明白RAG,但是还是需要一些大模型和微调有关的领域名词有一些基本的了解,大家选择性阅读哦!在进行正文学习之前我们先用一…

Unity Meta Quest 开发:如何在每只手指上添加 Poke 交互

XR 开发社区: SpatialXR社区:完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 找到玩家物体 OVRCameraRig 下的子物体 HandInteractorsRight/Left(分别管理左右手的 Interactor)下的 HandPokeInteractor 子物体&#x…

Java语言程序设计——篇五

数组 概述数组定义实例展示实战演练 二维数组定义数组元素的使用数组初始化器实战演练:矩阵计算 💫不规则二维数组实战演练:杨辉三角形 概述 ⚡️数组是相同数据类型的元素集合。各元素是有先后顺序的,它们在内存中按照这个先后顺…

计算机的错误计算(三十三)

摘要 计算机的错误计算(三十二)展示了 Python的 math库中 exp(x)的计算精度问题。本节讨论 Python 的 torch 库中的 exp(x)的计算精度问题。结果显示:与 math 库中的函数输出值具有同样的错误数字个数。 不妨仍然取(二十八&…

华为云.VPC关联概念与对等连接实践

云计算.华为云 VPC关联概念与对等连接实践 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/q…

使用SpringCloud搭建分布式配置中心

在现代的分布式系统中,配置管理是一个非常重要的组成部分。传统的做法是将配置文件放在每个服务的本地进行配置,这样的做法在规模较小的系统中还能够接受,但是当系统规模逐渐扩大时,配置管理将变得非常困难,容易出错。…

Autosar Dcm配置-0x28服务ComControl-基于ETAS软件

文章目录 前言DcmDcmDsdDcmDspBswMBswMModeRequestPortBswMModeConditionBswMLogicalExpressionBswMActionBswMActionListBswMRule总结前言 0x28服务主要用来控制非诊断报文的通讯,一般在刷写预编程过程中,用来禁止APP的通信报文,可以减少总线负载率,提高刷写成功率。本文…