【摘要】 老谭生成器使用说明书
如果觉得还有点意思,那么你一定会对StyleGAN感兴趣。
StyleGAN的原理张小白也看不大懂。。反正就是根据预训练模型,生成一些大家从来没见过的照片,比如人脸、汽车、马,动漫,网红脸(整容脸),超模脸之类的。
张小白从来就是个实战派,那么就跟随张小白的脚步,看看到底怎么生成这么好玩的东西吧。
玩转这个最好是自己有个带gpu的windows。
感谢 @枫树 大侠告知,有了conda的加持,是可以同时在一台机器内安装多套GPU的cuda和cudnn环境的。要知道,cuda和cudnn的版本跟tensorflow的版本密切相关,一旦不一致就会有很多问题,因为有的神经网络需要TF2的版本,有的需要TF1的不同版本。不可能每次都重装cuda和cudnn。
在这些基础环境安装好之后,就可以开GAN了。
这次的实验需要用到3个代码仓,一个是stylegan2,一个是stylegan2encoder,一个是generators-with-stylegan2
先clone下来:
你可以直接git clone ,当然因为众所周知的原因,你也可以通过 gitee转克隆:(张小白教过你们的。。。)
使用PyCharm打开stylegan2目录:
这是小白退散。。。的规则:
需要安装Python 3.6, Tensorflow 1.14 (On Windows,注意仔细看),需要CUDA10.0cuDNN 7.5,
需要Nvidia GPU,
需要16G内存。
(如果你们都没有的话,就上ModelArts吧。。。)
我们使用conda来创建这个环境吧:
conda create -n gaohuo python=3.6
激活conda环境
conda activate gaohuo
先安装CUDA10.0(请注意是在gaohuo环境里面)
conda install cudatoolkit=10.0
conda install cudnn
装的cudnn 版本号是6.0,readme提示是7.5,可能会有问题。先安装了再说。
升级pip到最新版本
python -m pip install –upgrade pip
安装tensorflow-gpu版本
(需要注意,conda安装时,等于号是一个,pip安装时,等于号是两个)
包有点大(287M),耐心等待安装完毕。最近PIP的清华源不大好使,豆瓣源稍微好一点,但是也会断。。有时候安装得靠点运气。
。。。
装指定版本的keras(2.2.5)
pip install keras==2.2.5
安装PIL 8.2.0
安装dlib 19.22
pip install dlib
安装tqdm 4.60
pip install tqdm
安装requests 2.25.1
pip install requests
我们需要准备一下预训练模型:
点击蓝色的链接就可以下载:
下载完毕后,将其拷贝到 stylegan2工程的 models目录下吧。(新建个models目录)
张小白本地的目录是这样的:
先试一下用官方的模型生成的人像吧:
。。
conda install cudatoolkit=10.1
。。。
为了保险起见,将与cuda配套的cudnn也重新安装一下(可能这个步骤没必要做)
conda unsintall cudnn
conda install cudnn
再来重跑前面的脚本:
果然有,使用资源管理器可以看得更清楚:
好了,我们完成了StyleGAN的第一步,生成随机的人脸图像。
有兴趣的人也可以下载其他的模型,生成比如 马、猫、教堂、汽车的图片:
反正下载不同的模型可以生成不同的图片。这些图片是否在世界上存在呢?这可能是个谜。。。
切换stylegan2encoder工程:
使用 conda activate guohao进入tensorflow 1.14 +cuda 10.1+cudnn环境
建立raw_images目录,存放原始人像图片
建立aligned_images目录,存放头像对齐后的图片
在网上找一张硬汉哈里森福特的照片:
将stypegan2的models目录下的预训练模型拷贝到这里(创建同样的目录)
然后执行:
。。。
打开 一看,是将图片的头像居中了,而且分辨率是1024X1024:
。。。
这里面要跑1000次。请耐心等待跑完。
将aligned_images目录下的人脸图片投射到dlatents空间(这步有点问题。。)
改为:
改为:
然后执行以下脚本:
将 aligned_images目录下的人脸图片投射到dlatents空间,找到最佳的dlatents,保存dlatents文件和重建的人脸图片到generated_images目录。
。。。
出了个错: CUDA_ERROR_ILLEGAL_ADDRESS.
这个问题张小白搜了一下,貌似说是跟显卡驱动有关,又可能跟显存不足有关。
好像暂时搞不定。
打开generators-with-stylegan2工程:
根据networks目录下的 “模型下载后放在这里.txt”的文件中的地址,下载各个模型:
结果如下:
缺省会生成20张 黄种人的照片:
照片生成在 result目录下:
萌娃脸:
网红脸:
超模脸:
好像也蛮好玩的。。
切换到stylegan2工程:
新建 datasets/mypictures 目录
将stylegan2encode工程下的 aligned_images目录(就是福特人脸居中的目录)拷贝过来:
发现这个文件有点大了。想想前面可能是因为显存不足造成的python代码无法执行完毕。最好还是对这个1024X1024的24bit的文件做个瘦身。
于是按照链接的方法下载并安装了imageJ。
运行imageJ:
将其转为8bit color,
将其拷贝到 ./aligned_images 目录(原来的png文件挪走)
此时文件只有127K了。非常舒适。
生成的文件如下:
。。。
。。。
。。。唉,拼到了587/1000.还是没有躲过 CUDA_EROR_ILLEGAL_ADDRESS的境遇。
看来张小白的乞丐显卡真的不行。
下次考虑将这些代码放在ModelArts运行试试。
不过,虽然没有完全结束,我们还是可以看到一些中间结果:
切换stylegan2encode工程:
安装matplot工具:
pip install matplotlib
可以看到 生成了一串图片:
感觉从老年到孩童的都生成了。虽然老年那张看起来有点别扭。。。
×掉上面的图片,再重新输入 favourate coeff的不同参数:
比如 1.0
会给你做个调整:
-1.0:
0:
张小白在尝试stylegan2的过程中,参考了以下资料中的介绍,并引用了相关的代码,为此对原作者们表示感谢。这些作者们对stylegan2网络都做了深入的分析,有兴趣的童鞋们可以去看他们的博客。
希望大家都能玩转StyleGAN网络!
参考资料清单:
1. 轻轻松松使用StyleGAN 系列
2.轻轻松松使用StyleGAN2 系列
3.【阿修】GAN学习笔记(目前是StyleGAN的使用)
4.用StyleGan给自己编码 系列
5.自定义数据集上训练StyleGAN | 基于Python+OpenCV+colab实现
7.为什么conda 可以安装cuda这种很底层的驱动?
8.科研人必备图像处理软件—ImageJ(安装篇)
(全文完,谢谢阅读)
BTW:
下面张小白可能会考虑在ModelArts上跑通这些内容。毕竟在本机乞丐显卡的加持下,有几个运行还是报错的。另外,模型训练也是基本上没法跑的。