CycleGAN保姆级使用教程

目录

①CycleGAN概述

CycleGAN实现

1.下载并配置环境

2.准备数据集

3.Visdom安装

4.参数介绍

5.开始训练

6.结果测试

总结


一、CycleGAN概述

CycleGAN主要用于图像到图像的转换任务,能够将图像从一个领域转换到另一个领域,而无需在训练过程中使用配对示例。该模型尤其适用于将照片转换为绘画、改变图像中的季节或在不同艺术风格之间转换图像等任务。

论文《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》

很推荐读一下这篇ICCV2017的文章,有兴趣的小伙伴可以点击项目主页去学习一下这篇文章。

项目主页:CycleGAN Project Page

二、CycleGAN实现

1.下载并配置环境

Github:点击进入

我已经将作者官方的代码下载并保存到了网盘中进行分享,如果Github链接进不去的小伙伴可以点击下方的百度网盘进行下载

BaiduYun:点击下载 (key:2qd0)

下载完毕之后使用编译器打开(我这里使用的为Vscode),如上图所示的为CycleGAN官方的项目文件目录。

然后,根据下方的版本号进行安装即可,如果没有配置过torch环境的小伙伴可以学习一下我之前发布的环境配置教程:配置环境(二、mmdetection环境配置)

需要安装的依赖版本号如下:

torch>=1.4.0

torchvision>=0.5.0

dominate>=2.4.0

visdom>=0.1.8.8

wandb

2.准备数据集

①采用CycleGAN官方的数据集

下载链接:数据集下载

②准备自己的数据集

由于CycleGAN是一种非配对的风格迁移方法,所以我们准备数据集时不需要让两个域的文件是成对的,图片的数量也可以不同,具体准备过程如下:

首先新建一个文件夹存放数据集,文件夹中子目录以如下形式命名

┬─ 数据集名称
│   │   ├─ trainA
│   │   │   ├─存放A域训练图片
│   │   └─ trainB
│   │       ├─ 存放B域训练图片
│   │   └─ testA
│   │       ├─ 存放A域测试图片

│   │   └─ testB
│   │       ├─ 存放B域测试图片

本文中我采用的数据集是由UVCGANv2论文中所制作转换动漫头的selfie2anime数据集。

UVCGANv2论文链接:文章下载   Github项目链接:项目下载

selfie2anime数据集如下所示:

A域
B域

3.Visdom安装

我们在进行训练时会发现visdom一直处于下载状态或者出现一些报错,这里我们先解决一下这个问题再进行之后的训练。

首先输入下面的指令对visdom进行激活:

python -m visdom.server

如果遇到上方的报错,需要将科学上网工具关闭再重新输入指令,如果出现下面内容之后说明已经完成visdom的配置。

4.参数介绍

在开始训练之前,我们需要先了解一下配置文件中的一些参数,打开options目录会发现有三个文件,分别是train、test和base,我们主要对train的参数文件进行一个介绍。

表格中为训练配置参数的介绍,其中我们需要重点了解的是display_id(如果需要进行长时间训练的话需要把这个参数设置为0,经过多次训练发现如果可视化打开的话容易造成训练停滞)、n_epochs和n_epochs_decay。默认是训练200个epoch,假如需要训练400轮可以对n_epochs和n_epochs_decay参数进行修改,使其加起来为400轮即可。
 

5.开始训练

训练指令:

python train.py --dataroot datasets/selfie2anime(这里是数据集存放在本地的位置) --name selfie2anime(这个参数能够给这次的训练起一个名字) --model cycle_gan 

错误1

如果出现如上错误,需要先使用 python -m visdom.server 指令激活一下localhost,然后打开另一个窗口输入训练指令,如下图所示,当左侧POST和GET动态变化说明已经可以使用可视化界面:

第一种错误解决之后,Windows系统会出现第二种错误,遇到页面太小这个问题需要对虚拟内存进行设置,具体操作如下所示:

​​​​​错误2

首先打开编辑环境变量的设置窗口,按照:设置——高级——更改——(选择Anconda所在盘符)——自定义大小设置24000即可,然后保存一下,重新训练便可解决错误2。

             

默认的可视化端口为http://localhost:8097/,直接在浏览器打开即可,如果是在linux训练一样可以打开,左侧第一个窗口是训练的损失函数,第三个窗口是对中间窗口各位置图片的介绍。

real_A输入的真实的A图片real_B输入的真实的B图片
fake_B真实图片A生成的伪B风格图片fake_A真实图片B生成的伪A风格图片
rec_Afake_B再生成回A风格图片rec_Bfake_A再生成回B风格图片
idt_B真实图片A生成的A风格图片idt_A真实图片B生成的B风格图片

6.结果测试

 训练过程中的权值和过程文件会保存到checkpoints目录下,我这里由于是在服务器进行的训练因此只在文件夹下存放了最后的权值文件,这里的名称不需要修改,如下图所示:

输入下方指令便可开始测试

python test.py --model test --name selfie2anime(这里name要与训练时的保持一致) --dataroot selfie2anime\testB(这里是测试集路径) --num_test 100(测试图片数量) --model_suffix "_B"(采用A生成器还是B生成器) --no_dropout(无滤波)

这里我是将真实人脸照片转换成二次元人脸照片,因此选用的为生成器B,测试结果会保存到results文件夹下:

下面是我的部分测试结果,整个训练为400轮,效果不是太好,原论文中经过2500轮训练得到了一个不错的效果。

最后,我将本文中所用的代码、数据集和训练的权重文件上传至Github:点击进入,有兴趣的小伙伴可以进行下载测试。目前已经在Hugging face发布了demos,小伙伴可以通过Github进入或者直接点击链接:点击进入。大家可以上传自己的照片来进行动漫化,后续如果有其他新的想法还会在此文章继续进行更新。


总结

本文对CycleGAN方法进行了简单的介绍,帮助大家更好地去了解这项技术。此外,针对代码部分,我对此进行了详细的步骤来让大家更好地去进行训练和测试,通过CycleGAN去尝试有趣的风格转换。

你好!对于nnUNet的使用教程,我可以为你提供一些基本的指导。nnUNet是一个用于医学图像分割的开源框架,旨在简化深度学习模型在医学图像上的训练和推理过程。 以下是一个简单的nnUNet使用教程的大纲: 1. 安装nnUNet:首先,你需要安装nnUNet框架。你可以在nnUNet的GitHub页面找到安装说明。 2. 数据准备:准备你的医学图像数据集。确保你的数据集包含正确的标签,并将其划分为训练集、验证集和测试集。 3. 数据预处理:nnUNet要求对数据进行预处理,包括将图像和标签裁剪为相同大小、进行数据增强等。你可以使用nnUNet提供的预处理脚本来完成这些操作。 4. 配置实验:创建一个配置文件来定义你的实验设置。在配置文件中,你需要指定数据路径、模型架构、训练参数等。 5. 训练模型:使用nnUNet提供的训练脚本开始训练模型。根据你的配置文件,nnUNet将自动加载数据并开始训练。 6. 模型评估:在训练完成后,你可以使用nnUNet提供的评估脚本评估模型在测试集上的性能。 7. 模型推理:使用已经训练好的模型进行推理。nnUNet提供了推理脚本,你可以使用它来对新的医学图像进行分割。 请注意,这只是一个简要的教程大纲。如果你需要更详细的教程或遇到特定问题,请参考nnUNet的文档或在相关论坛上寻求帮助。祝你成功使用nnUNet进行医学图像分割!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PolarisFTL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值