StarGAN

211 阅读2分钟

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就能实现多领域的转换

  • 多数据集联合训练(???好处)

参考文章