CycleGan的简单运行

转载:http://blog.sina.com.cn/s/blog_a99f842a0102xf9z.html

一、环境配置——创建conda虚拟环境,安装python3.5+pytorch+cuda8.0+cudnn

0. 安装anaconda
1.创建conda虚拟环境+安装python3.5
conda create -n xxxxx python=3.5
(xxxxx表示自定义环境名字,=后面是python版本号)
2.1 进入虚拟环境 # To activate this environment, use: 
source activate xxxxx
2.2 退出虚拟环境 # To deactivate an active environment, use:
source deactivate


现在先进入虚拟环境,进行后续安装!
3.1 安装pytorch+cuda8.0+cudnn7.0
conda install pytorch torchvision -c pytorch
3.2 顺便装tensorflow-gpu
conda install tensorflow-gpu
3.3 安装一些必备工具包
conda install xxx 或者 pip install xxx
鉴于后续报错, 缺少某些工具,如:
ImportError: No module named 'dominate'  (dominate是一个python库,用于创建HTML文件)
ImportError: No module named 'scipy'         (scipy是python的科学计算工具包)
ImportError: No module named 'visdom'      (visdom是pytorch可视化工具)
请先安装:
pip install dominate
pip install scipy
pip install visdom
4. 测试安装是否成功:(进入虚拟环境→进入python→pytorch / tensorflow,没有报错即表示成功)
source activate python3.5 
python 
import tensorflow as tf
import torch




二、准备工程文件
1. 下载github代码压缩包
CycleGAN and pix2pix in PyTorch
2. 解压文件
unzip 文件名.zip
3. 进入文件夹
cd 文件名
这里下载解压好后就是:cd pytorch-CycleGAN-and-pix2pix




三、指定一块GPU运行
1. 查看GPU情况:(找一个空闲GPU→记录id)
nvidia-smi
nvidia-smi -l                  自动刷新显示
watch -n 1 nvidia-smi   动态显示
2.1 如果没有空闲的GPU,那么就要释放GPU资源,可以终止某些进程......【前提是你知道这个进程没用了...】
(比如看到PID=20957的进程占用显存,杀掉它...)
kill 20957
或者 kill -20957 pid
2.2 如果nvidia-smi下没有显示任何进程,但GPU资源仍然被占用
fuser -v /dev/nvidia*  #查找占用GPU资源的PID
然后按2.1的方式kill掉。
3. 指定GPU:(比如看到id=0的GPU空闲)
CUDA_VISIBLE_DEVICES=0  
使用指定GPU运行.py文件:CUDA_VISIBLE_DEVICES=0  python  文件名.py 


------------------------------------
准备工作完成。
接下来正式开始。
以下整理自 CycleGAN train/test  
------------------------------------




四、准备数据集
1. 下载现成数据集:bash ./datasets/download_cyclegan_dataset.sh maps  
(数据集会保存在 pytorch-CycleGAN-and-pix2pix/datasets/maps 文件夹中)
或者 
2. 自备数据集:
准备一个文件夹try,里面包含四个文件夹trainA、trainB、testA、testB,每个文件夹内分别放有若干图片
复制到 pytorch-CycleGAN-and-pix2pix/datasets/ 下




五、训练模型
1. 训练模型
python train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan --no_dropout
这行代码的意思是:
python train.py:运行train.py,附带一堆参数
--dataroot ./datasets/maps:数据集使用./datasets/maps
--name maps_cyclegan       :训练的新模型命名为 maps_cyclegan
--model cycle_gan              :预训练模型,使用cycle_gan(这个代码还提供pix2pix,要求训练集A和B图片成对)
--no_dropout                      :不使用dropout


运行时指定个GPU吧!(前面加CUDA_VISIBLE_DEVICES=id号)如:
CUDA_VISIBLE_DEVICES=0 python train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan --no_dropout
----------------------------------------------------------------
顺利的话就开始跑模型啦。(不改动内容的话会占用3G显存)
但人生总不会这么顺利。。。
中间挫折写在下一篇。。。
-----------------------------------------------------------------
2. 查看训练结果和损失图
python -m visdom.server
and click the URL:  http://localhost:8097
3. 查看中间结果
保存为HTML文件,位置在 ./checkpoints/maps_cyclegan/web/index.html




六、测试模型
1. 跑测试
python test.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan --phase test --no_dropout
和训练阶段基本一样,除了一个参数:--phase test
2. 查看测试结果
保存为HTML文件,位置在 ./results/maps_cyclegan/latest_test/index.html




结束。
跑一个现成模型代码就是这么舒服。(如果不提中间遇到的各种麻烦...)
但这只是傻瓜式操作,(我承认我傻......orz)
进一步,请移步其他人的著作:
要想知道各文件的构成:
pytorch-cycleGAN网络文件的理解
要想知道代码奔跑中发生了什么,以及一些操作注意事项:
pytorch下利用cycleGAN摘除人脸眼镜实验
要想知道代码具体逻辑:
带你理解CycleGAN,并用TensorFlow轻松实现




下一篇。写中间遇到的各种麻烦...      http://blog.sina.com.cn/s/blog_a99f842a0102xfaz.html

你可能感兴趣的:(pytorch,使用)