张小白带你使用tyle玩转人脸生成

【摘要】 老谭生成器使用说明书

如果觉得还有点意思,那么你一定会对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上跑通这些内容。毕竟在本机乞丐显卡的加持下,有几个运行还是报错的。另外,模型训练也是基本上没法跑的。

THE END
0.奥斯汀留学生活指南在此基础上,我们特别希望这一本小册子还能成为同学们今后的生活中的“居家必备”百科全书。水平有限,错误难免,欢迎大家指正。 3 德州大学奥斯汀学生学者联谊会欢迎大家来到Austin——你我共同的家!我们期待着新的一学年在校园的每一处见到朝气蓬勃的新同学们!预祝大家的留学生活一帆风顺! 主编 贺正旺 翟羽佳 陈宇轩https://www.360doc.cn/article/3125585_307216408.html
1.OC门与OD门详解:硬件工程师必备的知识点学过数电模电的同学,应该都听过OC门电路与OD门电路。即使你没听过,那么当年在毕业参加工作面试时,或许会被面试官问到或者考题中考到。因为很多芯片的IO口,其内部就属于OC或者OD门。想起去年,小编在找工作面试时,被面试官提问过此问题,当时那叫一个“惨”啊! https://blog.csdn.net/weixin_43772512/article/details/121345530
2.金针菇培根卷(下厨房)做菜张小白在下厨房分享了菜单「㊙️撑到扶墙❗️❗️减脂期必备的低卡大拌菜 圣诞树土豆泥 大小朋友都爱吃的软糖柚子糖清热止咳 蒜蓉金针菇 豆腐这样做分分钟抢光,给肉肉都不换 中餐厅3林大厨招牌鱼香茄子 电饭锅版排骨焖饭 包心菜炒红薯粉丝 干锅有机菜花 蒜https://hanwuji.xiachufang.com/recipe_list/105884867/