最近在研究如何使用nvidia StyleGAN以及StyleGAN的运行方法,但是摸不着头绪,很幸运遇到群里的大神手把手指导,终于得以成功运行stylegan的pretrained_example.py官方实例……中间踩坑无数,在这里给大家讲讲避免踩坑的方法……
在此特别鸣谢星轨大佬,然后还有CSDN里面数不清的文章,遇到了许许多多的问题,看了几十篇文章,在此不再一一叙述,总之表示十分感谢。

首先先说一下我自己电脑运行环境:

系统:WIN10 64bit
显卡:GTX1070
CPU:AMD1800X
其他……略,好像不太重要

 

其实除了GPU要求高一些,其他问题都不大,可以对照英伟达的一个算力表来看自己的显卡适不适合CUDA加速。

个人推荐CUDA10.0+CUDNN7.5+tensorflow-gpu1.13.1+python3.7 这个版本搭配,因为自己跑通了,不同的CUDA,不同的tensorflow可能会有奇奇怪怪的问题。

网上说tensorflow-gpu1.13.1不支持CUDA10.1,我好像也确实遇到了这个问题,不建议安装。

 

20190326补充:朋友的CUDA9.0环境下也运行成功了,所以问题不大

官方给出的系统要求

  • Linux和Windows都受支持,但出于性能和兼容性的原因,我们强烈建议使用Linux。
  • 64位Python 3.6安装。我们推荐使用numpy 1.14.3或更新的Anaconda3。
  • TensorFlow 1.10.0或更高版本,支持GPU。
  • 一个或多个具有至少11GB DRAM的高端NVIDIA GPU。我们推荐配备8个Tesla V100 GPU的NVIDIA DGX-1。(注:只是使用预训练的集不需要这么强大的显卡,训练自己的训练集就需要了)
  • NVIDIA驱动程序391.35或更高版本,CUDA工具包9.0或更高版本,cuDNN 7.3.1或更高版本。

 

首先是准备阶段:

1.你要知道一些linux基本命令,比如cd c:\xxxx(文件路径)是打开项目的文件夹、python xxxx.py是使用python运行这个py文件、pip install xxxxxx  我理解为是联网自动打包安装某个程序

2.你要拥有一块较高算力的NVIDIA显卡,可以从这个网站来获取CUDA的算力信息https://developer.nvidia.com/cuda-gpus
PS:前两天看到一篇文章,说GT1030算力居然有6.1(compute capability: 6.1),虽然不在老黄的名单中,但是这算力价格比可以说是性价比最高的CUDA加速卡了吧,和以下主流卡在同一个水平上…… 详见下图

compute capability

NVIDIA TITAN RTX 7.5
Geforce RTX 2080 Ti 7.5
Geforce RTX 2080 7.5
Geforce RTX 2070 7.5
Geforce RTX 2060 7.5
NVIDIA TITAN V 7.0
NVIDIA TITAN X 6.1
GeForce GTX 1080 Ti 6.1
GeForce GTX 1080 6.1
GeForce GTX 1070 6.1
GeForce GTX 1060 6.1
GeForce GTX 1050 6.1

 3.坚忍不拔的耐心……2333(我装好tensorflow环境至少花了10小时以上的时间,走了无数的弯路,如果按照正确的方法,其实应该很快就搞定的。)

4.更新显卡驱动版本更新为最新,或者在安装CUDA的时候卸载掉之前有的nvidia GeForce Experience,然后使用CUDA的安装包重新装一次。有时候因为
CUDA的安装包里面含有显卡驱动程序。我个人是删掉所有显卡驱动之后重装的,如果你之前安装了CUDA发现提示说
status: CUDA DRIVER VERSION is insufficient for cuda runtime version 的报错,其原因是因为显卡驱动的版本过低,在此附上英伟达CUDA最低支持的显卡驱动版本对应表

Table 1. CUDA Toolkit and Compatible Driver Versions
CUDA Toolkit Linux x86_64 Driver Version Windows x86_64 Driver Version
CUDA 10.1.105 >= 418.39 >= 418.96
CUDA 10.0.130 >= 410.48 >= 411.31
CUDA 9.2 (9.2.148 Update 1) >= 396.37 >= 398.26
CUDA 9.2 (9.2.88) >= 396.26 >= 397.44
CUDA 9.1 (9.1.85) >= 390.46 >= 391.29
CUDA 9.0 (9.0.76) >= 384.81 >= 385.54
CUDA 8.0 (8.0.61 GA2) >= 375.26 >= 376.51
CUDA 8.0 (8.0.44) >= 367.48 >= 369.30
CUDA 7.5 (7.5.16) >= 352.31 >= 353.66
CUDA 7.0 (7.0.28) >= 346.46 >= 347.62

