发布于2023-05-20 16:06 阅读(415) 评论(0) 点赞(2) 收藏(0)
最近在学习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环境
项目结构如下,一般的项目都会包含requirements.txt, environment.yml, setup.py三者之中某些或者全部。
conda env create -f environment.yml
再通过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进行训练。
首先把项目配置在刚才创建的环境中,参考Pycharm中如何配置已有的环境_MrRoose1的博客-CSDN博客。然后在终端输入python -m visdom.server
,如果启动成功显示如下:
如果没有反应,或者在Anaconda prompt中输入python -m visdom.server
,显示Downloading scripts, this may take a little while,则可以参考博客visdom服务启动时提示Downloading scripts, this may take a little while解决办法亲测有效,可以解决。
如图添加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:训练的模型
如果报错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))
① 如果时Python文件中调用了GPU,那么设置:
torch.cuda.set_device(-1)
②如果你用命令行执行python文件,那么在最后加上
python train.py --你的GPU的设置对应形参 -1
你的GPU设置对应形参,是你的Python文件中应该会有一个arg是用来设置要使用GPU的编号的,与1同理。
报错信息: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可以看到训练过程。
当运行train.py文件时,在文件夹下保存模型里会生成一个web文件,打开里面的html就能看到八种图片:
其中fake_B一般就是想要生成的图片
如果想要继续训练,运行命令如下:
python train.py --dataroot ./datasets/horse2zebra --name horse2zebra --model cycle_gan --continue_train
用同样的方法运行test.py文件:
python test.py --dataroot ./datasets/horse2zebra --name horse2zebra --model cycle_gan
会生成一个results文件夹,打开html可以看到训练的效果。可以看到训练5轮的效果并不好。
--dataroot datasets/horse2zebra/testA --name horse2zebra.pth_pretrained --model test --no_dropout
python test.py --dataroot datasets/horse2zebra/testA --name horse2zebra.pth_pretrained --model test --no_dropout
打开results文件夹下horse2zebra.pth_pretrained文件夹中的html,可以看到训练的效果图。
参考:
【毕设】基于CycleGAN的风格迁移【一】环境搭建及运行代码
【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch
原文链接:https://blog.csdn.net/qq_46231566/article/details/128695992
作者:83whjh
链接:https://www.pythonheidong.com/blog/article/1979381/c0c57166919e71c2b1a1/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!