【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch

文章目录

  • 前言
  • 一、下载项目,文件结构观察
  • 二、数据集下载
  • 三、训练
    • 3.1、训练初体验
    • 3.2、命令行输入参数
    • 3.3、继续训练命令
  • 四、预测
    • 4.1、使用自己训练完的权重文件进行预测
    • 4.2、使用网上的预训练文件进行预测


前言

你敢想象,就是这么一个简单的开源网站,我居然调了一天才通(毕竟是第一次,一些比如visdom,命令行的参数第一次接触到)
本文所使用的开源项目网址:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

一、下载项目,文件结构观察

下载项目完成后,我们看看内部的结构:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第1张图片
据说后面很多开源项目都是按照这个格式来的(大致格式)

二、数据集下载

在ReadMe里面已经提到了数据集下载方式:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第2张图片
但是这里的bash命令一直没有运行成功,所以换用其他方法:
我们打开dataset文件夹:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第3张图片
用记事本打开里面的cyclegan的sh文件,把这行网址复制粘贴(最后一个反斜杠后面的内容删除):
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第4张图片
打开网址,选择你想要的数据集,这里我们的实验选择斑马horse2zebra数据集:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第5张图片
解压之后,把数据集粘贴到datasets下面:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第6张图片
斑马数据集内部长这个样子,后面如果要自己制造数据集也是这样搞:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第7张图片

三、训练

3.1、训练初体验

训练前,看看自己的环境是不是安装好了,尤其是visdom这个可视化库。没用过的话建议先用用看,试一试,防止后面出问题找不出来错误。

在开始训练前,需要打开visdom,在命令行直接输入以下命令:

python -m visdom.server

【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第8张图片
点击下面的8097网址进去:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第9张图片
下面就是比较关键的,输入训练指令,Readme里面也给出了比较清楚的指令(不过我们需要进行修改):

python train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan

我们来解释一下,这三个需要导入的参数分别是什么:?
1)datasets 这个最简单,就是数据集的路径
2)name 这里指的是保存训练权重的文件夹的名字。在开始训练后,文件夹里会生成一个checkpoints子文件夹,用来保存权重文件:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第10张图片
而打开后就是我们命名的文件夹:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第11张图片
里面的权重文件长这样:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第12张图片
web里面放着训练过程
3) model:这个顾名思义就是训练的模型是啥,这个开源项目的模型如下(在model文件夹里):
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第13张图片
在命令行里输入cycle_gan后 程序会自动加上_model

介绍完之后,我们来更改

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

我们在命令行里面运行,不出意外的话,意外就来了:
在这里插入图片描述
报错内容:module ‘torch._C’ has no attribute ‘_cuda_setDevice’
在网上查找资料说,这是因为环境里pytorch下载的CPU版本导致的。但是我环境里明明是GPU版本呀,这里有可能是因为CMD命令行识别环境错了,所以我们换在anaconda里面运行:

【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第14张图片
记得要激活自己的GPU环境,同时切换到文件路径,再输入命令后:

【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第15张图片
在这里插入图片描述
这里开始,训练就正式开始了,训练可视化可以在visdom里面看:

3.2、命令行输入参数

我们在3.1中输入到命令行的参数为:

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

也就三个。其实事实上能输入的不止这些,还有很多其他参数也是可以输入进去的:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第16张图片
在train_options这个py文件中,存在大量的add_argument,这些参数都是可以输入的,且有文字描述,帮助大家理解它们是用来干啥的。

3.3、继续训练命令

比如我昨天训练了15个epoch,今天我想继续训练,可以在命令行中输入下列指令:

从图片中我们可以看到,继续训练的开关被打开了

【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第17张图片
在这里插入图片描述
但是它画图依然是从1epoch开始画的,而不是从我停止训练的15epoch,不知道有没有大神能够指点一下
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第18张图片

四、预测

4.1、使用自己训练完的权重文件进行预测

这里我自己训练了15轮,权重文件保存在checkpoint里:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第19张图片
我们在anconda命令行里输入:

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

结果会保存在results 文件夹里:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第20张图片

【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第21张图片

【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第22张图片
打开html我们看看效果:

15轮的效果还是一般 轮数没训练够

4.2、使用网上的预训练文件进行预测

首先我们需要在网上下载预训练权重文件:预训练文件
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第23张图片
下载完毕后,在check_points文件夹里面新建一个文件夹:horse2zebra.pth_pretrained:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第24张图片
将刚刚下载的预训练权重重新命名为:latest_net_G.pth:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第25张图片
这时候的准备工作已经完成了,此时打开anconda 激活环境 切换路径,输入下列指令:

python test.py --dataroot datasets/horse2zebra/testA --name horse2zebra.pth_pretrained --model test --no_dropout

此时就开始预测了:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第26张图片
预测完成后可以在根目录下的results文件夹中找到结果:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第27张图片
载打开里面的文件夹可以看到
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第28张图片
打开html:
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch_第29张图片
可以看到效果明显比我自己训练的好(毕竟我才训练了15轮)

你可能感兴趣的:(pytorch,深度学习,pytorch,学习)