cycle_gan使用教程


如果是用cycle_gan

数据集

/数据集文件夹名,下面四个子文件名

testA

testB

trainA

trainB

trainA是A风格图片,trainB是B风格图片。

训练参数

test
dataroot --filepath 测试数据的文件夹,放在名称为testA或者testB的文件夹中(子文件夹为trainA,trainB,testA,testB)
name flower 项目名称,就是给自己的项目取个名字,用于代码来辨认,和train的名称保持一致。
num_test 500 测试多少张图像。
checkpoints_dir ./checkpoints/ 保存模型参数的路径。默认 ./checkpoints
results_dir ./results/ 保存结果的文件夹,默认是./results/
train
dataroot filepath 训练数据的文件夹。子文件夹为trainA,trainB,testA,testB
name flower 项目名称,就是给自己的项目取个名字,用于代码来辨认。默认flower
n_epochs 100 固定学习率的epoch个数。默认100。
n_epochs_decay 100 学习速率线性衰减到零的epoch个数,这个和上面的加起来是总的训练轮数。默认100。
lr_policy linear 学习率的衰减模式。用于调整学习率的变化。[linear | step | plateau | cosine]线性衰减, 固定步长衰减,plateau,余弦衰减四选一,默认第一个
continue_train FALSE True/False 表示继续训练,当训练中断之后想要继续训练,把这个值调为True。
epoch_count 1 从第几个epoch开始训练,如果继续训练是True,如果训练到第40个epoch终端了,就把这个值设为40.默认1。
checkpoints_dir ./checkpoints/ 保存模型参数的路径。默认 ./checkpoints
model cycle_gan 如果是cycle_gan方法,就选cyclegan,此外还有pix2pix,colorization也可以训练。[cycle_gan | pix2pix | test | colorization] 选一个,默认第一个
netG unet_256 生成器的方式。有[resnet_9blocks | resnet_6blocks | unet_256 | unet_128] 种,不同生成器效果不同。四选一,默认unet_256
batch_size 5 每个batch训练的个数,如果电脑配置不够,就减少这个值可以减少内存
num_threads 2 用于加载数据的线程,减少这个值可以减少内存
preprocess resize_and_crop [resize_and_crop | crop | scale_width | scale_width_and_crop | none]
direction AtoB [AtoB | BtoA], AtoB,从A生成B,BtoA,从B生成A

训练指令

训练

python train.py --dataroot E:\docs\flower --name flower --model cycle_gan --batch_size 5 --netG unet_256 --num_threads 2 --n_epochs 200 --display_id 0

--epoch_count 52 --continue_train 可选

测试

python test.py --dataroot E:\docs\flower\testA --name flower --model test --no_dropout --num_test 504 --netG unet_256

训练后

训练完之后,将训练中保存的checkpoints的其中一个后缀为XX_net_G_A.pth改为latest_net_G.pth供test文件使用。G_A就是A 到B的转换,G_B就是B到A的转换。

如果要用pix2pix

训练集先分为(A,B)   A->(train,val) B->(train,val)

A文件下分 train,val两个文件夹

B文件下分 train,val两个文件夹

要用pix2pix 先combine A and B 

python ./datasets/conbine_A_and_B.py --后面加上相应的参数

train时把--model cycle_gan 改为--model pix2pix就可以了

python test.py --dataroot F:\data\flower\A\val --name flower --model test --no_dropout --num_test 504 --netG unet_256 --norm batch --num_test 704 --preprocess none

tips


训练的时候可以用

 --preprocess crop 和 --crop_size 256把图像转换为256X256

测试的时候用

--preprocess none 这样就不会做改变


假设处理360x256图像。在训练过程中,可以指定--preprocess crop和--crop_size 256。这将允许的模型在训练期间在随机裁剪的256x256图像上进行训练。在测试期间,可以用--preprocess none。将模型应用于360x256图像,


对于每种生成器体系结构,图像大小都有实际限制。对于unet256,它只支持宽度和高度能被256整除的图像。对于unet128,宽度和高度必须能被128整除。对于resnet_6blocks和resnet_9blocks,宽度和高度需要能被4整除。

train结果

每5个epoch保存一次模型,保存了训练过程中全程的模型。 G_A: 表示从A生成B的模型 G_B: 表示从B生成A的模型

latest_net: 表示最近一次的模型节点。 loss_log.txt: 记录了损失的大小。可以根据这个来看训练的怎么样。 test_opt.txt train_opt.txt 记录了训练和测试时的参数。

点击web->index.html 可以看到训练过程中的图像。

test结果

点击results->工程名->test_latest->index.html. 可以看到test的对比图。 点击results->工程名->test_latest->images 后缀为fake的就是我们要的生成的图片。

猜你喜欢

转载自blog.csdn.net/qq_39696563/article/details/128713101
GAN