CycleGAN训练模型

CycleGAN进行图像转换

  • CycleGAN使用
    • 前言
    • 在TensorFlow中训练CycleGAN模型
      • 下载数据集并转换格式
      • 训练模型
      • 模型导出
      • 测试图片
  • 总结

CycleGAN使用

前言

​ 图像翻译问题就是将一种类型的图片转换为另一种类型的图片。pix2px也能解决一类图像翻译问题,但是pix2pix模型要求训练样本必须是“严格成对”的,也就是说有一张A类别的图片就必须有一张B类别的图片,这类样本一般比较难获得。现实中更多的往往是不成对数据。

在TensorFlow中训练CycleGAN模型

​ CycleGAN文件可以从GitHub上下载,参考

​ 同时需要电脑上已经配置好TensorFlow的环境

下载数据集并转换格式

​ download_dataset.sh文件是下载数据集的文件,编辑文件可以看到里面有很多种数据集,我下载的是apple2orange数据集。

  1. bash download_dataset.sh apple2orange
    

    可能会出现以下问题:CycleGAN训练模型_第1张图片

  2. 网址https://people.eecs.berkeley.edu/~taesung_park/CycleGAN/datasets/apple2orange.zip
    点击下载就行

  3. 两个方法都不行的话就可能是数据源的问题了,网盘下载

    下载 提取码:2wvw

    解压之后会有四个文件夹,trainA、testA保存了苹果的图片,trainB、testB保存了橘子的图片。

  4. 将图片转换为tfrecords格式

    python build_data.py --X_input_dir data/apple2orange/trainA --Y_input_dir data/apple2orange/trainB --X_output_file data/tfrecords/apple.tfrecords --Y_output_file data/tfrecords/orange.tfrecords
    

训练模型

python train.py --X data/tfrecords/apple.tfrecords --Y data/tfrecords/orange.tfrecords  --img_size 256

训练开始后,会在checkpoints文件夹中建立一个以当前时间命名的文件夹保存训练模型,如 20191009-0802。按照train.py文件中的程序,训练模型时每隔一百步程序会在屏幕上打出当前步数和损失。

tensorboard --logdir checkpoints/20191009-0802

使用tensorboard查看当前训练情况,注意将后面的文件夹名换成自己训练的文件夹CycleGAN训练模型_第2张图片

Images选项中还可以查看到图片的转换情况,左侧为原始的苹果图像,中间为模型将苹果图像转换为橘子图像,右侧为将橘子进行还原的图像。

CycleGAN训练模型_第3张图片

训练过程不会自动结束,因此当训练得差不多时,手动使用Ctrl + C 结束程序。

训练过程中需要注意的地方:

1.CycleGAN训练模型_第4张图片

打开train.py文件中,从上面的代码中可以看出,训练过程中每100步打印出相关信息,然后每训练5000步才保存一次模型(下载的文件里10000步才保存一次,这个5000是我自己修改的)。注意之后训练的步数一定要大于自己修改的这个数,不然会出现训练了好久但模型没有保存的问题。当然模型没有保存的话这一步是没有问题的,但是下一步将模型文件导出为pb文件时会出现ValueError: Can’t load save_path when it is None.的错误,原因就是文件找不到生成的模型文件。不过也有可能是自己的某一个字母拼写错了导致找不到

模型导出

要使用checkpoints目录下的模型进行测试,需要先将模型导出为 pb 文件。

python export_graph.py --checkpoint_dir checkpoints/20191009-0802 --XtoY_model apple2orange.pb --YtoX_model orange2apple.pb --img_size 256

该程序会生成两个pb文件,apple2orange.pb可以将苹果图片转换为橘子图片,orange2apple.pb可以将橘子图片转换为苹果图片。

测试图片

python inference.py --model pretrained/apple2orange.pb --input data/apple2orange/testA/n07740461_111.jpg --output data/apple2orange/output_sample.jpg --img_size 256

上述命令使用apple2orange.pb模型对测试图片data/apple2orange/testA/n07740461_111.jpg进行转换,转换后的图片保存为data/apple2orange/output_sample.jpg

CycleGAN训练模型_第5张图片

CycleGAN训练模型_第6张图片

从以上的转换结果可以看出,转换效果不是很好,我训练的步数较少。

总结

总的过程比较简单,但是中途很容易出现各种问题。当时处理出现的问题头都大了,最重要的还是细心吧,一步一步来问题不大。有问题的话欢迎问我,尽管我也是小白一个。

你可能感兴趣的:(深度学习,TensorFlow,深度学习,TensorFlow,CycleGAN,图像翻译,apple2orange)