大家应该前段时间都被StyleGan生成动漫(老婆)头像的新闻刷屏了,但是基本上玩的起来的都是比较核心的程序猿,本文的主旨意思是希望每一个热爱动漫,喜欢研究人工智能的朋友都可以享受调教stylegan,生成自己头像的快乐,所以算是一个简单的使用stylegan教程,请专业大佬轻喷,如有问题请留言回复!我将进行修正和补充。

想要生成属于自己的头像,首先要在自己的电脑上部署CUDA和tensorflow-gpu加速环境,详细的安装和stylegan运行教程请看我上一篇文章https://www.gongyesheji.org/?p=951

另外附上关于stylegan的一些项目链接和训练集链接:

NVIDIA StyleGan :https://github.com/NVlabs/stylegan

NVIDIA StyleGan论文地址:https://arxiv.org/pdf/1812.04948.pdf

Animefaces算法下载地址:https://mega.nz/#!vawjXISI!F7s13yRicxDA3QYqYDL2kjnc2K7Zk3DwCIYETREmBP4?tdsourcetag=s_pcqq_aiomsg

上述算法使用的Danbooru2018:大型众包和标记动漫插图数据集项目:https://www.gwern.net/Danbooru2018

当然还是要感谢星轨大佬的支持和讲解0 0

Tips:生成式对抗网络(GenerativeAdversarial Networks,GAN)是Ian Goodfellow 等人在2014 年所提出的一种对抗生成模型的深度学习框架,近几年非常流行,也取得了非常可观的成果。其中大家耳熟能详的StyleGAN就是去年12月左右NVIDIA的研究人员发布的一种基于对抗神经网络的算法,简单理解对抗神经网络就是同时训练两个网络,一个生成器一个判断器,当判别器足够强,生成器生成的足够以假乱真的时候,两者之间实现纳什均衡,算法就成了。(个人理解,或许有些出入,敬请指正。)

StyleGAN的训练原理:

运行前期准备工作:

1.一块尽量高于3.5计算能力(compute capability)的nvidia显卡,需参考:https://developer.nvidia.com/cuda-gpus
2.电脑安装有CUDA9.0或10.0 、tensorflow-gpu 、cudnn、 pillow模块 、requests模块,建议安装Anaconda。

3.本库个人运行于win10系统,其他的系统没有尝试过,win8,7应该也能够支持……如果需要linux的得你们自己改……不太懂。

如何运行:

1.下载已经修改好的stylegan-acg头像版……我已经打包上传到我的百度网盘中,大家可以离线下载一下,这样就不用连接到国外下载了

链接: https://pan.baidu.com/s/17fM58ti0wFsMldi4d5coWA 提取码: txrh

 

2.假设你已经安装好adaconda,请打开Anaconda prompt 先启用tensorflow-gpu环境:
输入:activate tensorflow-gpu

3.使用cd命令打开刚刚下载的stylegan-acg文件夹   cd x:/xxx/xxx/xx/ (也就是本文路径,比如截图里面的路径就是:cd C:\Users\Administrator\stylegan-acg )

4.运行程序   输入:python random_simple_generator.py  (意思是通过python运行random_simple_generator.py这个程序)
5.查看结果:生成的结果会出现在stylegan-acg的result文件夹下!

嗯,就这么简单!

快去生成属于自己的老婆头像吧!

ps:random_simple_generator.py文件的源码如下:

  1. # Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
  2. #
  3. # This work is licensed under the Creative Commons Attribution-NonCommercial
  4. # 4.0 International License. To view a copy of this license, visit
  5. # http://creativecommons.org/licenses/by-nc/4.0/ or send a letter to
  6. # Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
  7. """Minimal script for generating an image using pre-trained StyleGAN generator."""
  8. import os
  9. import pickle
  10. import numpy as np
  11. import PIL.Image
  12. import dnnlib.tflib as tflib
  13. import config
  14. import glob
  15. import random
  16. MODEL = './cache/2019-03-08-stylegan-animefaces-network-02051-021980.pkl'  【#这个就是指定的生成器的地址,原版为谷歌网盘上面的一个存储链接,目前已经替换成已经缓存的动漫的生成器#】
  17. PREFIX = 'Demo'
  18. SEED = random.randint(0,10000)  【#这个就是大佬修改的每次打开以后的0-10000随机扰动因子,对应下面的SEED#】
  19. def load_Gs(filepath):
  20. # Load pre-trained network.
  21. model_file = glob.glob(filepath)
  22. iflen(model_file) ==1:
  23. model_file = open(model_file[0], "rb")
  24. else:
  25. raiseException('Failed to find the model')
  26. _G, _D, Gs = pickle.load(model_file)
  27. # Print network details.
  28. Gs.print_layers()
  29. return Gs
  30. def main():
  31. # Initialize TensorFlow.
  32. tflib.init_tf()
  33. # Genetate Image
  34. os.makedirs(config.result_dir, exist_ok=True)
  35. save_name = PREFIX + '_' + str(random.getrandbits(64)) + '.png'
  36. save_path = os.path.join(config.result_dir, save_name)
  37. Gs = load_Gs(MODEL)
  38. rnd = np.random.RandomState(SEED)
  39. latents = rnd.randn(1, Gs.input_shape[1])
  40. fmt = dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=True)
  41. print('* Generating...')
  42. images = Gs.run(latents, None, truncation_psi=0.7, randomize_noise=True, output_transform=fmt)
  43. print('* Done')
  44. # Save image.
  45. PIL.Image.fromarray(images[0], 'RGB').save(save_path)
  46. print('* Image ['+ save_name +'] has beed saved to ./result')
  47. if __name__ == "__main__":
  48. main()
下一步研究:如何自定义修改生成参数和python的基本语法入门……
PS:如何使用stylegan训练自己的照片数据集 请看这篇文章