(starGAN)StarGAN: Unified Generative Adversarial Networksfor Multi-Domain Image-to-Image Translatio

论文:https://arxiv.org/pdf/1711.09020.pdf

源码:GitHub - yunjey/stargan: StarGAN - Official PyTorch Implementation (CVPR 2018)

摘要

        近年来,在两个源域的图像-图像转换研究取得了显著的成功。然而,现有的方法在处理两个以上的域时扩展性和鲁棒性有限,因为每一对图像域都需要独立构建不同的模型。为了解决这一限制,我们提出了StarGAN,这是一种新颖的、可伸缩的方法,可以只使用一个模型就可以在多个领域执行图像到图像的转换。StarGAN的这种统一模型架构允许在单个网络中同时训练多个具有不同域的数据集。这导致StarGAN的翻译图像的质量优于现有模型,以及灵活地翻译输入图像到任何期望的目标域的新能力。我们的实验证明了该方法在人脸属性转移和面部表情合成任务中的有效性。

1. Introduction

        图像到图像转换的任务是将给定图像的一个特定方面改变为另一个方面,例如,将一个人的面部表情从微笑改变为皱眉(见图1)。随着生成对抗网络(GANs)的引入,这项任务已经经历了显著的改进,结果包括改变头发颜色[8],从边缘地图[7]重建照片,以及改变风景图像的季节[32]。

        给定来自两个不同领域的训练数据,这些模型学习将图像从一个领域转换到另一个领域。我们将术语“属性”表示为图像中固有的有意义的特征,如头发颜色、性别或年龄,而属性值表示属性的特定值,例如“black/blond/brown”表示头发颜色,“male/female”表示性别。我们进一步将域表示为共享相同属性值的一组图像。例如,女性的图像可以代表一个领域,而男性的图像可以代表另一个领域。

        一些图像数据集带有许多标记属性。例如,CelebA[18]数据集包含40个与面部属性相关的标签,如头发颜色、性别和年龄,而RaFD[12]数据集有8个关于面部表情的标签,如“高兴”、“生气”和“悲伤”。这些设置使我们能够执行更有趣的任务,即多域图像到图像的转换,即根据多个域的属性改变图像。图1中的前五列显示了如何根据四个域中的任何一个来翻译CelebA图像,“金发”,“性别”,“年龄”和“苍白的皮肤”。我们可以进一步扩展到从不同的数据集训练多个域,例如联合训练CelebA和RaFD图像,利用在RaFD上训练学到的特征来改变CelebA图像的面部表情,如图1最右边的列所示。

        然而,现有的模型在多域图像翻译任务中都是低效和无效的。它们的低效是由于为了学习k个源域之间的所有映射,必须训练k(k−1)个生成器。图2说明了如何训练12个不同的生成器网络来转换四个不同领域中的图像。同时,即使存在可以从人脸形状等所有领域的图像中学习的全局特征,但每个生成器都不能充分利用整个训练数据,只能从k中的两个领域进行学习,这是无效的。不能充分利用训练数据可能会限制生成图像的质量。此外,它们无法联合训练来自不同数据集的域,因为每个数据集都是部分标记的,这一点我们将在章节3.2中进一步讨论。

        为了解决这些问题,我们提出了StarGAN,一个生成对抗网络,能够学习多个领域之间的映射。如图2(b)所示,我们的模型接受多个域的训练数据,只使用一个生成器学习所有可用域之间的映射。这个想法很简单。而不是学习固定的翻译。我们的模型将图像和域信息同时作为输入,学习如何灵活地将输入的图像转换到相应的域。我们使用一个标签(例如,二进制或一个热点向量)来表示域信息。在训练过程中,我们随机生成一个目标域标签,并训练模型灵活地将输入图像转换到目标域。通过这样做,我们可以控制域标签,并在测试阶段将图像转换为任何需要的域。

(starGAN)StarGAN: Unified Generative Adversarial Networksfor Multi-Domain Image-to-Image Translatio_第1张图片 图2  跨领域模型与我们提出的模型StarGAN的比较。(a)要处理多个域,需要为每一对图像域建立跨域模型。(b) StarGAN能够使用单个生成器学习多个域之间的映射,该图表示连接多个域的星型拓扑。

        我们还介绍了一种简单而有效的方法,通过在域标签中添加掩码向量来实现不同数据集域之间的联合训练。我们提出的方法确保模型可以忽略未知的标签并聚焦于特定数据集提供的标签。在
这种方式下,我们的模型可以很好地执行任务,比如利用从RaFD学到的特征合成CelebA图像的面部表情,如图1最右边的列所示。据我们所知,我们的工作是第一个成功地执行跨不同数据集的多领域图像翻译。

        总的来说,我们的贡献如下:

  • 我们提出了一种新的生成对抗网络StarGAN,它只使用一个生成器和一个判别器学习多个域之间的映射,有效地从所有域的图像中训练。
  • 我们演示了如何通过使用掩码向量方法成功学习多域图像在多个数据集之间的转换,该方法使StarGAN能够控制所有可用的域标签。
  • 我们使用StarGAN提供了面部属性转移和面部表情合成任务的定性和定量结果,表明其优于基线模型。

