知乎介绍:图像转换明星StarGAN,这次有了简易版TensorFlow实现
starGAN性别反转原始代码(github):PyTorch Implementation of StarGAN - CVPR 2018
starGAN性别反转简易demo(github):Simple Tensorflow implementation of StarGAN (CVPR 2018 Oral)
半年前AI圈内红红火火的StarGAN模型有新实现出炉。
昨天,网友taki0112公布了一个简易版StarGAN TensorFlow实现,不到一天时间就在Reddit论坛上热度暴增到700。
因为实现的效果,看起来真的还不错:
仅仅给出一张原始头像,这个简易实现的GAN就能合成出染发、变性、衰老的模样。“性别和年龄的变化是微妙的,但结果相当不错。”网友Valiox评价。
(1)ubuntu环境下,按照“starGAN性别反转简易demo”的ReadMe操作即可
(2)本文基于win10的anaconda环境,非ubuntu环境的朋友可继续往下看
(1)在“starGAN性别反转简易demo”下载源代码
(2)下载训练所用数据集CelebA(kaggle)或百度网盘CelebA,并把数据集解压到starGAN-Tensorflow-master中->dataset->celebA->train下。由于数据集比较大,解压耗费时间可能较久。
(3)下载训练好的checkpoints文件,如果自己从头训练模型,进度会如图一样,相对比较慢,checkpoints的百度网盘链接。github的checkpoints链接在谷歌云盘,国内访问会有问题。
(4)将下载的checkpoints文件解压到starGAN-Tensorflow-master->checkpoints文件夹中,github项目不包含的文件目录,会在starGAN-Tensorflow-master运行如下命令后生成。(命令在anaconda的虚拟环境运行)
python main.py --phase train
(5)由于训练数据集都是128*128,所以需要使用opencv把图像预处理成128*128的大小。先把需要测试的图像裁剪成正方形,再用opencv做成128*128的。下面是opencv图像处理的代码。
import cv2
image=cv2.imread('t2.jpg')#经过裁剪后的正方形头像图片,命名t2.jpg可以自己更改
res=cv2.resize(image,(128,128),interpolation=cv2.INTER_CUBIC)
cv2.imshow('iker',res)
cv2.imshow('image',image)
cv2.imwrite('t3.jpg', res)#128*128的新头像图片
cv2.waitKey(0)
cv2.destroyAllWindows()
(6)一切文件准备好以后,将128*128的新头像图片放入StarGAN-Tensorflow-master\dataset\celebA\test。
(7)放入test后,在anaconda的tensorflow虚拟环境运行如下代码,运行位置是StarGAN-Tensorflow-master文件。
python main.py --phase test
训练开始
训练成功
(8)然后你就可以在results下看到运行结果啦!