深度学习论文代码复现——CycleGAN和pix2pix

7 篇文章 17 订阅
3 篇文章 0 订阅

一:前期代码准备

从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:

 

 整体效果还是不错的~

  • 20
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: CycleGANPix2Pix 是两种基于深度学习的图像生成模型。其中,CycleGAN 通过两个互相独立的生成器和判别器之间的对抗训练来实现图像的风格转换,可以将不同域的图像进行转换并生成自然逼真的图像;而 Pix2Pix 是一种条件 GAN,将输入图像与目标输出图像同时输入到网络中进行训练,以生成具有语义相似的输出图像,常用于图像转化任务,如从黑白图片生成彩色图像等。 ### 回答2: CycleGANPix2pix都是深度学习中的图像转换模型。它们的目的都是从一个域转换到另一个域,但它们在转换过程和应用方面有很大的不同。 1. 转换方式不同 Pix2pix模型使用条件GAN(Conditional GAN)来从一个图像转换到另一个图像。具体来说,它将输入图像和输出图像作为条件,通过联合训练生成器和判别器,学习将输入图像转换为与输出图像匹配的图像。而CycleGAN使用无条件GAN,从而避免了需要成对的训练数据的限制。它能够学习将一个图像域转换到另一个图像域,而不需要匹配的图像对。 2. 应用场景不同 Pix2pix更适合于像素到像素的转换,如黑白图像到彩色图像、街景照片到地图等。而CycleGAN更适合于风格迁移和转换,如将照片样式转换为美术风格、马到斑马的转换等。CycleGAN的应用不限于图像,还可以用于语音转换,并且将爵士音乐转换为流行音乐等。 3. 训练数据不同 Pix2pix需要配对的图像数据进行训练,这意味着对于每个输入图像,都需要有配对的输出图像。而CycleGAN不需要成对的训练数据,只需要两个不同域的图像集。 4. 转换结果不同 Pix2pix的转换结果非常精细,而且相对保真,因为它需要在像素级别上进行转换。CycleGAN的转换结果相对来说更加模糊,但更有创造力和想象力。CycleGAN的转换结果比Pix2pix更加随机和丰富,因为它利用了插补生成的图像,减少了对输入到输出之间的精准映射的要求。 综上所述,Pix2pix用于像素到像素的转换,追求转换精度。而CycleGAN更加灵活,用于域之间的转换,允许多样性和创造性的转换结果。 ### 回答3: CycleGANPix2pix都是基于生成对抗网络(GAN)的图像生成模型,但它们有着不同的应用场景和技术原理。 Pix2pix是一种条件GAN模型,可以通过将输入图像与其对应的目标图像一起输入到网络中进行训练,从而使网络通过学习输入图像与目标图像之间的映射关系,生成一个输出图像。Pix2pix的训练过程需要输入图像与目标图像的一一对应关系,并且需要提供大量的训练数据才能获得较好的生成效果。该模型可以用于许多任务,例如将低分辨率图像转换为高分辨率图像、将黑白图像转换为彩色图像等应用场景。 相比之下,CycleGAN采用了无需配对训练数据的无条件GAN模型,它可以通过两个不同领域之间的任意图像进行训练,从而实现图像风格的转换。CycleGAN的训练过程中,只需要提供两个不同领域的图像,网络将学习如何将一个领域的图像转换成另一个领域的图像,并学习如何将转换后的图像再转换回原来的领域。这种双向的转换使得CycleGAN可以进行双向转换,即A图像转换成B图像,B图像也可以转换成A图像。该模型可以用于许多场景,例如将马的图像转换成斑马的图像、将夏天的图像转换成冬天的图像等。 综上所述,虽然CycleGANPix2pix都是基于GAN模型的图像生成模型,但其应用场景和技术原理存在显著差异。Pix2pix适用于有配对图像数据的场景,如图像语义分割、图像超分辨率等;而CycleGAN适用于无配对图像数据的场景,如图像风格迁移等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值