2. Related Work 

        Generative Adversarial Networks。生成对抗网络(GANs)[3]在各种计算机视觉任务中显示了显著的结果,如图像生成[1,6,23,31],图像翻译[7,8,32],超分辨率成像[13],以及人脸图像合成[9,15,25,30]。一个典型的GAN模型包括两个模块:判别器和生成器。鉴别器学习区分真样本和假样本,而生成器学习生成与真实样本难以区分的假样本。我们的方法还利用了对抗性损失,使生成的图像尽可能真实。

        Conditional GANs。基于GAN的条件图像生成也得到了积极的研究。以往的研究都为判别器和生成器提供了类信息,以便生成以类为条件的样本[19,20,21]。其他最近的方法集中于生成与给定文本描述高度相关的特定图像[24,29]。条件图像生成的思想也成功地应用于域转移[8,27]、超分辨率成像[13]和照片编辑[2,26]。在本文中,我们提出了一个可扩展的GAN框架,通过提供条件域信息,可以灵活地引导图像平移到各个目标域。

        Image-to-Image Translation。最近的工作在图像到图像的翻译方面取得了令人印象深刻的成果[7,8,16,32]。例如,pix2pix[7]使用CGAN[19]以监督的方式学习这个任务。它结合了对抗性损失和L1损失,因此需要成对的数据样本。为了缓解获取数据对的问题,未配对的图像到图像的翻译框架被提出[8,16,32]。UNIT[16]结合了变分自动编码器(VAEs)[11]和CoGAN[17],一个GAN框架,其中两个生成器共享权来学习图像在跨域的联合分布。CycleGAN[32]和DiscoGAN[8]利用循环一致性损失保持输入和翻译图像之间的关键属性。然而,所有这些框架一次只能学习两个不同领域之间的关系。他们的方法在处理多个域时具有有限的可伸缩性,因为应该针对每一对域训练不同的模型。与前面提到的方法不同,我们的框架只使用一个模型就可以学习多个领域之间的关系。

3. Star Generative Adversarial Networks

        我们首先描述我们提出的StarGAN,一个在单个数据集中处理多领域图像到图像转换的框架。然后,我们讨论StarGAN如何整合包含不同标签集的多个数据集,以灵活地使用这些标签执行图像翻译。

3.1. Multi-Domain Image-to-Image Translation

        我们的目标是训练一个学习多个域之间映射的单一生成器。为了实现这一点,我们训练将一个输入图像转换为一个基于目标域标签c,G(x,c)\rightarrow y的输出图像。我们随机地生成目标域标签,以便灵活地转换输入图像。我们还介绍了一个辅助分类器[21],它允许一个识别器控制多个域。也就是说,我们的鉴别器产生了源和域标签的概率分布D:x\rightarrow \left \{ D_{src}(x),D_{cls}(x) \right \}。图3为我们提出的方法的训练过程。

        鉴别器D学习去辨别真实图像和生成图像,以及对图像进行所属域的分类(两个输出)。生成器接受图像和目标域标签(两个输入),生成假的图像。

(starGAN)StarGAN: Unified Generative Adversarial Networksfor Multi-Domain Image-to-Image Translatio_第2张图片 图3  StarGAN的简介,由两个模块组成,一个discriminatord和一个generatorG
(a) 判别器D区分真假图像,并将真假图像分类到对应的域;(b) 生成器G将图像和目标域标签作为输入,生成假图像。将目标域标签与输入图像进行空间复制并拼接;(c)生成器G尝试从给定原域标签的假图像中重建原始图像;(d)生成器G尝试生成与真实图像难以区分但通过判别器D可归类为目标域的图像。

        对于判别器,它的输入是一张图片,它需要去鉴别出这张图片是真实图片还是生成器产生的图片,同时它还需要分辨出这张输入的图片来自于哪个domain(哪种风格)两个输出。对于生成器,它有两个输入,分别是目标domain 和输入图片两个输入,它的输出是一张符合目标domain 风格的图片。

        首先目标domain 和输入图片会被输入到生成器当中,然后生成器产生的伪造图片一方面会被传给判别器(右图),判别器会判别这张图片的真假以及domain 分类是哪,另一方面这个伪造图片会被再次传回给这个生成器(中图),不过目标domain 改成了原始的来源domain,那模型会希望第二次输出的图片能和最开始的输入图片尽可能相似。其实整套训练流程与CycleGAN 是非常相似的,不同之处在于CycleGAN 使用了两个生成器做风格的来回变换,而在StarGAN 中仅使用了一个生成器实现这一变换。

         Adversarial Loss。为了使生成的图像与真实图像难以区分,我们采用了对抗性损失。

