Star-GAN阅读笔记

Summary

之前传统的GAN只能在两个域之间做图像转换(例如Cycle-GAN),如果要在多个域之间做图像转换,则需要N(N-1)对生成器/鉴别器。然而Star-GAN仅使用一个生成器/判别器,就完成了多个域之间的图像转换,它的训练单元为[图像, 域标签],训练数据集为拥有多标签的同一数据集(甚至可以多个数据集)。

Contribution

  • 提出了StarGAN,这是一种新型的生成对抗网络,它仅使用一个生成器和一个鉴别器就可以从所有域的图像进行有效训练,从而学习多个域之间的映射。
  • 演示了如何利用掩码向量方法成功地学习多个数据集之间的多域图像翻译,该方法使StarGAN能够控制所有可用域标签。
  • 提供有关使用StarGAN进行面部属性转移和面部表情合成任务的定性和定量结果,显示其优于基准模型的优势。

Related Work

  • 生成对抗网络
  • 条件生成对抗网络
  • 图像到图像的翻译

Approach and Model Architecture

作者开门见山,先给了个结果图
在这里插入图片描述
对于方法部分,作者原文一句话讲得挺明白的:我们的生成器没有学习固定的翻译,而是将图像和领域信息都作为输入,并学会了将图像灵活地翻译为相应的领域。也就是说,训练的数据为[图像, 域标签]。其中“领域”可以由one-hot vector或者二进制表示。

作者展示了Star-GAN与传统多域方法的对比图
在这里插入图片描述
作者提出的Star-GAN训练了从输入图像x到c域输出图像y的一个生成器,其中这个c域是随机产生的,这可以使得图像x到各个域都能够轻松转换
在这里插入图片描述
作者介绍了损失函数

  • 鉴别器的损失函数
    • 对抗损失函数 L a d v = E x [ log ⁡ D s r c ( x ) ] + E x , c [ log ⁡ ( 1 − D s r c ( G ( x , c ) ) ) ] \mathcal{L_{adv}}= \mathbb{E}_x[\log D_{src}(x)]+ \mathbb{E}_{x,c}[\log (1-D_{src}(G(x,c)))] Ladv=Ex[logDsrc(x)]+Ex,c[log(1Dsrc(G(x,c)))]
    • 域分类损失函数 L c l s r = E x , c ′ [ − log ⁡ D c l s ( c ′ ∣ x ) ] \mathcal{L_{cls}^r}=\mathbb{E}_{x,c'}[-\log D_{cls}(c'|x)] Lclsr=Ex,c[logDcls(cx)]
    • 最终损失 L D = − L a d v + λ c l s L c l s r \mathcal{L_D}=-\mathcal{L}_{adv}+\lambda_{cls}\mathcal{L}_{cls}^r LD=Ladv+λclsLclsr
  • 生成器的损失函数
    • 对抗损失函数 L a d v = E x [ log ⁡ D s r c ( x ) ] + E x , c [ log ⁡ ( 1 − D s r c ( G ( x , c ) ) ) ] \mathcal{L_{adv}}= \mathbb{E}_x[\log D_{src}(x)]+ \mathbb{E}_{x,c}[\log (1-D_{src}(G(x,c)))] Ladv=Ex[logDsrc(x)]+Ex,c[log(1Dsrc(G(x,c)))]
    • 域分类损失函数 L c l s f = E x , c [ − log ⁡ D c l s ( c ∣ G ( x , c ) ) ] \mathcal{L_{cls}^{f}}=\mathbb{E}_{x,c}[-\log D_{cls}(c|G(x,c))] Lclsf=Ex,c[logDcls(cG(x,c))]
    • 重构损失 L r e c = E x , c , c ′ [ ∣ ∣ x − G ( G ( x , c ) , c ′ ) ∣ ∣ 1 ] \mathcal{L}_{rec}=\mathbb{E}_{x,c,c'}[||x-G(G(x,c),c')||_1] Lrec=Ex,c,c[xG(G(x,c),c)1]
    • 最终损失 L G = L a d v + λ c l s L c l s f + λ r e c L r e c \mathcal{L_G}=\mathcal{L}_{adv}+\lambda_{cls}\mathcal{L}_{cls}^f+\lambda_{rec}\mathcal{L}_{rec} LG=Ladv+λclsLclsf+λrecLrec

作者在实验中设定了 λ c l s = 1 \lambda_{cls}=1 λcls=1以及 λ r e c = 10 \lambda_{rec}=10 λrec=10

值得一提的时,Star-GAN跟Cycle-GAN的损失函数其实是几乎一致的:对抗损失约束D和G,循环一致性(重构损失)约束G,不用的是Star-GAN多了一个约束D,G的“域分类损失函数”,由于Cycle-GAN只有两个域,所以不需要这个。

