对应论文:
《StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation》
starGAN 是 Yunjey Choi 等人于 17年11月 提出的一个模型。该模型可以实现
图像的多域间的迁移
(作者在论文中具体应用于人脸属性的转换)。
在 starGAN 之前,也有很多 GAN模型 可以用于 image-to-image,比如 pix2pix(训练需要成对的图像输入),UNIT(本质上是coGAN),cycleGAN(单域迁移)和 DiscoGAN。
而
starGAN 使用
一个模型
实现
多个域
的迁移
,这在其他模型中是没有的,这提高了图像域迁移的可拓展性和鲁棒性。
下图展示了在域迁移中 传统GAN 的做法和 starGAN 的做法的区别:
左边是 传统的GAN,右边是 starGAN。
传统的域迁移 需要在不同的两个域之间相互进行特征提取,这就导致在有 k 个域的情况下需要 k(k-1) 个生成器
。而 starGAN 则解决了这个问题,
自始至终只需要一个生成器
。
下图展示了作者在 CelebA 和 RaFD 两个人脸数据集上进行发色,性别,表情等属性转化的效果。
官方PyTorch实现:
https://github.com/yunjey/stargan
一、原理介绍
网络模型
网络概述
StarGAN 包含 鉴别器D 和 生成器G 两个部分。
鉴别器D 学习去辨别真实图像和生成图像,以及对图像进行所属域的分类(
两个输出
)。生成器接受图像和目标域标签(
两个输入
),生成假的图像【
目标域标签是空间重复的,和输入图像相连接
】。
具体网络结构
参考了
CycleGAN
,starGAN的生成器包含2个卷积层(下采样的步长设置为2),6个残差层,2个反卷积层(上采样的步长设置为2),生成器中还使用了
归一化(instance normalization)
。判别器则采用
PatchGAN
的结构,它可以
对局部图像块进行真假分类
,但没有使用归一化层。
标签c的表示方式
前面也提到过,模型中是需要输入标签c的,实际上作者在做的时候,标签c是以 one-hot编码 表示的,作者将此输入称为mask vector。
损失函数
Adversarial Loss(对抗损失)
为了保证生成图像的真实性,采用了对抗损失。Dsrc(x)是D给出的源域上的概率分布。
生成器G试图将这个目标最小化,即尽可能缩小自己生成的数据与真实数据的差别,让 D 真假难别;而鉴别器D试图将它最大化,即尽可能正确地识别出真实数据和 G 伪造的数据。
为了防止模式坍塌,作者还
借鉴了
WGAN
的思想,对 adversarial loss (对抗损失)进行了改进
。
Domain Classification Loss(域分类损失)
为实现图像域的准确转换,starGAN
在判别器的顶部引入了一个复杂的辅助分类器
。在同时优化G和D的同时,添加了一个域分类损失。
判别器的训练目标为将真实图像的域分类损失最小化,以学习真实图像的正确分类;生成器的训练目标为将生成图像的域分类损失最小化,使得生成的图像能够被分类为目标域。
Reconstruction Loss (重构损失)
所谓Reconstruction Loss (重构损失),其实就是CycleGAN中的cycle consistency loss(循环一致性损失)。
最小化上述两种loss并不能保证保留输入图像上与域转换无关的内容不变,只改变与域转换相关的部分,所以在模型中的生成器引入了重构损失。
即使用两次生成器,将原始图像转换为目标域中的图像,然后从转换后的图像重建原始图像,最后比较原始图和重构图的L1正则化距离。
Full Objective(总损失)
- 判别器损失由两部分loss组成:对抗损失和域分类损失;
- 生成器损失由三部分构成:对抗损失和域分类损失和重构损失。域分类损失的权重系数设置为1,重构损失的权重系数设置为10。
二、论文对比实验
作者将 StarGAN 与 最近的面部属性转换方法 进行比较。此外,作者还对面部表情合成进行分类实验。最后证明了 StarGAN 可以从多个数据集中学习到图像到图像的转换。
基准模型
选择了以下的模型作为对比基准——
- DIAT(仅用了 adversarial loss 来映射域之间的关系)
- cycleGAN( 用adversarial loss和 cycle consistency loss来映射域之间的关系 )
- IcGAN(cGAN的改进版)
数据集
-
CelebA
。CelebFaces Attributes (CelebA)数据集包含
202,599张
名人的面部图像,每个图像都带有40个二进制属性。我们将最初的178×218大小的图像裁剪为178×178,然后将其大小调整为
128×128
。
我们随机选取2000张图像作为测试集,并使用所有剩余的图像作为训练数据
。 -
RaFD
。Radboud Faces Database (RaFD)由来自67名参与者的
4824张
(
67x24x3
) 图像组成。每个参与者在三个不同的注视方向做出八种面部表情。作者将面居中的图像裁剪为256×256,然后将其大小调整为
128×128
。
训练细节
所有模型训练都采用β1 = 0.5,β2 = 0.999的Adam优化器。
为了增加数据,以0.5的概率水平翻转图像
。在五次鉴别器更新之后执行一次生成器更新。所有实验的batch size设置为16。
在CelebA上的实验中,在前10个epoch中以0.0001的学习率训练所有模型,并在接下来的10个epoch中将学习率线性衰减为0。
为了弥补数据的不足
,当使用RaFD训练时,我们以0.0001的学习率训练100个epoch的所有模型,并在接下来的100个epoch中应用相同的衰减策略。
三、starGAN实现
待补充
参考资料: