[Pytorch系列-72]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 使用预训练模型训练CycleGAN模型

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Pytorch系列-72]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 使用预训练模型训练CycleGAN模型相关的知识,希望对你有一定的参考价值。

 作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

 本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122077731


目录

第1章 概述

1.1 代码架构与总体思路

1.2 本章基本思路

1.3 训练方式

第2章 测试步骤

第1步:下载或克隆pytorch-CycleGAN-and-pix2pix所有代码

第2步:切换当前目录

第3步:安装依赖文件(可视化工具)

第4步:下载CycleGAN数据集

第5步:下载预训练模型

第6步:启动可视化工具visdom

第7步:模型训练

第8步:效果展示




第1章 概述

1.1 代码架构与总体思路

[Pytorch系列-63]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 代码总体架构_文火冰糖(王文兵)的博客-CSDN博客作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:目录第1章 理论概述1.1普通GAN, pix2pix, CycleGAN和pix2pixHD的演变过程第2章 CycleGAN-and-pix2pix代码下载2.1 github代码链接2.2 github使用说明2.3 代码下载第3章CycleGAN-and-pix2pix代码代码结构3.1 目录结构3.2 图片转换的两大功能3.3 启动程序的三种方法..https://blog.csdn.net/HiWangWenBing/article/details/121940011

1.2 本章基本思路

(1)Pycharm进行调试,替代命令行或Jupter

(2)选择所需要硬盘空间小的数据进行测试

(3)熟悉pytorch-CycleGAN-and-pix2pix项目的使用

(4)熟悉CycleGAN模型训练

1.3 训练方式

  • 从头开始训练
  • 从预预训练模型开始训练(官网提供的预训练模型只包括G网络,不包括D网络)
  • 从上次训练结果开始训练

第2章 测试步骤

第1步:下载或克隆pytorch-CycleGAN-and-pix2pix所有代码

如果已经完成,可以跳过此步骤。

(1)Linux 命令行方式:!git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

(2)Windows浏览器下载:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

备注:

  • 可以把代码下载或拷贝到jupter的工作目录中,以便后续可以通过jupter运行代码。

第2步:切换当前目录

(1)运行方式

  • Windows 命令行方式:cd xxx
  • jupter方式:
import os
os.chdir('pytorch-CycleGAN-and-pix2pix/')
  • Pycharm: 把工程文件copy到Pycharm工作目录中即可

第3步:安装依赖文件(可视化工具)

如果已经完成,可以跳过此步骤。

  • Windows 命令行方式

pip install -r requirements.txt

  • Jupter方式
!pip install -r requirements.txt

torch>=0.4.1
torchvision>=0.2.1
dominate>=2.3.1
visdom>=0.1.8.3

第4步:下载CycleGAN数据集

(1)下载方式

  • Linux 命令行方式

bash ./datasets/download_pix2pix_dataset.sh facades

  • Jupter方式
!bash ./datasets/download_pix2pix_dataset.sh facades
  • Windows浏览器方式

 根据./datasets/download_cyclegan_dataset.sh的内容,获取数据集URL, 通过URL手工下载:

https://people.eecs.berkeley.edu/~taesung_park/CycleGAN/datasets/

  备注:

  • 这里选择horse2zebra:马到斑马的转换。

(2)数据集的存放路径

  • 存放路径:pytorch-CycleGAN-and-pix2pix\\datasets

备注:必须同名,不能改名

 (3)支持的小型数据集

  • summer2winter_yosemite:夏天转换成冬天
  • horse2zebra:马到斑马的转换
  • apple2orange:苹果到橙子的转换
  • facades:建筑物的转换
  • mini:min数据的马到斑马的转换

第5步:下载预训练模型

(1)下载方式

  • Linux命令行方式
bash ./scripts/download_cyclegan_model horse2zebra
  • jupter方式
!bash ./scripts/download_cyclegan_model horse2zebra
  • Windows方式

 根据download_cyclegan_model.sh脚步的内容,获取链接:

http://efrosgans.eecs.berkeley.edu/cyclegan/pretrained_models/

(2)存放路径

./checkpoints/xxx/latest_net_G.pth

xxx为模型名称。

