大家应该前段时间都被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-gpu3.使用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文件的源码如下:
- # Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
- #
- # This work is licensed under the Creative Commons Attribution-NonCommercial
- # 4.0 International License. To view a copy of this license, visit
- # http://creativecommons.org/licenses/by-nc/4.0/ or send a letter to
- # Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
- """Minimal script for generating an image using pre-trained StyleGAN generator."""
- import os
- import pickle
- import numpy as np
- import PIL.Image
- import dnnlib.tflib as tflib
- import config
- import glob
- import random
- MODEL = './cache/2019-03-08-stylegan-animefaces-network-02051-021980.pkl' 【#这个就是指定的生成器的地址,原版为谷歌网盘上面的一个存储链接,目前已经替换成已经缓存的动漫的生成器#】
- PREFIX = 'Demo'
- SEED = random.randint(0,10000) 【#这个就是大佬修改的每次打开以后的0-10000随机扰动因子,对应下面的SEED#】
- def load_Gs(filepath):
- # Load pre-trained network.
- model_file = glob.glob(filepath)
- iflen(model_file) ==1:
- model_file = open(model_file[0], "rb")
- else:
- raiseException('Failed to find the model')
- _G, _D, Gs = pickle.load(model_file)
- # Print network details.
- Gs.print_layers()
- return Gs
- def main():
- # Initialize TensorFlow.
- tflib.init_tf()
- # Genetate Image
- os.makedirs(config.result_dir, exist_ok=True)
- save_name = PREFIX + '_' + str(random.getrandbits(64)) + '.png'
- save_path = os.path.join(config.result_dir, save_name)
- Gs = load_Gs(MODEL)
- rnd = np.random.RandomState(SEED)
- latents = rnd.randn(1, Gs.input_shape[1])
- fmt = dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=True)
- print('* Generating...')
- images = Gs.run(latents, None, truncation_psi=0.7, randomize_noise=True, output_transform=fmt)
- print('* Done')
- # Save image.
- PIL.Image.fromarray(images[0], 'RGB').save(save_path)
- print('* Image ['+ save_name +'] has beed saved to ./result')
- if __name__ == "__main__":
- main()
13 个评论
小孙
想问一下博主,文中的百度网盘链接不能用了,您能在给一个链接吗
隐者艾伦
已经补充链接
b-a
完全按照博主的方法配置,print_layer也成功把网络打印了出来,但是在gs.run()时却异常退出(Exit code 0xc0000006),找了几天都没找到症结真痛苦啊。。求教
显卡是gtx1050ti
隐者艾伦
这……是不是显卡驱动问题咩orz,或者实在不行就重装一下系统吧……
隐者艾伦
我看网上也有说是内存问题的,可以检查一下内存或者显存
soul_M
请问出现 Non-OK-status:Internal: invalid device function 是什么情况呢 🙁
隐者艾伦
尴尬,我也不知道哦!不过可以等有木有懂行的人看到回复你
木十
没有发现你的设备,查查你是不是驱动出问题了
Lucas
想问一下博主~如果想要用自己准备的图片生成头像应该怎么做呀
隐者艾伦
https://www.gongyesheji.org/?p=1218 可以看一下这篇文章,但是说实话没有多GPU很难做这个训练啦
雪竹霜月
成功了,谢谢博主!
顺带一提如果出现了AttributeError: module 'tensorflow' has no attribute 'Dimension'这个错误,是因为安装了不正确的TensorFlow 2.0版本。如果要跑博主提供的预训练模型(是这么叫的吧?)需要安装TensorFlow 1.13.1,必须指定这个版本。2.0的一些写法和1.x不太一样。
隐者艾伦
感谢补充喵!
huaji0353
https://github.com/huaji0353/styleGAN_CPU
本人改的CPU补丁,不用安装CUDA与tensorflow-GPU,tensorflow-cpu即可
昨天改了一整天,ipdb都没删。。。到中午终于改好
坑爹的运算格式。。。谷歌您啊就不能在CPU版本写个自动NCHW转NHWC吗??