2018年的cvpr
论文地址:
http://openaccess.thecvf.com/content_cvpr_2018/papers/Choi_StarGAN_Unified_Generative_CVPR_2018_paper.pdf
解决图像转换一对多的问题,本文主要对人脸进行改变
文章提到几个关键字的解释:
Domain---男人 or 女人
Arrtibute---年龄 头发颜色 表情
Attribute value---13 黑色 开心
左图为一对一图片转换所需的生成器
右图为本文的,只需要一个?!来看看怎么实现的把
本文贡献:
1. StarGAN只要一个G和一个D实现多领域转换
2. 提供一种掩码向量方法,使StarGAN能够控制所有可用的域标签
3. 在人脸属性转移和表情改变方面StarGAN效果很好
cGAN
Image-to-Image Translation: 如pix2pix cycleGAN等
目标:G(x,c) -> y
标签c随机生成
3.1. Multi-Domain Image-to-Image Translation
先介绍用到的loss
对抗loss:
Domain Classification Loss(cls):
在D的top中加入辅助分类器,在G和D中都各加一个分类loss
D的:
G的:
通过最小化该loss可让图片归类到domain c
Reconstruction Loss
Rec_loss:
重构loss,c是目标域,c撇是原域,可以看出经过两次GAN回到了原始图像,是不是很像cycleGAN呢,嗯哼
完整的loss:
3.2. Training with Multiple Datasets
starGan适用于多数据集间的转换。这样就有一个问题,比如另一个数据集没有需要的标签,因为在重构loss里需要域双方都有同类标签,那么该怎么办呢?作者提出了解决办法。
Mask Vector:
其中ci代表图像在第i组数据集的属性经过编码后得到的结果,n为数据集数目(ci可以是one-hot也可以是2分类)。文章中仅涉及两个数据集,n=2。m为该图像所属数据集的编号经过One-hot编码后得到的结果。
(p.s.嗯哼,好像看不懂啊???后面有个实验可以弄清楚点)
Training Strategy
训练时,生成器中加入标签c,通过这样做,生成器学会忽略未指定的标签,这些标签是零向量,并集中在给定的不为0的标签上,通过在CelebA和RaFD之间交替,判别器学习两个数据集的所有鉴别特征,并且生成器学习控制两个数据集中的所有标签。
ok,来看看训练过程
对D训练
(a)D对真假图片进行判别,真图片判真,假图片判假,真图片被分类到相应域
对G训练
(b)真图片+目的标签c进入G生成假图片
(c)假图片+原始标签c撇进入G又回去生成重构图片(重构loss)
(d)D对假图片进行判别,判假图片为真
(P.s. 好了,感觉和以前差不多对不对?就加了个domain分类,和较复杂的标签c)
Improved GAN Training:
为了获得更好的效果,作者把原始GAN的loss换为Wasserstein GAN 的
(我晕,有机会看看)
Network Architecture:
没什么好说的,用别人的就是了,哈哈
5.1. Baseline Models
比较对象:DIAT ?没看过 ,CycleGAN还有IcGAN
效果是挺不错的
5.2. Datasets
CelebA:
CelebFaces Attributes (CelebA) dataset,有202599张人脸,作者对图片进行了检测,
还使用以下属性构建了七个domian:头发的颜色(黑色,金色,棕色),性别(男/女)、年龄(年轻/老)。
RaFD:
The Radboud Faces Database (RaFD) 由67个参与者收集的4824幅图像组成,里面有各种表情
5.3. Training
参数就不说了~
数据增强方面作者用水平翻转
为了弥补数据的不足,当使用RaFD训练时,作者以0.0001的学习率训练所有模型100个周期,并在接下来的100个周期应用相同的衰减策略
5.4. 5.5 5.6 Experimental Results on CelebA,RaFD,CelebA+RaFD
我们就挑最后一个,CelebA+RaFD来看吧
这是作者一直强调的多训练集训练,效果好像是提升了,毕竟咱多数据集数据多嘛
Learned role of mask vector:
上图是正确掩码m为(0,1)
下图是错误掩码m位(1,0)
可以发现正确掩码让控制表情的RaFD数据集构建的网络发挥了作用,改变了表情;
错误掩码让可以控制年龄的celebA数据集构建的网络发挥了作用,改变了年龄~
嗯哼,新的东西就是标签c掩码向量的设计,有这个就可以实现多数据集(掩码m表示)多特征(多条件GAN)训练~