一:前期代码准备

从GitCode(服务器在国内,访问比较快)中将开源代码copy下来

地址:mirrors / junyanz / pytorch-cyclegan-and-pix2pix · GitCode

也可从github源项目地址中获取:GitHub - junyanz/pytorch-CycleGAN-and-pix2pix: Image-to-Image Translation in PyTorch

二:数据集准备

2.1.使用官网提供的数据集

2.1.1.在Ubuntu中通过shell命令下载

以下载maps数据集为例,在终端输入以下命令:

bash ./datasets/download_cyclegan_dataset.sh maps

2.1.2.直接从源地址中下载

打开开源代码中datasets文件夹中的download_cyclegan_dataset.sh文件,复制URL中的前半段网址打开http://efrosgans.eecs.berkeley.edu/cyclegan/datasets/

打开后就可以下载你想下的任何数据集了

2.2.使用自己制作的数据集

选出训练集(A、B)和测试集(A、B),然后按照下图文件夹进行命名,最后将制作的数据集放入datasets文件夹中即可

三:初始化环境

以conda用户为例,在项目目录中使用如下命令进行环境配置(以后的操作都是基于这个虚拟环境)

conda env create -f environment.yml

这里我修改了environment.yml文件,将创建出的虚拟环境重命名为cycleGAN

注意:一定要根据自己cuda的版本号选择合适的pytorch版本,不然后续更改会很麻烦!!!

创建成功后,使用如下命令即可进入conda创建出的虚拟环境:

conda activate cycleGAN

此外,通过pip等方式也可进行初始化,具体详见原网站说明

PS:如果环境配置有问题想删了重新安装,使用如下命令:

1.首先退出当前环境

conda deactivate

2.删除自己刚创建的虚拟环境

conda remove -n xxx --all

四:训练数据

4.1.前期准备

首先,打开options文件夹,在base_options.py文件中可以进行基础配置的更改。

例如gpu_ids,默认为0,即使用第一个GPU进行训练;‘-1’是使用CPU进行训练。也可以设置batch_size(默认为1)等等

train_options.py文件中可以设置epochs的大小以及保存模型的频率等等

4.2.安装visdom(可视化)

visdom 是Facebook 为PyTorch 打造的一款可视化工具,可以实时的对数据进行可视化显示,比如模型loss值的变化、生成的图像等等

下面在conda环境中对其进行安装

conda install visdom

安装完成后,通过如下命令即可开启visdom服务

python -m visdom.server

启动成功后,终端会显示以下网址:http://localhost:8097,打开网址即可看到训练数据的实时展示

同时,如果想看到更加详细的生成图像结果,就在主文件夹下打开以下路径./checkpoints/maps_cyclegan/web/index.html,效果展示如下图所示

 

注意:如果visdom端口被占用时,除了在配置文件中更改端口外,还可以通过以下命令:

查看当前正在进行进程的端口号以及PID:

netstat -tunlp

kill跟visdom相关的那个进程(默认端口号8097):

kill -9 xxxx(PID)

4.3.开始训练

打开终端,进入cycleGAN虚拟环境,然后输入如下命令

python train.py --dataroot ./datasets/sar2optical --name sar2optical_cyclegan --model cycle_gan

如果训练pix2pix模型,则输入以下命令:

python train.py --dataroot ./datasets/sar2optical --name sar2optical_pix2pix --model pix2pix --direction AtoB

AtoB表示由A数据集训练生成B数据集

其中,sar2optical换成自己设置的数据集名称

注意:刚开始可能会报错PyTorch与CUDA版本不匹配,这时需要去官网https://pytorch.org/get-started/previous-versions/下载合适的pytorch版本

此外,要恢复之前的训练,可以使用--continue_train标志。程序将根据epoch加载模型。默认情况下,该程序将把epoch计数初始化为1,同时设置--epoch_count <int>可以来指定不同的起始epoch

五:测试数据

结束训练之后,使用如下命令对数据集进行测试

python test.py --dataroot ./datasets/sar2optical --name sar2optical_cyclegan --model cycle_gan

测试结果保存在主目录下的一个html文件中./results/sar2optical_cyclegan/test_latest/index.html

部分测试结果:

此外,我还测试了下monet2photo:

以及horse2zebra:

整体效果还是不错的~