有两种办法查看当前电脑的显卡驱动版本:

https://blog.csdn.net/li57681522/article/details/82491617

右键打开我的电脑,在左侧边栏有个高级系统设置,右下角有个环境变量,上方方框里面有个ADMINISTRATOR(你电脑用户名)的用户变量,里面有个path值,双击打开,点击右侧新建,加入:C:\Program Files\NVIDIA Corporation\NVSMI

使用【win+R 输入cmd 】——回车执行,或者【开始菜单——运行——cmd】—— 回车执行
在DOS界面下输入
nvidia-smi

就可以看到当前显卡的驱动版本啦

或者你直接打开GeForce Experience 看当前驱动版本就行……不过这东西要登陆的,而且还有时候被墙,就很尴尬

 

确定硬件设备OK,驱动OK,之后可以开始安装:

1.安装CUDA(貌似stylegan仅支持10以上的CUDA,建议使用CUDA10)

地址:https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
这里是win10 32/64bit系统下载链接
如果你是MAC或者LINUX用户,以及其他版本比如win7用户,需要改成自己的系统(Version)要求下载
下载安装cuda10完成之后,必须下载对应版本的cudnn,其中cuda10对应的cudnn版本为cudnn-10.0-windows10-x64-v7.5.0.56

cudnn下载地址和安装办法:
https://developer.nvidia.com/cudnn
这里需要注册填写一个调查问卷,然后下载cudnn对应cuda10.0版本的,注意别下成了10.1的,必须对应版本!

cudnn文件的放置方法和环境变量设置:

https://www.tensorflow.org/install/gpu#windows_setup
也就是说在C盘下新建一个tools的文件夹,把cudnn解压进去,然后再添加三个path的环境变量(如上面图倒数2-4个变量):

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\CUPTI\libx64
C:\tools\cuda\bin
把下载的cudnn文件分别按照文件夹放到下面的目录:

cudnn\bin\cudnn64_5.dll to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\
cudnn\include\cudnn.h to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include\
cudnn\lib\x64\cudnn.lib to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64\

2.安装adaconda python3.7版本(stylegan需要python3.7的)

Anaconda Python/R Distribution

选择python3.7版本adaconda

以及下方的图形化界面安装版本:64-Bit Graphical Installer (652.7 MB)
在安装中,记得勾选
【√】JUST ME
然后选择完安装路径之后
勾选【√】:Add Anaconda to my PATH environment variable
个人觉得这样子好像有利于执行相关程序……

安装完成之后,开始菜单中  adaconda3文件夹下会出现Anaconda Prompt 这个应用程序,这个个人理解为一个虚拟机……类似linux,我们直接在这里执行安装代码,当然也可以用adaconda的图形化界面,但是觉得比较麻烦……

 

3.创建tensorflow-gpu需要的虚拟环境:
打开开始菜单中 adaconda3文件夹下Anaconda Prompt 程序
应该会显示  (base) C:\Users\Administrator> 
在这行文字之后输入:conda creat -n tensorflow-gpu python=3.7
这就是在adaconda中创建一个名字叫做tensorflow-gpu的环境,其python版本为3.7
之后adaconda会自动创建,并且列出各种库的名字:
然后会问你yes or no
输入 y 按回车
就会自动创建环境了,当环境创建完成,会重新显示

(base) C:\Users\Administrator(这个名字是你电脑的用户名)>
此时输入
conda activate tensorflow-gpu
会发现这行文字显示为:
(tensorflow-gpu) C:\Users\Administrator>
代表环境创建完成并且已经激活进入了这个环境!

 

4.安装tensorflow1.13.1
打开开始菜单中 adaconda3文件夹下Anaconda Prompt 程序(刚才应该已经打开了),输入conda activate tensorflow-gpu进入tensorflow-gpu环境(如果上一 步走下来应该是已经进入了这个环境了)

此时应该显示的是:(tensorflow-gpu) C:\Users\Administrator>
在这行文字之后输入:

pip install tensorflow-gpu   (意思是直接打包安装tensorflow-gpu)

或者:pip install –upgrade tensorflow-gpu
再或者保守的说(害怕大家看到文章的时候有tensorflow-gpu更新版本的了),也可以选择输入:

pip install tensorflow-gpu==1.13.1

也就是安装指定版本的python

 

ps:如果这时候电脑报错说:

Youare using pip version 9.0.1, however version 1x.x.x is available.

Youshould consider upgrading via the ‘python -m pip install –upgrade pip’command.

