【生成对抗网络学习】starGAN 原理介绍及论文详解

starGAN是Yunjey Choi等人于17年11月提出的一个模型。该模型可以实现 图像的多域间的迁移(作者在论文中具体应用于人脸属性的转换)。

在starGAN之前,也有很多GAN模型可以用于image-to-image,比如pix2pix(训练需要成对的图像输入),UNIT(本质上是coGAN),cycleGAN(单域迁移)和 DiscoGAN。

而starGAN使用一个模型实现多个域迁移,这在其他模型中是没有的,这提高了图像域迁移的可拓展性和鲁棒性。

下图展示了传统GAN在域迁移中的做法和starGAN的做法的区别:
【生成对抗网络学习】starGAN 原理介绍及论文详解_第1张图片
左边是传统的GAN,右边是starGAN,传统的域迁移需要对不同的两个域之间相互进行特征提取,这样就导致只有k个域的情况下却要k(k-1)个生成器。而starGAN则解决了这个问题,自始至终只需要一个生成器。

下面是作者在CelebA和RaFD两个人脸数据集上进行发色,性别,表情等属性转化的效果。

【文章链接】:

https://arxiv.org/pdf/1711.09020.pdf

【参考代码 - TensorFlow】:

https://github.com/taki0112/StarGAN-Tensorflow

【参考解读】:

[1] 对抗生成网络学习(十五)——starGAN实现人脸属性修改(tensorflow实现)


一、原理介绍

方法细节

网络模型

网络概述

StarGAN包含鉴别器D和生成器G两个部分。

鉴别器D学习去辨别真实图像和生成图像,以及对图像进行所属域的分类(两个输出)。生成器接受图像和目标域标签,生成假的图像(两个输入)。其中 目标域标签是空间重复的,和输入图像相连接

【生成对抗网络学习】starGAN 原理介绍及论文详解_第2张图片

具体网络结构

参考了 CycleGAN,starGAN的生成器包含2个卷积层(下采样的步长设置为2),6个残差层,2个反卷积层(上采样的步长设置为2),生成器中还使用了 归一化(instance normalization)。判别器则采用 PatchGAN 的结构,它可以对局部图像块进行真假分类,但没有使用归一化层。

【生成对抗网络学习】starGAN 原理介绍及论文详解_第3张图片
【生成对抗网络学习】starGAN 原理介绍及论文详解_第4张图片

标签c的表示方式,多数据集训练

前面也提到过,模型中是需要输入标签c的,实际上作者在做的时候,标签c是以 one-hot编码 表示的,作者将此输入称为mask vector。

损失函数

Adversarial Loss(对抗损失)

为了保证生成图像的真实性,采用了对抗损失。Dsrc(x)是D给出的源域上的概率分布。

生成器G试图将这个目标最小化,即尽可能缩小自己生成的数据与真实数据的差别,让 D 真假难别;而鉴别器D试图将它最大化,即尽可能正确地识别出真实数据和 G 伪造的数据。
【生成对抗网络学习】starGAN 原理介绍及论文详解_第5张图片
为了防止模型倒塌,作者还 借鉴了 WGAN 的思想,对 adversarial loss (对抗损失)进行了改进WGAN的原理再回顾一下)。
【生成对抗网络学习】starGAN 原理介绍及论文详解_第6张图片

Domain Classification Loss(域分类损失)

为实现图像域的准确转换,starGAN 在判别器的顶部引入了一个复杂的辅助分类器。在同时优化G和D的同时,添加了一个域分类损失。

判别器的训练目标为将真实图像的域分类损失最小化,以学习真实图像的正确分类;生成器的训练目标为将生成图像的域分类损失最小化,使得生成的图像能够被分类为目标域。
【生成对抗网络学习】starGAN 原理介绍及论文详解_第7张图片

Reconstruction Loss (重构损失)

所谓Reconstruction Loss (重构损失),其实就是CycleGAN中的cycle consistency loss(循环一致性损失)。

最小化上述两种loss并不能保证保留输入图像上与域转换无关的内容不变,只改变与域转换相关的部分,所以在模型中的生成器引入了重构损失。

即使用两次生成器,将原始图像转换为目标域中的图像,然后从转换后的图像重建原始图像,最后比较原始图和重构图的L1正则化距离。
【生成对抗网络学习】starGAN 原理介绍及论文详解_第8张图片

Full Objective(总损失)

  • 判别器损失由两部分loss组成:对抗损失和域分类损失;
  • 生成器损失由三部分构成:对抗损失和域分类损失和重构损失。域分类损失的权重系数设置为1,重构损失的权重系数设置为10。
    【生成对抗网络学习】starGAN 原理介绍及论文详解_第9张图片

二、文章详解

对比实验

作者将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实现

待补充

你可能感兴趣的:(生成对抗网络,GAN)