1. 论文相关
CVPR2018
2.摘要
2.1 摘要
最近的研究表明,在图像到图像的两个领域的翻译取得了显著的成功。然而,现有的方法在处理两个以上的域时具有有限的可伸缩性和健壮性,因为每对图像域都应该独立地构建不同的模型。为了解决这一局限性,我们提出了StarGAN,一种新的、可扩展的方法,它可以仅使用一个模型对多个域执行图像到图像的转换。StarGAN的这种统一模型体系结构允许在单个网络中同时训练具有不同域的多个数据集。这导致了与现有模型相比,StarGAN具有更高的翻译图像质量,以及灵活地将输入图像翻译到任何所需目标域的新能力。我们的实验证明了我们的方法在面部属性转移和面部表情合成任务上的有效性。
2.2 主要贡献
总的来说,我们的贡献如下:
(1)我们提出StarGAN,一种新的生成对抗网络,它只使用一个生成器和一个判别器来学习多个域之间的映射,从所有域的图像中有效地训练。
(2)我们演示了如何利用掩码向量方法(mask vector method)成功地学习多个数据集之间的多域图像转换,该方法使StarGAN能够控制所有可用的域标签。
(3)我们使用StarGAN提供了面部属性转移和面部表情合成任务的定性和定量结果,显示了其相对于基线模型的优势。
2.3 相关工作
(1)
(2)
3.星生对抗网络(Star Generative Adversarial Networks)
我们首先描述了我们提出的StarGAN,一个在单个数据集中处理多域图像到图像转换的框架。然后,我们讨论了StarGAN如何合并包含不同标签集的多个数据集,以便使用这些标签灵活地执行图像翻译。
3.1. 多域图像到图像转换(MultiDomain ImagetoImage Translation)
我们的目标是训练一个单一的生成器来学习多个域之间的映射。为了达到这一目的,我们训练将输入图像转换成基于目标域标签,的输出图像。我们随机生成目标域标签,以便学习灵活地转换输入图像。我们还引入了一个辅助分类器(auxiliary classifier)[22],它允许单个判别器控制多个域。也就是说,我们的判别器在源和域标签上产生概率分布(probability distributions):
图3说明了我们提出的方法的训练过程。
3.1.1 对抗性损失(Adversarial Loss)
为了使生成的图像与真实图像无法区分,我们采用了对抗性损失。
其中,根据输入图像和目标域标签生成器生成图像,同时尝试区分真实图像和伪图像。在本文中,我们将项称为源上的概率分布。生成器尝试最小化此目标,而判别器尝试将其最大化。
3.1.2 域分类损失(Domain Classification Loss)
对于给定的输入图像和目标域标签,我们的目标是将转换为输出图像,并将其正确分类到目标域。为了达到这个条件,我们在判别器的基础上增加了一个辅助分类器,并在对和进行优化时施加域分类损失。也就是说,我们将目标分解为两项:一项是用于优化的真实图像的域分类损失,另一项是用于优化的伪图像的域分类损失。具体来说,前者定义为:
其中,项表示由计算的域标签上的概率分布。通过最小化此目标,学习将真实图像分类到其对应的原始域。我们假设输入图像和域标签对由训练数据给出。另一方面,伪图像区域分类的损失函数定义为
换言之,尝试最小化此目标以生成可分类为目标域的图像。
3.1.3 重构损失(Reconstruction Loss)
通过最小化对抗和分类损失,训练生成真实的图像,并将其分类到正确的目标域。然而,最小化损失(等式(1)和(3))并不保证翻译后的图像在只改变输入的与域相关的部分的同时保留其输入图像的内容。为了缓解这个问题,我们对生成器应用循环一致性损失(cycle consistency loss)[9,33],定义为:
其中接受翻译图像和原始域标签作为输入并尝试重建原始图像。我们采用L1范数作为重建损失。注意,我们使用一个生成器两次,首先将原始图像转换为目标域中的图像,然后从转换后的图像重建原始图像。
3.1.4 完整的目标函数 (Full Objective)
最后,要优化的目标函数和分别写为:
其中和是分别控制域分类和重建损失相对于对抗损失的相对重要性的超参数。我们在所有的实验中使用和。
3.2. 多数据集训练(Training with Multiple Datasets)
StarGAN的一个重要优点是它同时合并了包含不同类型标签的多个数据集,因此StarGAN可以在测试阶段控制所有标签。然而,从多个数据集学习时的一个问题是,每个数据集只知道部分标签信息。在CelebA[19]和RaFD[13]的例子中,前者包含头发颜色和性别等属性的标签,而前者没有任何面部表情的标签,例如“高兴”和“生气”,后者则相反。这是有问题的,因为当从翻译的图像重建输入图像时,需要标签向量的完整信息(见公式(4))。
3.2.1 掩模向量(Mask Vector)
为了缓解这个问题,我们引入了一个掩码向量,它允许StarGAN忽略未指定的标签,并关注由特定数据集提供的显式已知标签。在StarGAN中,我们使用n维独热向量(n-dimensional one-hot vector)来表示,即数据集的数量。此外,我们将标签的统一版本定义为向量:
其中表示连接(concatenation),表示第个数据集标签的向量。已知标签的向量可以表示为二进制属性的二进制向量或类别属性的一个热向量。对于剩下的个未知标签,我们只需分配零值。在我们的实验中,我们使用了CelebA和RaFD数据集,n=2。
3.2.2 训练策略(Training Strategy)
当使用多个数据集训练StarGAN时,我们使用等式(7)中定义的域标签作为生成器的输入。通过这样做,生成器将学习忽略未指定(unspecified labels)的标签(零向量),并专注于显式给定的标签。生成器的结构与使用单个数据集进行训练时的结构完全相同,但输入标签的尺寸除外。另一方面,我们扩展了判别器的辅助分类器,为所有数据集生成标签上的概率分布。然后,我们在多任务学习环境中训练该模型,其中判别器尝试仅最小化与已知标签相关联的分类错误。例如,当使用CelebA中的图像进行训练时,判别器仅最小化与CelebA属性相关的标签的分类错误,而不最小化与RaFD相关的面部表情的分类错误。在这些设置下,通过在CelebA和RaFD之间交替,判别器学习两个数据集中的所有判别特征,生成器学习控制两个数据集中的所有标签。
4.实现(Implementation)
4.1 改进了gan训练(Improved GAN Training)
为了稳定训练过程并生成更高质量的图像,我们将等式(1)替换为有梯度惩罚的Wasserstein GAN目标,定义为:
其中,是沿着一对真实图像和生成的图像之间的直线均匀地采样。我们对所有实验使用。
4.2 网络架构(Network Architecture)
根据CycleGAN[33]改编,StarGAN具有由两个卷积层组成的生成器网络,其中两个卷积层的步长为2(用于下采样)、六个残差块(six residual blocks)[5]和两个转置卷积层的步长为2(用于上采样)。我们对生成器使用实例规范化(instance normalization)[29],但对判别器不使用规范化。我们利用PatchGAN[7,15,33]作为判别器网络,它对局部图像patches是真是假进行分类。有关网络体系结构的详细信息,请参阅附录(第7.2节)。
5. 实验
在这一部分中,我们首先通过进行用户研究来比较StarGAN和最近的面部属性转移方法。接下来,我们对人脸表情合成进行分类实验。最后,我们证明了StarGAN可以从多个数据集学习图像到图像的转换。我们所有的实验都是在训练阶段用看不见的图像输出的模型进行的。
5.1. 基线模型(Baseline Models)
作为我们的基线模型,我们采用DIAT[16]和Cycle-GAN[33],这两个模型都在两个不同的域之间执行图像到图像的转换。为了进行比较,我们为每一对两个不同的域多次训练这些模型。我们还采用IcGAN[23]作为基线,它可以使用cGAN[22]执行属性转移。
DIAT使用一个对抗损失来学习从到的映射,其中和分别是两个不同域和中的人脸图像。该方法在映射上的正则化项为,以保持源图像的身份特征,其中是在人脸识别任务中预先训练的特征提取器。
CycleGAN还使用对抗性损失来学习两个不同域和之间的映射。该方法通过循环一致性损失对映射进行正则化。
这种方法需要两个生成器和判别器为每对不同的域。
IcGAN将编码器与cGAN[22]模型结合起来。cGAN学习映射:,该映射生成一个同时基于潜在向量和条件向量的图像。此外,IcGAN还引入了一个编码器来学习cGAN的逆映射,和,这使得IcGAN只需改变条件向量和保留潜在向量就可以合成图像。
5.2. 数据集(Datasets)
5.2.1 CelebA
CelebFaces Attributes(CelebA)数据集[19]包含202599个名人的面部图像,每个图像都带有40个二进制属性。我们将初始大小为178×218的图像裁剪为178×178,然后将其大小调整为128×128。我们随机选取2000幅图像作为测试集,利用所有剩余图像作为训练数据。我们使用以下属性构建七个域:头发颜色(黑色、金色、棕色)、性别(男性/女性)和年龄(年轻/年老)。
5.2.2 RaFD
Radboud Faces Database(RaFD)[13]包含从67名参与者收集的4824张图像。每个参与者在三个不同的注视方向做八个面部表情,从三个不同的角度捕捉。我们将图像裁剪为256×256,其中人脸居中,然后将其大小调整为128×128。
5.3. 训练
所有的模型都使用Adam[11]进行训练,其值分别为和。对于数据增强,我们以0.5的概率水平翻转图像。我们在五次判别器更新后执行一次生成器更新,如[4]所示。所有实验的批大小都设置为16。在CelebA上的实验中,我们在前10个阶段训练所有学习率为0.0001的模型,并在后10个阶段将学习率线性衰减为0。为了弥补数据的不足,在使用RaFD进行训练时,我们对所有模型进行100个阶段的训练,学习率为0.0001,并在接下来的100个阶段应用相同的衰减策略。在一台NVIDIA Tesla M40 GPU上训练大约需要一天。
5.4. CelebA的实验结果(Experimental Results on CelebA)
我们首先将所提出的方法与单属性和多属性迁移任务的基线模型进行比较。考虑到所有可能的属性值对,我们对DIAT 和 CycleGAN等跨域模型进行了多次训练。在DIAT 和 CycleGAN的情况下,我们执行多步骤转换以合成多个属性(例如,在更改头发颜色后迁移性别属性)。
5.4.1 定性评估(Qualitative evaluation)
图4显示了CelebA上的面部属性转移结果。我们观察到,与跨域模型相比,我们的方法在测试数据上提供了更高的翻译结果的视觉质量。一个可能的原因是StarGAN通过多任务学习框架的正则化效应。换言之,与其训练模型执行容易过度拟合的固定翻译(如棕色到金发),不如训练模型根据目标域的标签灵活地翻译图像。这使得我们的模型能够学习适用于具有不同面部属性值的图像的多个域的可靠特征。
此外,与IcGAN相比,我们的模型在保留输入的面部特征方面显示出优势。我们推测这是因为我们的方法通过使用卷积层的激活图作为潜在的表示来维护空间信息,而不是像IcGAN那样仅仅使用低维的潜在向量。
5.4.2 定量评估方案(Quantitative evaluation protocol)
为了进行定量评估,我们使用Amazon Mechanical Turk (AMT)对单属性和多属性迁移任务(attribute transfer tasks)进行了两次用户研究。在给定输入图像的情况下,Turker被要求根据感知现实、属性转换质量和保持人物的原始身份来选择最佳生成图像。这些选项是从四种不同方法生成的四个随机排序图像。在一项研究中生成的图像在头发颜色(黑色、金色、棕色)、性别或年龄上都有一个属性转移。在另一项研究中,生成的图像包含属性传输的组合。每个Turker被问30到40个问题,其中有几个简单但合乎逻辑的问题来验证人类的努力。在每个用户研究中,在单次和多次转移任务中,验证的Turker数量分别为146和100。
5.4.3 定量结果
表1和表2分别显示了我们在单属性和多属性传输任务上的AMT实验结果。在所有情况下,StarGAN获得了最佳转移属性的多数选票。在表1中性别变化的情况下,我们的模型和其他模型之间的投票差异是微乎其微的(marginal),例如,StarGAN的39.1%对DIAT的31.4%。然而,在多属性变化中,例如表2中的‘G+A’情况,性能差异变得显著,例如,StarGAN的49.8%与IcGAN的20.3%,清楚地显示了StarGAN在更复杂的多属性转移任务中的优势。这是因为与其他方法不同,StarGAN可以通过在训练阶段随机生成目标域标签来处理涉及多个属性变化的图像转换。
5.5. RaFD的实验结果(Experimental Results on RaFD)
接下来,我们在rafd数据集上训练我们的模型,以学习合成面部表情的任务。为了比较stargan模型和基线模型,我们将输入域固定为“中性”表达式,但目标域在其余七个表达式中有所不同。
定性评估。如图5所示,Stargan在正确维护输入的个人身份和面部特征的同时,清晰地生成最自然的表情。虽然diat和cyclegan大多保留了输入的身份,但它们的许多结果显示模糊,无法保持输入中看到的锐度。icgan甚至无法通过生成男性图像来保留图像中的个人身份。
我们认为,stargan在图像质量方面的优势是由于其来自多任务学习环境的隐式数据增强效应。rafd图像包含相对较小的样本,例如每个域500个图像。当在两个域上训练时,diat和cyclegan一次只能使用1000个训练图像,但是stargan总共可以使用所有可用域中的4000个图像进行训练。这使得stargan能够正确地学习如何保持生成输出的质量和清晰度。
定量评估。为了进行定量评估,我们计算了合成图像上面部表情的分类误差。我们使用resnet-18体系结构在rafd数据集上训练了一个面部表情分类器(训练集和测试集的分割率为90%/10%),得到了接近完美的99.55%的准确率。然后,我们使用相同的训练集训练每个图像转换模型,并在相同的、不可见的测试集上执行图像转换。最后,我们使用上述分类器对这些翻译图像的表达进行分类。如表3所示,我们的模型达到了最低的分类误差,这表明我们的模型在所有比较方法中产生了最真实的面部表情。 方法参数分类误差
我们模型的另一个重要优点是所需参数数量的可伸缩性。表3的最后一列显示,stargan学习所有翻译所需的参数数量比diat小7倍,比cyclegan小14倍。这是因为stargan只需要一个生成器和鉴别器对,而不考虑域的数量,而在跨域模型(如cyclegan)的情况下,应该为每个源-目标域对训练完全不同的模型。
5.6. CelebA+RaFD的实验结果(Experimental Results on CelebA+RaFD)
最后,我们的经验证明我们的模型不仅可以从单个数据集中的多个域学习,而且可以从多个数据集中学习。我们使用掩模向量在celeba和rafd数据集上联合训练模型(见第3.2节)。为了区分只在rafd上训练的模型和同时在celeba和rafd上训练的模型,我们将前者表示为stargan sng(single),后者表示为stargan jnt(joint)。
联合训练的效果。图6显示了Stargan SNG和Stargan JNT之间的定性比较,其中的任务是合成Celeba中图像的面部表情。stargan-jnt表现出高视觉质量的情感表达,而stargan-sng则产生合理但模糊的灰色背景图像。这种差异是因为Stargan JNT在训练中学习翻译Celeba图像,而不是Stargan SNG。换句话说,stargan jnt可以利用这两个数据集来改进共享的低级任务,比如面部关键点检测和分割。通过同时使用celeba和rafd,stargan jnt可以改善这些低级任务,这有利于学习面部表情合成。
学习了掩模向量的作用。在这个实验中,我们通过设置特定面部表情的维度(可从第二个数据集rafd获得)来给出一个单热向量。
一个。在这种情况下,由于显式地给出了与第二个数据集相关联的标签,因此正确的掩码向量将是[0,1]。图7示出了给出适当掩模向量的情况和给出错误掩模向量[1,0]的相反情况。当使用错误的掩模向量时,stargan jnt无法合成面部表情,它会操纵输入图像的年龄。这是因为模型忽略了未知的面部表情标签,并通过遮罩向量将面部属性标签视为有效。请注意,由于其中一个面部属性是“young”,当模型接受零向量作为输入时,它会将图像从young转换为old。通过这种行为,我们可以确认,当涉及到来自多个数据集的所有标签时,stargan正确地学习了掩码向量在图像到图像转换中的预期作用。
6. 结论
在本文中,我们提出了StarGAN,一个使用单一生成器和鉴别器的多个域之间可伸缩的图像到图像的转换模型。除了在可伸缩性方面的优势外,由于多任务学习设置背后的泛化能力,与现有方法相比,StarGAN生成的图像具有更高的视觉质量[16、23、33]。此外,使用所提出的简单掩码向量使StarGAN能够利用具有不同域标签集的多个数据集,从而处理来自这些数据集的所有可用标签。我们希望我们的工作能够让用户开发跨多个领域的有趣的图像翻译应用程序。
参考资料
[1] 对抗生成网络学习(十五)——starGAN实现人脸属性修改(tensorflow实现)
[2] # StarGAN论文及代码理解
[3] starGAN 论文学习
论文下载
[1] StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation
代码
[1] # taki0112/StarGAN-Tensorflow