那就先执行python -m pip install –upgrade pip 说明pip版本太老了,需要先更新pip版本再安装tensorflow-gpu

此时需要挂梯子或者代理!否则有可能没有速度,有时候安装会中断,所以可以多试几次
实在不行可以找找国内的缓存或者github的源

如果最后退回到(tensorflow-gpu) C:\Users\Administrator> 就说明安装完成,正常上面应该有显示successful

 

5.去github下载stylegan的源码

网址:https://github.com/NVlabs/stylegan
点击右边的clon or download按钮,然后点击download zip 就可以把程序打包下载到本机了!
下载完成之后,建议解压移动到C:\Users\Administrator文件夹下,因为这是adaconda默认的文件目录,比较好修改,也好连接
接下来,打开开始菜单中 adaconda3文件夹下Anaconda Prompt 程序
输入:activate tensorflow-gpu
再输入:cd C:\Users\Administrator\stylegan-master

此时应该显示(tensorflow-gpu) C:\Users\Administrator\stylegan-master>

输入:python pretrained_example.py
如果报错:NO MODLE NAME “PIL”
说明缺少pillow库,运行:pip install pillow

再运行python pretrained_example.py,如果还报错:no modle named “requests”
运行:pip install requests

 

如果显示:download from :xxxxx 什么googlexxx什么的,代表正在下载参考数据集,大约300m左右,下载完成之后会运行下面程序:(大约只需要10秒钟左右就能生成一张照片:)

注意:此时必须挂梯子或者代理!否则有可能没有速度

 

 

 

(tensorflow-gpu) C:\Users\Administrator\stylegan-master>python pretrained_example.pyWARNING:tensorflow:From C:\ProgramData\Anaconda3\envs\tensorflow-gpu\lib\site-packages\tensorflow\python\framework\op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.

(意思是有些乱七八糟的东西将在将来的版本中被移除,问题不大)