对于 c c c,由于在不同数据集,标签会有所缺失,作者提出了one-hot和二进制的表示方法,其中 c ^ = [ c 1 , . . . , c n , m ] \hat{c}=[c_1,...,c_n,m] c^=[c1,...,cn,m] c i c_i ci是一个二进制数,代表第 i i i个数据集标签的情况,相当于是一个状压的向量,对于没有其他数据集标签的图像,那些对应数据集的 c c c 0 0 0即可。在训练生成器的过程中,生成器会忽略未指定的标签,转而着重训练显示给定标签上。对于鉴别器的辅助分类器,分类器仅对有标签的那个数据集的所有标签的分类错误降到最低,不关注其他数据集标签。

Implement

这篇论文是在 W W W- G A N GAN GAN提出之后的,所以其对抗损失函数

L a d v = E x [ log ⁡ D s r c ( x ) ] + E x , c [ log ⁡ ( 1 − D s r c ( G ( x , c ) ) ) ] \mathcal{L_{adv}}= \mathbb{E}_x[\log D_{src}(x)]+ \mathbb{E}_{x,c}[\log (1-D_{src}(G(x,c)))] Ladv=Ex[logDsrc(x)]+Ex,c[log(1Dsrc(G(x,c)))]

被改进为

L a d v = E x [ D s r c ( x ) ] − E x , c [ D s r c G ( x , c ) ] − λ g , p E x ^ [ ( ∣ ∣ ▽ x ^ D s r c ( x ^ ) ∣ ∣ 2 − 1 ) 2 ] \mathcal{L_{adv}}=\mathbb{E}_x[D_{src}(x)]-\mathbb{E}_{x,c}[D_{src}G(x,c)]-\lambda_{g,p}\mathbb{E}_{\hat{x}}[(||\bigtriangledown_{\hat{x}}D_{src}(\hat{x})||_2-1)^2] Ladv=Ex[Dsrc(x)]Ex,c[DsrcG(x,c)]λg,pEx^[(x^Dsrc(x^)21)2]

具体原理是啥来着,自动编码生成器遵循KL距离,生成对抗网络遵循JS散度,它们都存在一个问题:当随机初始的分布和真实分布不重叠时,KL距离和JS散度无法有效衡量“距离”,所以找不出优化方向,失去导数。而Wasserstein距离能够克服这个问题。

λ g p \lambda_{gp} λgp根据经验设定为10。

网络结构方面,Star-GAN也沿用了Cycle-GAN的大体结构,值得注意的是,Pix2pix-GAN在生成器上选用了UNet结构,鉴别器上选用了PatchGAN结构,Cycle-GAN以及这篇提出的Star-GAN都继承了这个传统。

Experiments

Star-GAN比较对象有DIAT、Cycle-GAN、IcGAN,它们都能实现多个域之间图像转换,有的可能只能两个域互相转换,但是在每两个域间使用就可以实现多个域转换。本次比较实验在CelebA和RaFD数据集上进行,它们都是比较权威的人脸数据集。

在CelebA数据集实验对比如下
在这里插入图片描述
定量评估方式也是AMT,一个人工评价的平台,结果从单属性和多属性指标上看起来是Star-GAN远远领先
在这里插入图片描述在这里插入图片描述
在RaFD数据集实验对比如下

在四个模型中测试不同表情生成情况如下,Star-GAN显示出了最自然的表情。作者认为,StarGAN在图像质量上的优势是由于其来自多任务学习设置的隐式数据增强效果。 RaFD图像包含相对较小的样本大小,例如每个域500张图像。在两个域上进行训练时,DIAT和CycleGAN一次只能使用1000张训练图像,而StarGAN可以在所有可用域中总共使用4000张图像进行训练。这使StarGAN可以正确学习如何保持生成的输出的质量和清晰度。
在这里插入图片描述
定量评估方面,作者使用ResNet-18在RaFD数据集上进行表情分类的训练,再用这个训练好的网络来测试四种网络生成表情图像的分类精度,以此来定量评估生成表情的真实性,结果是Star-GAN生成的表情判错率最少。
在这里插入图片描述
Star-GAN还有一个优点就是对于多域的图像转换问题,其只需要一个生成器和一个鉴别器对,十分节省模型参数。

在CelebA和RaFD数据集实验对比如下

SNG表示在RaFD数据集上训练,JNT表示在CelebA和RaFD数据集上联合训练,结果表明联合训练比单独训练效果好,因而可以使用联合训练改善少数据单独训练的生成效果。

在这里插入图片描述
作者为了证明掩码即 x ^ \hat{x} x^确实起到了作用,进行了如下对比实验:第一组掩码设定RaFD即控制包清的数据集,第二组则是设定CelebA即跟表情无关数据集。
在这里插入图片描述
实验证明,在掩码控制表情数据集时生成效果很好,掩码控制非表情数据集时,会改变该数据集中的属性而不是表情属性。作者采用的one-hot以及二进制状压确实起到了应该有的作用。

Code

Star-GAN的代码主要参考了。。。未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值