论文笔记:StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation
StarGAN的引入是为了解决多领域间的转换问题的,之前的CycleGAN等只能解决两个领域之间的转换,那么对于含有C个领域转换而言,需要学习C*(C-1)个模型,但StarGAN仅需要学习一个,而且效果很棒。
Cycle GAN已经完成图像到图像的翻译任务,但是Cycle GAN也有它不完善的地方,Cycle GAN只能实现一种图像到另一种图像的映射,也就是说只能在两个域内之间进行转换。
例如本文只能实现将一个人的开心的情感转换为惊讶的情感,如果在这基础上,本文想加入其它情感的转换,就需要训练更多的Generator和Discriminator去实现多域之间的转换,如果本文希望图像能在c个域当中相互转换,那依据Cycle GAN的设计思路,理论上本文需要训练个c(c-1)个生成器和c(c-1)个判别器,如图所示。
交叉域的模型
这种情况下,显然,Cycle GAN是低效的。而且,利用多个Generator实现多域转换的方法的效果也不是很好,因为每个Generator都只学到面部情感的中的一部分,并且不能充分利用整个数据集训练数据,只能从c个域内中的两个领域相互学习,是互相独立的,所以它限制了生成图像的质量,生成能力有限。
由此Choi Y等人提出了一个新的模型Star GAN,该模型受到Cycle GAN的启发,提出了只用一个Generator模型和一个Discriminator模型,可以实现多任务人脸情感的转换,设计模型如图所示。
Generator不学习固定的图像映射关系,它的输入为一张图片和一个域,域信息为八种离散的情感标签,通过该网络可以实现将图片从源域到目标域的转换。将目标域的信息通过向量或者one hot编码模式进行量化。
在训练过程中,输入一张图片,使它随机生成目标域,这样可以控制域信息,在测试的时候可灵活的将图像转换为本文所需要的目标域。整个网络的处理流程为,首先将输入图片x和目标生成域c结合喂入到Generator来生成目标图片,Generator模型的结构如图所示。
然后将生成的目标图片和真实图片分别喂入到Discriminator,Discriminator需要判断输入的图片是否真实,还需要判断它来自哪个域,Discriminator结构如图所示。
最后与Cycle GAN类似,还有一个循环一致性约束,将原始图像的标签c'和生成的目标图像结合起来送入到Generator,希望可以得到重建出原始输入图像,整个模型的处理过程如图所示。
设输入的图片为x,目标域为c,Generator的输入为x和c的结合,Discriminator的输出有两个,一个是目标域
D
s
r
c
D_{src}
Dsrc ,另一个是目标域的标签
D
c
l
s
D_{cls}
Dcls。
所以该模型的生成对抗网络的损失函数如式(1)所示:
对于给定的输入图片x和目标域标签c,网络的目标是将x转换成输出图片y,输出图片y能够被归类成目标域c。为了实现这一点就需要鉴别器有判别域的功能。所以在Discriminator的输出加了一个额外的域分类器,域分类器损失函数在优化Discriminator和Generator时都会用到,一个是真实图片的域分类损失用来优化Discriminator,如式(2)所示,
其中
D
c
l
s
(
c
′
∣
x
)
D_{cls} (c^′|x)
Dcls(c′∣x)是代表Discriminator对真实图片计算得到的域标签概率分布。这一学习目标将会使得Discriminator能够将输入图片x识别为对应的目标域c’,这里的(x, c’)是训练集给定的。
另一个是生成的图片的域分类损失来优化Generator,如式(3)所示,也就是让Generator尽力去生成图片让它能够被Discriminator分类成目标域c。
还有一个循环一致性重建损失,通过最小化对抗损失与分类损失,Generator努力尝试学习到生成目标域中的真实图片。但是这无法保证学习到的转换只会改变输入图片的目标域相关的信息而不改变图片本质内容。所以加上了循环一致性重建损失,如式(4)所示,
这里将G(x, c)和图片x的原始标签c’结合喂入到Generator中,将生成的图片和x计算L1范式。
为了提高Star GAN训练过程的稳定性和生成更高质量的,这里最后使用的是Wasserstein GAN中的对抗损失项代替了原始GAN的对抗损失,如式(8)。
所以Generator和Discriminator的总损失函数分别如式(5)和(6)所示。