手把手教学CycleGAN开源项目代码运行

目录

  • 前言
  • 一、下载项目,搭配环境
  • 二、下载数据集
  • 三、训练
    • 3.1调用Visdom可视化库
    • 3.2 训练

   最近在学习Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks这篇论文,论文下载地址,想要复现一下文中的代码,过程中遇到了很多问题,因此记录下来。遇到其他问题欢迎在评论区留言,相互解答。


前言

如果没有安装Anaconda或者MIniconda的可以先安装,并学一下简单的环境以及包的管理。基本的语法有:

conda remove -n=your_env_name --all
删除虚拟环境

conda create -n=your_env_name python=3.6
创建虚拟环境

conda info --env 
显示所有环境的列表

conda activate env_name 
切换至env_name环境



一、下载项目,搭配环境

  1. 下载源码并解压。PyTorch版CycleGAN源码下载地址:CycleGAN源码

   项目结构如下,一般的项目都会包含requirements.txt, environment.yml, setup.py三者之中某些或者全部。
   requirements.txt, environment.yml是同一类的东西,它们提供的是当前软件包安装运行所需要的环境或者依赖信息,即这些东西的安装是当前软件包安装和运行的前提条件。这些信息相当于是开发者给使用者提供的用于恢复自己开发时的环境的信息。
   setup.py跟以上两者是完全不一样的,它就是用于安装当前软件包自身的安装脚本。

手把手教学CycleGAN开源项目代码运行_第1张图片

  1. 打开Anaconda prompt,先切换路径到代码包解压的路径中。然后通过使用作者的环境包来搭建设定好的环境,输入:
conda env create -f environment.yml

手把手教学CycleGAN开源项目代码运行_第2张图片
再通过pip来安装visdom,输入:

pip install -r requirements.txt

   如果使用conda env create -f environment.yml命令时,报错CondaHTTPError,可以参考这篇文章:关于anaconda创建环境时出现CondaHTTPError问题的终极解决办法。如果还是不行,由于environment.yml中的包并不多,可以用pip手动安装。

首先创建一个环境:

conda create -n=MyProject python=3.8

进入环境:

conda activate MyProject 

用pip依次安装environment.yml文件中的包(除了torch):

pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ dominate=2.4.0

安装torch:安装教程 , 下载库网址
这里最好下gpu版本的,因为下载gpu版本的,训练时可以选择gpu或者cpu进行训练。但是下载cpu版本,只能选择cpu进行训练。



二、下载数据集

  1. 找到项目中datasets文件夹下的 download_cyclegan_dataset.sh 文件,使用记事本打开,也可以点击数据集链接http://efrosgans.eecs.berkeley.edu/cyclegan/datasets/
    手把手教学CycleGAN开源项目代码运行_第3张图片
  2. 下载horse2zebra这个压缩包,也可以下其他的,把这个数据集解压并保存在解压后的代码包的dataset文件中。
    手把手教学CycleGAN开源项目代码运行_第4张图片
    手把手教学CycleGAN开源项目代码运行_第5张图片
    如果下载压缩包时提示:“无法下载,网络原因”,可以下载idm,
    idm使用教程, idm下载链接



三、训练

3.1调用Visdom可视化库

   首先把项目配置在刚才创建的环境中,参考Pycharm中如何配置已有的环境_MrRoose1的博客-CSDN博客。然后在终端输入python -m visdom.server,如果启动成功显示如下:
手把手教学CycleGAN开源项目代码运行_第6张图片

   如果没有反应,或者在Anaconda prompt中输入python -m visdom.server,显示Downloading scripts, this may take a little while,则可以参考博客visdom服务启动时提示Downloading scripts, this may take a little while解决办法亲测有效,可以解决。


3.2 训练

   如图添加train文件中的参数,把python train.py后面的部分,也就是--dataroot ./datasets/horse2zebra --name horse2zebra --model cycle_gan复制到Parameter中,然后运行train.py。

python train.py --dataroot ./datasets/horse2zebra --name horse2zebra --model cycle_gan

1)datasets 这个最简单,就是数据集的路径
2)name 这里指的是保存训练权重的文件夹的名字
3)model:训练的模型
手把手教学CycleGAN开源项目代码运行_第7张图片

如果报错module ‘torch._C’ has no attribute ‘_cuda_setDevice’,可能是因为环境里pytorch下载的CPU版本导致的。查看pytorch版本的方法:

import torch
# 若返回为True,则使用的是GPU版本的torch,若为False,则为CPU版本
print(torch.cuda.is_available())
# 返回的GPU型号为你使用的GPU型号
print(torch.cuda.get_device_name(0))
  1. 如果下载的是cpu版本,要么下载GPU版本,要么在你执行代码时加上将GPU设置成-1。

① 如果时Python文件中调用了GPU,那么设置:

torch.cuda.set_device(-1)

②如果你用命令行执行python文件,那么在最后加上

python train.py --你的GPU的设置对应形参 -1

你的GPU设置对应形参,是你的Python文件中应该会有一个arg是用来设置要使用GPU的编号的,与1同理。

  1. 如果环境里明明是GPU版本,这里有可能是因为CMD命令行识别环境错了,所以我们换在anaconda里面运行。

报错信息:UserWarning: Detected call of ‘lr_scheduler.step()’ before ‘optimizer.step()’. In PyTorch 1.1.0 and later, you should call them in the opposite order: ‘optimizer.step()’ before ‘lr_scheduler.step()’. Failure to do this will result in PyTorch skipping the first value of the learning rate schedule. See more details at https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
warnings.warn("Detected call of ‘lr_scheduler.step()’ before ‘optimizer.step()’. "
把train.py文件中的第43行注释,放到第78行。

model.update_learning_rate()  # update learning rates in the beginning of every epoch.

运行成功以后,在Visdom可以看到训练过程。
手把手教学CycleGAN开源项目代码运行_第8张图片

参考:
【毕设】基于CycleGAN的风格迁移【一】环境搭建及运行代码
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch

你可能感兴趣的:(DL&ML,开源,python,深度学习)