备注:

  • 需要把模型的名称,改为latest_net_G.pth,并存放在xxx目录中,这与使用预训练模型进行测试是不一样的。
  • 官方的预训练模型,只有G网络的参数,没有D网络的参数,因此基本上需要重新训练。
  • cyclegan模型分为生成模型与还原模型,体现在不同的方向上。

第6步:启动可视化工具visdom

(1)启动visdom server

conda info -e

conda activate pytorch-gpu-os

python -m visdom.server

(2)启动visdom Client

http://localhost:8097

第7步:模型训练

(1)CPU方式(仅用于学习代码)运行

--dataroot ./datasets/horse2zebra --name horse2zebra --model cycle_gan --gpu_ids -1 --niter_decay 1 --niter 1  --display_freq 1 --update_html_freq 1 --print_freq 10 --save_epoch_freq 5 --save_latest_freq 100
  • --gpu_ids -1:表示使用CPU进行训练。
  • -print_freq 1:每迭代多少次,在终端上打印一次提示信息, 默认100.
  • -display_freq 1:每迭代多少次,在visdom客户端可视化一次图像,默认400
  • --update_html_freq 1:每迭代多少次,更新一次html输出文件,默认1000.
  • --save_epoch_freq 5:    每迭代多少次,存储一次模型参数
  • --save_latest_freq  100:每迭代多少次,存储一次模型参数
  • --niter 1:迭代的epoch次数, 默认100
  • --niter_decay 1:迭代的epoch次数,对学习率进行一次衰减,默认100,总的epoc=niter + niter_decay + 1

备注:

  • 该项目,采用GPU训练时,需要>8G的GPU内存,如果GPU条件不满足,在学习代码流程时,可以使用CPU进行训练
  • 之所以修改这些默认参数,是因为CPU的训练太慢,不利于学习的效率。

(2)GPU方式(适用于正式训练模型)

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

备注:

在GPU的情况下,使用默认的参数。

(3)重头训练与基于先前的训练结果继续训练

--continue_train :如果设置,则基于先前的训练结果继续训练,如果不设置,则从头开始训练。

第8步:效果展示

(1)控制台打印显示

initialize network with normal
initialize network with normal
initialize network with normal
model [CycleGANModel] was created
---------- Networks initialized -------------
[Network G_A] Total number of parameters : 11.378 M
[Network G_B] Total number of parameters : 11.378 M
[Network D_A] Total number of parameters : 2.765 M
[Network D_B] Total number of parameters : 2.765 M
-----------------------------------------------
Setting up a new session...
create web directory ./checkpoints\\horse2zebra\\web...
(epoch: 1, iters: 10, time: 7.274, data: 2.156) D_A: 0.963 G_A: 1.139 cycle_A: 5.456 idt_A: 1.779 D_B: 1.407 G_B: 1.843 cycle_B: 3.542 idt_B: 2.495 
(epoch: 1, iters: 20, time: 7.448, data: 0.000) D_A: 1.839 G_A: 2.499 cycle_A: 6.618 idt_A: 1.988 D_B: 0.768 G_B: 0.592 cycle_B: 3.989 idt_B: 3.224 

......

(2)visdom图形化显示

  • loss

  • 训练结果

第9步:输出文件

(1)图片文件:

目录:

  • pytorch-CycleGAN-and-pix2pix\\checkpoints\\horse2zebra\\web\\images

(2)模型文件:

目录:

  • pytorch-CycleGAN-and-pix2pix\\checkpoints\\horse2zebra\\

内容:这里有4个模型文件。

  • latest_net_D_A.pth
  • latest_net_D_B.pth
  • latest_net_G_A.pth
  • latest_net_G_B.pth

(3)log文件

位置:pytorch-CycleGAN-and-pix2pix\\checkpoints\\horse2zebra\\loss_log


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122077731

以上是关于[Pytorch系列-72]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 使用预训练模型训练CycleGAN模型的主要内容,如果未能解决你的问题,请参考以下文章

[Pytorch系列-69]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - test.py代码详解

[Pytorch系列-61]:生成对抗网络GAN - 基本原理 - 自动生成手写数字案例分析

[Pytorch系列-75]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - CycleGAN网络结构与代码实现详解

[Pytorch系列-63]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 代码总体架构与总体学习思路

[Pytorch系列-73]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - Train.py代码详解

[Pytorch系列-65]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 无监督图像生成CycleGan的基本原理