深度学习论文代码复现——CycleGAN和pix2pix相关推荐

  1. 深度学习论文 代码复现 环境配置操作

    ***深度学习论文代码复现 前置工作 安装Ubuntu18.04 安装Nvidia显卡驱动 安装anaconda 安装CUDA与cuDNN 通过软链接的修改实现多版本CUDA间的切换 将~/.bash ...

  2. 【更新于12.29】深度学习论文汇总

    本博客用于记录自己平时收集的一些不错的深度学习论文,近9成的文章都是引用量3位数以上的论文,剩下少部分来自个人喜好,本博客将伴随着我的研究生涯长期更新,如有错误或者推荐文章烦请私信. 深度学习书籍和入 ...

  3. 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》

    深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4<Optimal Speed and Accuracy of Object Detection> Abstract 摘要 1. In ...

  4. Github标星24k,127篇经典论文下载,这份深度学习论文阅读路线图不容错过

    作者  | Floodsung 翻译 | 黄海广 来源 | 机器学习初学者(ID:ai-start-com) [导读]如果你是深度学习领域的新手,那么你可能会遇到的第一个问题是"我应该从哪篇 ...

  5. 如何阅读一份深度学习项目代码?

    犹豫很久要不要把读代码这个事情专门挑出来写成一篇推文.毕竟读代码嘛,大家可能都会读.而且笔者个人读的和写的代码量也并不足以到指导大家读代码的程度.但笔者还是决定大胆地写一点:就当是给自己设立今后读代码 ...

  6. 深度学习项目代码阅读建议

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习实验室 犹豫很久要不要把读代码这个事情专门挑出来写 ...

  7. 怎样高效阅读一份深度学习项目代码?

    犹豫很久要不要把读代码这个事情专门挑出来写成一篇推文.毕竟读代码嘛,大家可能都会读.而且笔者个人读的和写的代码量也并不足以到指导大家读代码的程度.但笔者还是决定大胆地写一点:就当是给自己设立今后读代码 ...

  8. 深度学习论文阅读进阶路径图

    ↑ 点击上方[计算机视觉联盟]关注我们 介绍: 列表选自github用户floodsung发起的Deep Learning Papers Reading Roadmap项目,主要目标是收集深度学习论文 ...

  9. 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》

    深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1< You Only Look Once: Unified, Real-Time Object Detection> Abstra ...

最新文章

  1. 高岭土吸附阳离子_工业中高岭土、高岭石中的应用特点!
  2. 安装MHA中清理Relay log报错
  3. Android SDK版本和ADT版本
  4. ItChat与图灵机器人的结合
  5. 【MaxCompute】学习笔记常用查询sql
  6. mysql sql left right inner join区别及效率比较
  7. chinaren校友录恢复重新开放_确定!九寨沟景区9月27日对外开放(试运行) 最大限量为每天5000人 各大旅企产品已上线...
  8. jackson java网络接口_java~jackson实现接口的反序列化
  9. conda和pip的区别
  10. java向数组中增加新元素_用Java中的新元素替换List的给定索引处的元素
  11. 钓鱼基础设施的应用分析(钓鱼邮件利用、Gophish)
  12. 台达ms300变频器使用手册中文_台达变频器:满足未来驱动需求
  13. jQuery动画的实现
  14. 计算机硬盘怎么优化,硬盘怎么优化_机械硬盘优化
  15. fragment--总结
  16. c语言字母等腰三角形边框,用C语言编写一个四行*等腰三角形
  17. C#创建一个文本文件简单代码
  18. 一篇文章搞懂什么是测试,测试是干什么的?
  19. XUI 熟练使用之(二) -----------轮播条( BannerLayout 的使用)
  20. CSS盒子模型box-sizing属性详解

热门文章

  1. charles之map功能
  2. Java 为什么要有包装类
  3. 射频功放学习之ADS内嵌优化工具的一些见解
  4. 科研热点|多地公布自然科学基金立项/拟立项清单 (含杰青、优青、青年、面上)~
  5. 解决dockerfile出现的Error: Failed to download metadata for repo ‘appstream‘: Cannot prepar
  6. 如何在Springboot中查看Spring版本
  7. MacBook如何选择
  8. 【C++】优先级队列priority_queue仿函数
  9. CTFHub 文件上传
  10. mybatis源码分析2 - SqlSessionFactory的创建