男女速变 —— GAN

本文介绍了一个基于GAN的人脸属性转换项目,特别是男性到女性和女性到男性的转换。该项目参考了StarGAN和AttGAN,使用Keras实现,并提供了更多样例图片。文章详细讨论了网络结构、损失函数、训练方法和超参数选择,并分享了训练经验,揭示了GAN在处理性别转换时的一些挑战和解决方案。
摘要由CSDN通过智能技术生成

本篇还是按上一篇的规矩,先上图:
首先看汉子变女神:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
再来看美女变猛男:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

最后,向泰坦尼克CP致敬:
在这里插入图片描述在这里插入图片描述
让我穿越命运之门
寻找另一个你的眼神
如梦幻中的星辰
飘落那冰冷红尘
璀璨色彩
照耀飘飘长发
暮色阴沉
雕刻时光里的皱纹

我要是再写得飘逸一点,也能进梨花诗派吧。。。

这个效果明显比上一篇的VAE要好得多,全部代码在github/face_gan(Starred by AttGAN作者),和VAE一样使用tensorflow和tensorflow内置的Keras,项目的pictures目录中有更多的样例图片。

那些不是GAN的GAN说的,其实face_gan也和StarGAN、AttGAN一样不能算一个严格意义上的GAN,但因为一说GAN大家就明白怎么回事,所以这个GitHub项目和本文都是用GAN的名字。

毋庸讳言,face_gan严重的参考了StarGANAttGAN,毕竟任务目标是差不多的。下面我会介绍这个项目一些具体的技术细节,希望读者能通过本文更深入的了解GAN、卷积网络和深度学习训练。

网络结构

face_gan的生成器基本使用了StarGAN的生成器网络结构(而StarGAN是从CycleGAN那里学来的,呵呵~):
在这里插入图片描述
两次Down Sampling后直接接残差块,然后再两次Up Sampling恢复原始尺寸。分辨率不降太多,保持足够多的空间位置信息,对提高图像质量很有帮助,网络也更容易训练。不过face_gan和StarGAN有三个区别:

  • StarGAN使用了6个Residual Block,face_gan使用9个。之所以增加3个是因为:StarGAN输入128x128的图像,而face_gan输入160x160(最早想用facenet做Perceptual Loss作为重构损失,facenet输入160x160,不想resize图像所以face_gan的输入就也用160x160了。后来决定直接用pixel的L1做重构损失,但输入尺寸就没再改。),是StarGAN的四分之五倍,增加3层Residual Block相应的增大网络的感受野。从结果看,增加的残差块确实对图像质量有一定的提高。
  • StarGAN和AttGAN的上采样均采用转置卷积,实测感觉Upsampling2D+Conv2D的效果更好,所以采用Upsampling2D+Conv2D。
  • StarGAN的Residual Block的实现其实并不标准,分支最后没加ReLU激活,应该是为了避免输出只有大于0的部分。face_gan使用标准的pre-activation方式来保证更广的输出范围。

StarGAN和AttGAN的discriminator网络结构采用的都是最通用形式,对抗损失/训练方式都使用WGAN-GP(所以不能用Batch Normalization),face_gan也一样。只不过StarGAN的discriminator没用任何Normalization,face_gan的discriminator用的是Instance Normalization(新版的Keras不能直接支持Layer Normalization了,所以我也就没试),实测对训练的稳定和收敛还是有帮助的。

另外,face_gan所有的初始化都用的是glorot_normal,Keras缺省glorot_uniform,感觉glorot_normal初始化的网络更不容易陷入病态。

损失和训练方法

StarGANAttGANface_gan本质上都是使用相同的组成部分构成损失,但训练方式略有不同。

StarGAN如下图:在这里插入图片描述
AttGAN如下图:
在这里插入图片描述
它们都使用原图 X a X^a X

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值