Gs Params OutputShape WeightShape
— — — —
latents_in – (?, 512) –
labels_in – (?, 0) –
lod – () –
dlatent_avg – (512,) –
G_mapping/latents_in – (?, 512) –
G_mapping/labels_in – (?, 0) –
G_mapping/PixelNorm – (?, 512) –
G_mapping/Dense0 262656 (?, 512) (512, 512)
G_mapping/Dense1 262656 (?, 512) (512, 512)
G_mapping/Dense2 262656 (?, 512) (512, 512)
G_mapping/Dense3 262656 (?, 512) (512, 512)
G_mapping/Dense4 262656 (?, 512) (512, 512)
G_mapping/Dense5 262656 (?, 512) (512, 512)
G_mapping/Dense6 262656 (?, 512) (512, 512)
G_mapping/Dense7 262656 (?, 512) (512, 512)
G_mapping/Broadcast – (?, 18, 512) –
G_mapping/dlatents_out – (?, 18, 512) –
Truncation – (?, 18, 512) –
G_synthesis/dlatents_in – (?, 18, 512) –
G_synthesis/4×4/Const 534528 (?, 512, 4, 4) (512,)
G_synthesis/4×4/Conv 2885632 (?, 512, 4, 4) (3, 3, 512, 512)
G_synthesis/ToRGB_lod8 1539 (?, 3, 4, 4) (1, 1, 512, 3)
G_synthesis/8×8/Conv0_up 2885632 (?, 512, 8, 8) (3, 3, 512, 512)
G_synthesis/8×8/Conv1 2885632 (?, 512, 8, 8) (3, 3, 512, 512)
G_synthesis/ToRGB_lod7 1539 (?, 3, 8, 8) (1, 1, 512, 3)
G_synthesis/Upscale2D – (?, 3, 8, 8) –
G_synthesis/Grow_lod7 – (?, 3, 8, 8) –
G_synthesis/16×16/Conv0_up 2885632 (?, 512, 16, 16) (3, 3, 512, 512)
G_synthesis/16×16/Conv1 2885632 (?, 512, 16, 16) (3, 3, 512, 512)
G_synthesis/ToRGB_lod6 1539 (?, 3, 16, 16) (1, 1, 512, 3)
G_synthesis/Upscale2D_1 – (?, 3, 16, 16) –
G_synthesis/Grow_lod6 – (?, 3, 16, 16) –
G_synthesis/32×32/Conv0_up 2885632 (?, 512, 32, 32) (3, 3, 512, 512)
G_synthesis/32×32/Conv1 2885632 (?, 512, 32, 32) (3, 3, 512, 512)
G_synthesis/ToRGB_lod5 1539 (?, 3, 32, 32) (1, 1, 512, 3)
G_synthesis/Upscale2D_2 – (?, 3, 32, 32) –
G_synthesis/Grow_lod5 – (?, 3, 32, 32) –
G_synthesis/64×64/Conv0_up 1442816 (?, 256, 64, 64) (3, 3, 512, 256)
G_synthesis/64×64/Conv1 852992 (?, 256, 64, 64) (3, 3, 256, 256)
G_synthesis/ToRGB_lod4 771 (?, 3, 64, 64) (1, 1, 256, 3)
G_synthesis/Upscale2D_3 – (?, 3, 64, 64) –
G_synthesis/Grow_lod4 – (?, 3, 64, 64) –
G_synthesis/128×128/Conv0_up 426496 (?, 128, 128, 128) (3, 3, 256, 128)
G_synthesis/128×128/Conv1 279040 (?, 128, 128, 128) (3, 3, 128, 128)
G_synthesis/ToRGB_lod3 387 (?, 3, 128, 128) (1, 1, 128, 3)
G_synthesis/Upscale2D_4 – (?, 3, 128, 128) –
G_synthesis/Grow_lod3 – (?, 3, 128, 128) –
G_synthesis/256×256/Conv0_up 139520 (?, 64, 256, 256) (3, 3, 128, 64)
G_synthesis/256×256/Conv1 102656 (?, 64, 256, 256) (3, 3, 64, 64)
G_synthesis/ToRGB_lod2 195 (?, 3, 256, 256) (1, 1, 64, 3)
G_synthesis/Upscale2D_5 – (?, 3, 256, 256) –
G_synthesis/Grow_lod2 – (?, 3, 256, 256) –
G_synthesis/512×512/Conv0_up 51328 (?, 32, 512, 512) (3, 3, 64, 32)
G_synthesis/512×512/Conv1 42112 (?, 32, 512, 512) (3, 3, 32, 32)
G_synthesis/ToRGB_lod1 99 (?, 3, 512, 512) (1, 1, 32, 3)
G_synthesis/Upscale2D_6 – (?, 3, 512, 512) –
G_synthesis/Grow_lod1 – (?, 3, 512, 512) –
G_synthesis/1024×1024/Conv0_up 21056 (?, 16, 1024, 1024) (3, 3, 32, 16)
G_synthesis/1024×1024/Conv1 18752 (?, 16, 1024, 1024) (3, 3, 16, 16)
G_synthesis/ToRGB_lod0 51 (?, 3, 1024, 1024) (1, 1, 16, 3)
G_synthesis/Upscale2D_7 – (?, 3, 1024, 1024) –
G_synthesis/Grow_lod0 – (?, 3, 1024, 1024) –
G_synthesis/images_out – (?, 3, 1024, 1024) –
G_synthesis/lod – () –
G_synthesis/noise0 – (1, 1, 4, 4) –
G_synthesis/noise1 – (1, 1, 4, 4) –
G_synthesis/noise2 – (1, 1, 8, 8) –
G_synthesis/noise3 – (1, 1, 8, 8) –
G_synthesis/noise4 – (1, 1, 16, 16) –
G_synthesis/noise5 – (1, 1, 16, 16) –
G_synthesis/noise6 – (1, 1, 32, 32) –
G_synthesis/noise7 – (1, 1, 32, 32) –
G_synthesis/noise8 – (1, 1, 64, 64) –
G_synthesis/noise9 – (1, 1, 64, 64) –
G_synthesis/noise10 – (1, 1, 128, 128) –
G_synthesis/noise11 – (1, 1, 128, 128) –
G_synthesis/noise12 – (1, 1, 256, 256) –
G_synthesis/noise13 – (1, 1, 256, 256) –
G_synthesis/noise14 – (1, 1, 512, 512) –
G_synthesis/noise15 – (1, 1, 512, 512) –
G_synthesis/noise16 – (1, 1, 1024, 1024) –
G_synthesis/noise17 – (1, 1, 1024, 1024) –
images_out – (?, 3, 1024, 1024) –
— — — —
Total 26219627

 

这就说明程序运行了,此时到你的C:\Users\Administrator\stylegan-master\results文件夹下,就能看到生成的照片了

恭喜你完成了stylegan的运行第一步!

 

注意:如果需要生成不同人的照片,使用编译器打开:pretrained_example.py 文件

第34行  rnd = np.random.RandomState(8)

其中()内的内容代表一个扰动因子,输入不同的数字,执行之后会生成不同的照片,可以试试!

PS:个人未来安排:接下来第二步研究老婆头像生成的算法(已完成)
关于如何生成动漫头像  请看这篇http://www.gongyesheji.org/?p=963

打赏
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