【毕设】基于CycleGAN的风格迁移【一】环境搭建及运行代码

2023-10-28

源代码地址:CycleGAN源码

因为该篇内容包含Anaconda的环境管理及包的管理,可以选择参考:Anaconda安装+环境管理+包管理+实际演练例子(全网最详细)_MrRoose1的博客-CSDN博客

一、搭配环境

1.首先把代码包下载并解压到本地(我是直接放到桌面)。

2.打开Anaconda prompt,先切换路径到代码包解压的路径中。

3. 然后通过使用作者的环境包来搭建设定好的环境,输入:

conda env create -f environment.yml

 随后产生一个叫pytorch-CycleGAN-and-pix2pix的环境名称。我们可以通过输入:

conda info --envs

来查看已有的虚拟环境名称。

 4.由于CycleGAN源码中用到了visdom,但此时pytorch-CycleGAN-and-pix2pix环境中却没有visdom这个包,我们需要手动安装。先进入到pytorch-CycleGAN-and-pix2pix虚拟环境中,输入:

activate pytorch-CycleGAN-and-pix2pix

 再通过pip来安装visdom,输入:

pip install -r requirements.txt

注:期间会有一些提示,显示一些包的版本,那些不用管,因为pip中的requirement.txt与conda中的environment.yml之间有一些包版本不一致,但不耽误我们搭配环境哈,你们按照我的步骤来,保准没问题。 

上述就是先把基础环境搭配好了


二、数据集下载

从解压后的代码包中,找到download_cyclegan_dataset.sh文件

(我的地址是:D:\桌面\pytorch-CycleGAN-and-pix2pix-master\datasets\download_cyclegan_dataset.sh)

通过记事本打开,找到

