论文地址:https://arxiv.org/pdf/1912.01865v1.pdf
https://openaccess.thecvf.com/content_cvpr_2018/papers/Choi_StarGAN_Unified_Generative_CVPR_2018_paper.pdf
源码:stargan项目实战及源码解读-CSDN博客
1. 概述
在传统方法中,给定一张人脸图片,要求改变头发颜色、改变性别、改变年龄肤色等,我们需要为每个任务都生成训练一个网络。正如下图所示,要完成上述任务需要训练K*(K-1)个cycle GAN(参见:基于CycleGan开源项目实战图像合成-CSDN博客)
Star GAN解决的问题是,我们能不能使用一个网络,解决上述所有问题。
2.建模流程分析
整体流程还是采用cycle gan,但是,现在的每一个生成器和判别器都需要加入一个one hot编码的向量。生成器加入目标风格的one hot向量,代表在某种风格j的生成结果。 判别器加入代表原图片的one hot向量,代表在原图片为i时,判断生成结果的真假。
整体流程还是采用star gan,首先,指定输入图像和生成的风格(例如更换头发)进行生成,得到结果。但是,我们的生成不是生成另外一个人,生成结果需要是同一个人。所以,我们需要将生成结果进行还原。
对于判别器,需要判别生成图片的真假,以及对应的风格。
3.star GANv2
star GAN V1存在的问题
star ganv1将各种风格看成一个one hot向量,这种编码只能作为标签,而不能表达实际意义。那么,在v2版本中,star GAN使用了特征向量表达各种风格,这种做法的好处在于,特征向量不仅具有很强的表达能力。而且能够进一步学习他们之间的关系。
star GAN v2 建模网络
star GANv2包含4个网络,star GAN v2最大的特点为输出都是多分支的。
- 生成网络,即对输入图像生成一张给定风格的图像
- 映射网络,随机初始化一个向量,通过全连接层得到对应风格的转化向量。
- ecoder:直接将图像编码为对应风格的向量
- 判别器:对于输入图像,为每一种风格判断真假
损失函数
1.Style reconstruction
首先,在使用生成网络生成图片时,我们会输入一张图片和对应风格的向量s,然后生成得到对应风格的图片。在得到生成图片后,我们再使用ecoder将生成图片编码为对应风格的向量s'。很显然,我们希望s和s'足够接近。
2.Style diversification(多样性损失)
首先,初始化2组向量z1和z2,然后经过map网络得到对应风格的编码s1和s2,很显然,s1和s2是不同的,我们现在希望根据s1和s2生成的结果差异越大越好,差异越大,多样性越高。即损失函数越大越好
3.Preserving source characteristics
可以理解为一种重构损失,我们希望生成的结果还是同一个人,因此,对于生成图片还原回去要与原来的输入图片足够接近。
4.Adversarial objective
即判别器损失,原始图片预测接近于1,而生成图像预测接近于0
总损失为上述损失的加权和
数据与代码链接:https://pan.baidu.com/s/1aNlghgo6mtD4iWqNgMOWOQ?pwd=s206
提取码:s206