其中G生成一个图像G(x,c),生成条件是输入图像和目标域标签c,而判别器D试图区分真实和虚假图像。在本文中,我们将D_{src}(x)作为给定D的源的概率分布。生成器D尝试最小化这个目标,而判别器D尝试最大化这个目标。

        Domain Classification Loss。对于给定的输入图像和目标域标签,我们的目标是将其转换为输出图像,该输出图像被适当地分类为目标域c。为了达到这一目的,我们在D的top的基础上增加了一个辅助分类器,同时在对D和G进行优化的时候增加了域分类损失。即我们将目标分解为两项:用于优化D的真实图像的域分类损失和用于优化G的假图像的域分类损失。具体将前者定义为:

        其中D_{cls}(c ' |x)表示计算D的域标签上的概率分布。通过最小化这一目标,D学习将真实图像分类到其对应的原始域。我们假设输入图像和域标签对(x, c ')是由训练数据给出的。另一方面,将用于伪图像域分类的损失函数定义为:

 换句话说,G尝试将这个目标最小化,以生成可以分类为目标域的图像。

        Reconstruction Loss。通过最小化对抗性和分类损失,G被训练生成真实的图像并分类到正确的目标域。然而,最小化损失(公式(1)和(3))并不能保证翻译后的图像保留其输入图像的内容,而只改变输入中与域相关的部分。为了缓解这个问题,我们对生成器应用循环一致性损失[8,32],定义为

其中,以翻译后的图像G(x,c)和原始域标签c'为输入,尝试重构原始图像x。我们采用L1规范作为重建损失。注意,我们使用单个生成器两次,第一次是将原始图像转换为目标域中的图像,然后从翻译后的图像重建原始图像。

        Full Objective。最后,将G和D的优化的目标函数分别写成:

其中,与对抗损失相比,\lambda_{cls},\lambda_{rec}都是超参数,分别控制域分类和重构损失的相对重要性。在所有的实验中,我们使用\lambda_{cls}=1,\lambda_{rec}=10

3.2. Training with Multiple Datasets

        StarGAN的一个重要优点是它可以同时包含多个包含不同类型标签的数据集,这样StarGAN就可以在测试阶段控制所有的标签。然而,从多个数据集学习时的一个问题是,每个数据集只知道部分标签信息。以CelebA[18]和RaFD[12]为例,虽然前者包含了诸如头发颜色和性别等属性的标签,但它没有任何关于“高兴”和“生气”等面部表情的标签,反之亦然。这是有问题的,因为当从翻译后的图像G(x, c)重建输入图像时,需要标签向量c '上的完整信息(见公式(4))。

        Mask Vector。为了缓解这个问题,我们引入了掩码向量,它允许StarGAN忽略未指定的标签,而专注于特定数据集提供的显式已知标签。在StarGAN中,我们使用一个一维的热向量来表示数据集的数量。此外,我们定义标签的一个统一版本作为一个向量

其中[·]表示拼接,c_i表示第i个数据集的标签向量。已知标签能的向量可以表示为二进制属性的向量,也可以表示为类别属性的单热向量。对于剩下的n - 1未知的标签,我们只是赋值为零。在我们的实验中,我们利用了CelebA和RaFD数据集,其中有两个。

        Training Strategy。当用多个数据集训练StarGAN时,我们使用Eq.(7)中定义的域标签作为输入到生成器。通过这样做,生成器学会忽略未指定的标签,即零向量,并聚焦于显式给出的标签。生成器的结构与训练中的单个数据集完全相同,除了输入标签的维度。另一方面,我们扩展了鉴别器的辅助分类器来生成所有数据集上标签的概率分布。然后,我们在多任务学习设置中训练模型,其中识别器尝试最小化与已知标签相关的分类错误。例如,当使用CelebA中的图像进行训练时,鉴别器只最小化与CelebA属性相关的标签的分类错误,而不是与RaFD相关的面部表情。在这些设置下,通过在CelebA和RaFD之间交替,鉴别器学习两个数据集的所有鉴别特征,而生成器学习控制两个数据集中的所有标签。

6. Conclusion

        在本文中,我们提出了StarGAN,一个可扩展的图像-图像在多个领域之间的转换模型,使用一个单一的生成器和一个鉴别器。除了在可扩展性方面的优势外,StarGAN生成的图像与现有方法相比具有更高的视觉质量[15,22,32],这得益于多任务学习设置背后的泛化能力。此外,使用所提出的简单掩码向量,StarGAN能够利用具有不同域标签集的多个数据集,从而处理来自这些数据集的所有可用标签。我们希望我们的工作能够让用户在多个领域开发有趣的图像翻译应用程序。

你可能感兴趣的:(PyTorch对抗生成网络,计算机视觉,深度学习,人工智能)