其中复制’$‘前面的地址并打开:(地址:Index of /cyclegan/datasets

以我为例,下载horse2zebra这个压缩包,把这个数据集解压并保存在解压后的代码包的dataset文件中(我的地址:D:\桌面\毕业设计-图像风格迁移\Neural-Style-GAN\pytorch-CycleGAN-and-pix2pix-master\pytorch-CycleGAN-and-pix2pix-master\datasets) 

此时数据集和环境已经准备好了,我们可以打开pycharm进行最后的参数调试。

三、调用Visdom及运行pycharm前的参数搭建

Train.py

首先需要参考Pycharm中如何配置已有的环境_MrRoose1的博客-CSDN博客把刚刚在anaconda中安装的pytorch-CycleGAN-and-pix2pix虚拟环境配置在pycharm中。

随后由下图可得,如果想保证训练正常运行,得先python -m visdom.server,启动服务器(可以,有tensorboard那味儿了)

那就在terminal开一下,如下图所示

 注:我后期把代码包转移位置,放到了桌面一个名叫毕业设计-风格迁移内部的一个叫Neural-Style-GAN文件夹中,此时代码包的路径是 (D:\桌面\毕业设计-图像风格迁移\Neural-Style-GAN\pytorch-CycleGAN-and-pix2pix-master\pytorch-CycleGAN-and-pix2pix-master)

从图片中我们可以看到“It's Alive!”代表启动成功,点击terminal中的地址,就可以在train代码的时候看见页面的变化(此时还没有run代码,所以页面内啥也看不到)。

最后看一下这个训练参数设置

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

这里说一下以前没说的,类似这种附加参数在pycharm里打开文件后(注意现在活跃的脚本和你想添加参数的脚本要一致,比如我们要添加train文件中的参数,那我们就应该注意红色框内的文件名是否是train) run/Edit Configurations/

打开然后把后面的参数塞到里面,当然,因为数据集不同,所以需要稍微改改

--dataroot ./datasets/horse2zebra --name horse2zebra_cyclegan --model cycle_gan

然后直接训练。

(可能会出现的问题)

第一个

UserWarning: Argument interpolation should be of type InterpolationMode instead of int. Please, use InterpolationMode enum.
“Argument interpolation should be of type InterpolationMode instead of int. “

关于这个问题,在网上找了一圈,在base_dataset添加InterpolationMode,并代替PIL.Image。
你说它没事插什么值啊!

from torchvision.transforms import InterpolationMode

定位到dataset的transform里(base_dataset.py),添加引用,然后改一下

def get_transform(opt, params=None, grayscale=False, method=Image.BICUBIC, convert=True):

原81行

def get_transform(opt, params=None, grayscale=False, method=InterpolationMode.BICUBIC, convert=True):

改81行

第二个

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.

这说的就很明白了,就是说pytorch1.1.0之后,优化器的更新要放到学习率更新的前面,定位到就在train里(还好这俩玩意没被放一块)把学习率更新扔后面

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

注释掉train43行

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

放到78行运行完一个epoch后

然后就应该没问题可以正常运行了。

Test.py

我们可以下载作者已经训练好的模型来直接上手跑。地址:Index of /cyclegan/pretrained_models

 这里我下载的是horse2zebra.pth文件。随后在解压后的代码包中找到checkpoints文件夹,在里面新建一个叫{name}_pretrained的文件夹(其中{name}此时是horse2zebra),把下载好的文件重命名为latest_net_G.pth,并保存在{name}_pretrained(horse2zebra_pretrained)中。

 然后与train.py训练一样,添加pycharm参数即可(text.py不需要开启visdom

--dataroot datasets/horse2zebra/testA --name horse2zebra_pretrained --model test --no_dropout

 注:这里稍微注意一下dataroot中的路径,最后的是testA,为什么不是testB呢,因为这个模型是马转换成斑马的单向转换模型,textA中全都是马的数据集,而testB中都是斑马的数据集。

test.py运行后的结果(风格迁移后的图片)在D:\桌面\毕业设计-图像风格迁移\Neural-Style-GAN\pytorch-CycleGAN-and-pix2pix-master\pytorch-CycleGAN-and-pix2pix-master\results\horse2zebra_pretained\test_latest\images路径中查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【毕设】基于CycleGAN的风格迁移【一】环境搭建及运行代码 的相关文章

随机推荐

  • 如何在 Vim / Vi 中删除行

    Vim 或其前身 Vi 预装在大多数 Linux 发行版和 macOS 上 如果您是系统管理员或普通 Linux 用户 了解 Vim 的基础知识非常重要 很多时候 在处理文本文件时 您需要删除一行或多行 本文介绍如何在 Vim Vi 中删除
  • 如何使用 Linux 命令行文本编辑器 Nano

    使用命令行时 您经常需要创建或编辑文本文件 Vim 和 Emacs 是两个最强大和流行的命令行编辑器 它们都有一个陡峭的学习曲线 可能会让新用户感到害怕 对于那些需要简单编辑器的人来说 有 nano GNU nano 是一款适用于 Unix
  • Bash 等待命令

    wait是等待给定作业完成并返回的命令退出状态等待的命令 自从wait命令影响当前 shell 执行环境 它在大多数 shell 中作为内置命令实现 在本文中 我们将探讨 Bash 内置功能wait命令 Bash wait命令 的一般语法w
  • 如何在 Ubuntu 18.04 上安装 Nginx

    Nginx 发音为 engine x 是一个免费 开源 高性能的 HTTP 和反向代理服务器 负责处理互联网上一些最大网站的负载 Nginx 可以用作独立的 Web 服务器 也可以用作反向代理 for Apache和其他网络服务器 与 Ap
  • 如何在 Linux 中列出 Cron 作业

    Cron 是一个调度守护程序 允许您安排按指定时间间隔执行任务 这些任务称为 cron 作业 可以安排按分钟 小时 每月的某一天 每月 每周的某一天或这些的任意组合运行 Cron 作业通常用于执行系统维护操作 例如 可以设置 cron 作业
  • 如何在 Ubuntu 18.04 上安装 Eclipse IDE

    Eclipse是使用最广泛的Java集成开发环境 IDE 它可以通过插件进行扩展 也可以用于其他编程语言的开发 例如 C JavaScript 和PHP Ubuntu 存储库中提供的 Eclipse 安装包 版本 3 8 1 已过时 最简单
  • 设置 Nginx 反向代理

    反向代理是一种接受客户端请求 将请求发送到一个或多个代理服务器 获取响应并将服务器的响应传递给客户端的服务 由于其性能和可扩展性 NGINX 通常用作 HTTP 和非 HTTP 服务器的反向代理 典型的反向代理配置是将Nginx放在前面No
  • chmod 777 是什么意思

    您正在尝试修复您的Web服务器的权限问题 并在互联网上找到了信息 说您需要递归chmod 777网络目录 在此之前 请确保您了解什么是chmod R 777这样做 以及为什么永远不应该将权限设置为 777 本文解释了基本的 Linux 权限
  • 为什么更推荐使用组合而非继承关系?

    前言 最近在看公司项目的代码 看到了大量的继承体系 而且还是继承了多层 维护 阅读都十分的困难 在查阅了一些资料以后 包括 Effective Java 一书中的第16条提到 组合优先于继承 那继承到底会暴露什么问题呢 为什么更推荐优先使用
  • Arduino搭建盲猜数字小游戏

    1 本文整理自视频 太极创客 零基础入门学用Arduino 第一部分 合辑 需要的硬件 一个Arduino Uno开发板 一个200 500欧姆电阻 一个共阴极数码管 一个按键 数条杜邦线 跳线 2 显示数字其实就是显示各个数码管 注意需要
  • 重温Linux内核:互斥和同步

    文章目录 互斥和同步 1 前言 2 概念 2 1 竞态 2 2 共享资源 临界资源 2 3 造成竞态的根本原因 3 并发分类 解决竞态的方法 4 中断屏蔽 5 原子变量 5 1 定义 5 2 实现原理 5 3 API 5 4 注意事项 6
  • 开发踩坑日常 (parseInt进制转换,文字方向、换行,代理请求,xlsx)

    日常踩坑填坑 js进制转换 刚发现有同学没搞清楚这个 parseInt number 进制数 将任意进制 转换 为十进制 强调一下 第二个参数 是形容第一个参数是什么进制的 并不是转换的目标进制 这里贴一下W3C 的文档说明 https w
  • 【转载】windows和wls文件互通

    windows和wls文件互通 wsl访问windows文件 https www jianshu com p d332e05adb6f windows访问wsl文件 https blog csdn net Caoyang He articl
  • Android 之 WebView (网页视图)基本用法

    本节引言 本节给大家带来的是Android中的一个用于显示网页的控件 WebView 网页视图 现在Android应用 层开发的方向有两种 客户端开发和HTML5移动端开发 所谓的HTML5端就是 HTML5 CSS JS来构建 一个网页版
  • TCPIP技术实验大作业:基于TCP/IP的程序开发技术综述及应用实践

    一 基于TCP IP的程序开发技术综述 1 1TCP IP协议族简介 TCP IP也被称作传输控制协议 网际协议 作为网络互连的核心协议 受到广泛的应用 该协议类型作为开放性的标准应用在各种计算机中 在一定程度上保证系统间通信的正常运行 在
  • mysql replication环境检查脚本

    author skate time 2013 05 13 mysql replication环境检查脚本 此脚本部署在slave端 可以通过短信或邮件监控slave的mysqld健康 replication环境健康 及复制延迟 脚本 mys
  • monorepo 下的 package tsc 构建

    很多个package都需要构建到每个项目的 lib 下 可以用 vscode 的 tasks json 任务去实现 具体 tasks json 的详情请看官网 https code visualstudio com docs editor
  • JavaScript中字符串的大小写转换(轮子,直接cv即可)

    此文件为js文件 封装模块按需导出即可 str 需要首字母转换的字符串 全部大写 export const all2Large str gt const arr str split let newStr 通过数组的forEach方法来遍历数
  • 解决Ubuntu下 anaconda 与ros opencv冲突的问题

    解决Ubuntu下 anaconda 与ros opencv冲突的问题 问题描述 解决办法之一 问题描述 在Ubuntu16 04上先后安装了Anaconda和ROS 然后在anaconda配置的pytorch环境中运行python代码 在
  • 【毕设】基于CycleGAN的风格迁移【一】环境搭建及运行代码

    源代码地址 CycleGAN源码 因为该篇内容包含Anaconda的环境管理及包的管理 可以选择参考 Anaconda安装 环境管理 包管理 实际演练例子 全网最详细 MrRoose1的博客 CSDN博客 一 搭配环境 1 首先把代码包下载