StarGAN(2018年的CVPR)
1.提出该想法的出发点(问题导向)
在域到域 图像转换算法研究中,Pix2pix解决了两个领域之间匹配数据集之间的转换,但在很多情况下匹配数据集很难获得,于是出现了CycleGAN。它可以实现两个领域之间非匹配数据集之间的转换, 然而这些转换每次只能在两个领域之间进行,当需要进行多个领域间的转换时,就需要训练多个网络,模型训练耗时长且泛化能力弱。StarGAN仅使用一个网络就实现多个领域之间的图像转换,本论文呈现的图像转换的效果也比较好。
2.网络架构
基于GAN网络架构,普通的GAN接收的G部分的输入是随机向量,输出是图像;D部分接收的输入是图像(生成的或是真实的),输出是对或者错。这样G和D联手就能输出真实的图像。
-
上图中的两个生成器 G 是同一个生成器,整个StarGAN中只使用了一个生成器和一个判别器。
-
生成器G:
输入:图像 + 目标领域的标签
输出:图像
判别器D:
输入: 图像
输出: 判别图像真假 + 对真图像进行分类
代码中体现:
3.目标函数
- 对抗损失(为了使生成图像尽可能真实)
- 分类损失(保证能够被分类为正确的目标领域)
对于一个输入图像x和目标分布标签c,我们的目标是将x转换为输出图像y,y能够被正确分类为目标分布c。为了实现这一目标,我们在D的顶部加入了辅助分类器,并加入分布分类损失函数,使其对生成器和判别器都起到正则化的作用.也就是说,我们将这个式子分解为两部分:一个真实图像的分布分类损失用于约束判别器D,一个假的图像的分布分类损失用于约束生成器G。
一个真实图像的分布分类损失用于约束判别器D:
一个假的图像的分布分类损失用于约束生成器G:
- 重构损失(保证当只改变输入domain-related part时,转换后的图片关键信息不丢失)
4.创新点
-
通过加了一个辅助分类器,能够只训练一个G和D就能实现多领域的转换
-
多数据集联合训练(???好处)