对抗生成:基于CycleGAN的风格迁移

在这里插入图片描述
在这里插入图片描述

前言

相关介绍

在这里插入图片描述

CycleGAN 是一种生成对抗网络(GAN)架构,特别设计用于无监督的图像到图像转换任务。它是 Jun-Yan Zhu 等人在 2017 年提出的。下面是对 CycleGAN 的详细介绍以及它的主要优缺点。

CycleGAN 的工作原理

核心思想
  • 无配对训练数据:CycleGAN 能够在没有配对的训练样本的情况下进行图像到图像的转换。
  • 循环一致性:通过引入循环一致性损失来保证生成的图像经过两次转换后尽可能接近原始图像。
主要组件
  • 生成器:有两个生成器 G 和 F,其中 G 用于 A 到 B 的转换,F 用于 B 到 A 的转换。
  • 判别器:同样有两个判别器 D_A 和 D_B,它们分别用于辨别真假图像是否属于 A 或 B 领域。
  • 循环一致性损失:这是 CycleGAN 的关键组成部分,它确保了从 A 到 B 再回到 A 的转换尽可能接近原始图像,同样对于 B 到 A 再回到 B 也适用。
训练目标
  • 对抗损失:使生成器产生的图像能够欺骗对应的判别器。
  • 循环一致性损失:确保两次转换后的图像接近原始图像。
  • 身份损失:可选的损失项,当输入图像本身就是目标域的图像时,生成器应该输出相同的图像。

优点

  1. 无配对训练数据:CycleGAN 不需要成对的训练数据,这大大降低了收集数据的难度。
  2. 可扩展性:可以在不同类型的图像之间进行转换,例如不同艺术风格间的转换、不同季节的景观转换等。
  3. 高保真度:能够较好地保持图像的内容特征,同时转换其风格或外观。
  4. 减少过拟合:即使使用少量的数据也可以训练出有效的模型。
  5. 易于实现:CycleGAN 的结构相对简单,易于理解和实现。
  6. 不需要特殊预处理:可以直接处理原始图像,不需要额外的预处理步骤。

缺点

  1. 训练复杂度:需要训练两个生成器和两个判别器,这可能会增加计算成本和训练时间。
  2. 几何变换限制:对于涉及较大几何变形的图像转换任务,CycleGAN 可能表现不佳。
  3. 生成图像质量:在某些情况下,生成的图像可能存在轻微的失真或伪影。
  4. 高级纹理信息丢失:循环一致性损失可能不足以恢复所有纹理信息,尤其是在处理高度模糊或损坏的图像时。
  5. 模型调整:为了获得最佳结果,可能需要对模型进行精细调整和参数选择。

应用实例

  • 艺术风格转换:例如将照片转换为油画风格或素描风格。
  • 天气或季节转换:例如将夏季照片转换为冬季场景。
  • 物体类别转换:例如将马的图像转换为斑马的图像。

总结

CycleGAN 提供了一种强大的工具,用于在没有配对数据的情况下执行图像转换任务。它通过引入循环一致性损失来克服了传统图像转换方法的一些限制。尽管如此,CycleGAN 在某些特定情况下可能会遇到局限性,特别是在处理涉及复杂几何变换的任务时。

实验环境

python=3.6.7
pytorch=1.4.0
torchvision=0.5.0
dominate>=2.4.0
visdom>=0.1.8.8
wandb

项目地址

Linux

git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git
cd pytorch-CycleGAN-and-pix2pix

Windows

请到https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git网站下载源代码zip压缩包。

cd pytorch-CycleGAN-and-pix2pix

项目结构

pytorch-CycleGAN-and-pix2pix
├─data
│  └─__pycache__
├─datasets
│  ├─bibtex
│  └─vangogh2photo
│      ├─testA
│      ├─testB
│      ├─trainA
│      └─trainB
├─docs
├─imgs
├─models
│  └─__pycache__
├─options
│  └─__pycache__
├─scripts
│  ├─edges
│  └─eval_cityscapes
│      └─caffemodel
└─util
    └─__pycache__

具体用法

准备数据(以vangogh2photo为例)

  • 本文以vangogh2photo数据集进行示例。
  • 本文所使用数据集免费下载地址:https://download.csdn.net/download/FriendshipTang/89621331
vangogh2photo
├─testA
├─testB
├─trainA
└─trainB

在这里插入图片描述

进行训练(以vangogh2photo为例)

进行训练之前要启动一个web服务,用来查看训练结果和损失图表,请执行python -m visdom。并单击URLhttp://localhost:8097
在这里插入图片描述
在这里插入图片描述

python train.py --dataroot ./datasets/vangogh2photo --name vangogh2photo_cyclegan --model cycle_gan

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进行测试(以vangogh2photo为例)

python test.py --dataroot ./datasets/vangogh2photo --name vangogh2photo_cyclegan --model cycle_gan

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

参考文献

[1] CycleGAN 源代码地址:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git
[2] CycleGAN 论文地址:https://arxiv.org/abs/1703.10593

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FriendshipT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值