以下内容为本人亲测使用过程,完成了橘子到苹果的AI转化效果,先上效果:
1、下载数据集
Index of /cyclegan/datasets
本次做的是苹果和橘子相互转化的实验,所以下载apple2orange.zip数据集
2、下载代码
github地址为:
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
3、程序运行
(1)数据集
将数据集apple2orange放到代码的datasets目录下
(2)运行visdom
这个是facebook开发的类似tensorboard的可视化工具
执行命令:python -m visdom.server
刚打开是只有蓝色背景:
(3)本地执行train.py文件
在pycharm中的”Run”-> “Edit Configurations”下配置执行参数
--dataroot ./datasets/apple2orange --name apple2orange_cyclegan --model cycle_gan
执行后报错如下:“AttributeError: module 'torchvision.transforms' has no attribute 'InterpolationMode'”
解决方案:参考https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/issues/1450文档,data/base_dataset.py文件中将transforms.InterpolationMode.BICUBIC全部修改为Image.BICBIC。
报错信息:OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading "D:\programs\python37\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll" or one of its dependencies.
本人2G的GPU跑不起来,需要改小模型、改少数据加载量、以及CPU运行,如果服务器显存够大则不需要下面的步骤。
修改方法为:
在models/networks.py文件中增加如下信息:
然后修改python运行配置,添加:
--netG
resnet_1blocks
--print_freq
1
--display_freq
2
--gpu_ids
-1
在options/base_options.py中修改--num_threads为1
再次运行成功,pycharm显示如下:
Visdom显示如下:
(4)ECS服务端运行train.py
本人在本机(2G显存)上进行代码调试,在服务器(16G显存)上进行训练。
代码在Docker(0a381dad2084)的位置为:/root/program/pytorch-CycleGAN-and-pix2pix
首先,data/base_dataset.py文件中将transforms.InterpolationMode.BICUBIC全部修改为Image.BICBIC
然后,执行命令:python -m visdom.server -p 8097,先下载一些脚本文件
接着,执行命令:python train.py --dataroot ./datasets/apple2orange --name apple2orange_cyclegan --model cycle_gan --display_id 0 --num_threads 1
后台运行方式为:nohup python -u train.py --dataroot ./datasets/apple2orange --name apple2orange_cyclegan --model cycle_gan --display_id 0 --num_threads 1 > train.log 2>&1 &
注意:一定要指定—display_id 0,否则会报错:Setting up a new session...,然后一直卡在那里。
(5)测试模型效果
下载测试的预料如下,放置两个目录testA和testB,分别放一张苹果和橘子的图片。
执行测试命令:python test.py --dataroot datasets/ping2ju --name apple2orange_cyclegan --model cycle_gan --no_dropout
最后会生成images文件,如下图所示:
最后效果如下: