简介
CycleGAN是在2017年发表的一篇文章《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》,同一时期还有两篇非常类似的DualGAN和DiscoGAN,简单来说,它们的功能就是:自动将某一类图片转换成另外一类图片。传统的GAN是单向生成,而CycleGAN是互相生成,网络是个环形,所以命名为Cycle。并且CycleGAN一个非常实用的地方就是输入的两张图片可以是任意的两张图片,也就是unpaired。

原论文地址:https://arxiv.org/pdf/1703.10593.pdf

一、CycleGAN原理:
单向GAN详解:
CycleGAN本质上是两个镜像对称的GAN,构成了一个环形网络。其实只要理解了一半的单向GAN就等于理解了整个CycleGAN。

上图是一个单向GAN的示意图。我们希望能够把domain A的图片(命名为a)转化为domain B的图片(命名为图片b)。为了实现这个过程,我们需要两个生成器GAB和GBA,分别把domain A和domain B的图片进行互相转换。图片A经过生成器GAB表示为Fake Image in domain B,用GAB(a)表示。而GAB(a)经过生辰器GBA表示为图片A的重建图片,用GBA(GAB(a))表示。最后为了训练这个单向GAN需要两个loss,分别是生成器的重建loss和判别器的判别loss。
1.判别器loss:
判别器DB是用来判断输入的图片是否是真实的domain B图片,于是生成的假图片GAB(A)和原始的真图片B都会输入到判别器里面,公示挺好理解的,就是一个0,1二分类的损失。最后的loss表示为:

2.生成器loss:
生成器用来重建图片a,目的是希望生成的图片GBA(GAB(a))和原图a尽可能的相似,那么可以很简单的采取L1 loss或者L2 loss。最后生成loss就表示为:

以上就是A→B单向GAN的原理。

CycleGAN详解:
CycleGAN其实就是一个A→B单向GAN加上一个B→A单向GAN。两个GAN共享两个生成器,然后各自带一个判别器,所以加起来总共有两个判别器和两个生成器。一个单向GAN有两个loss,而CycleGAN加起来总共有四个loss。CycleGAN论文的原版原理图和公式如下:

我们之前已经说过,CycleGAN的原理可以概述为:将一类图片转换成另一类图片。也就是说,现在有两个样本空间,X和Y,我们希望把X空间中的样本转换成Y空间中的样本。
因此,实际的目标就是学习从X到Y的映射。我们设这个映射为G。它就对应着GAN中的生成器,G可以将X中的图片X转换为Y中的图片G(x)。对于生成的图片,我们还需要GAN中的判别器来判别它是否为真实图片,由此构成对抗生成网络。设这个判别器为 D{Y} 。这样的话,根据这里的生成器和判别器,我们就可以构造一个GAN损失,表达式为:

这个损失实际上和原始的GAN损失是一模一样的,但单纯的使用这一个损失是无法进行训练的。原因在于,映射G完全可以将所有x都映射为Y空间中的同一张图片,使损失无效化。我们再假设一个映射F,它可以将Y空间中的图片y转换为X中的图片F(y)。同样的我们为F也引入一个判别器 D{X} ,由此可以同样定义一个GAN的损失:

CycleGAN同时学习G和F两个映射,并要求将X的图片转换到Y空间后,应该还可以转换回来。这样就杜绝模型把所有X的图片都转换为Y空间中的同一张图片了。对此,作者又提出了所谓的“循环一致性损失”(cycle consistency loss)。
而循环一致性损失(两个生成器的loss加起来)就定义为:

最终网络的所有损失加起来为:

下面放一张网友们自制的CycleGAN示意图,比论文原版的更加直观,出处见水印。


CycleGAN结果展示:



CycleGAN与pix2pix模型的对比
pix2pix也可以做图像变换,它和CycleGAN的区别在于,pix2pix模型必须要求成对数据(paired data),而CycleGAN利用非成对数据也能进行训练(unpaired data)。
比如,我们希望训练一个将白天的照片转换为夜晚的模型。如果使用pix2pix模型,那么我们必须在搜集大量地点在白天和夜晚的两张对应图片,而使用CycleGAN只需同时搜集白天的图片和夜晚的图片,不必满足对应关系。因此CycleGAN的用途要比pix2pix更广泛,利用CycleGAN就可以做出更多有趣的应用。

系列传送门:
初窥门径__生成对抗网络(GAN)(一)
小试牛刀__GAN实战项目之mnist数据集(二)
融会贯通__条件生成对抗网络(cGAN)(三)
炉火纯青__深度卷积生成对抗网络(DCGAN)(四)
登堂入室__生成对抗网络的信息论扩展(infoGAN)(五)
渐入佳境__距离生成对抗网络(WGAN)(六)
登峰造极__边界均衡生成对抗网络(BEGAN)(七)

一代宗师__循环一致性生成对抗网络(CycleGAN)(八)相关推荐

  1. GAN学习记录(五)——循环生成对抗网络CycleGan

    循环生成对抗网络CycleGan实现风格迁移 dataset https://people.eecs.berkeley.edu/~taesung_park/CycleGAN/datasets/vang ...

  2. GAN生成对抗网络-CycleGAN原理与基本实现-图像转换-10

    CycleGAN的原理可以概述为: 将一类图片转换成另一类图片 .也就是说,现在有两个样 本空间,X和Y,我们希望把X空间中的样本转换成Y空间中 的样本.(获取一个数据集的特征,并转化成另一个数据 集 ...

  3. 深入理解生成对抗网络(GAN 基本原理,训练崩溃,训练技巧,DCGAN,CGAN,pix2pix,CycleGAN)

    文章目录 GAN 基本模型 模型 GAN 的训练 模式崩溃 训练崩溃 图像生成中的应用 DCGAN:CNN 与 GAN 的结合 转置卷积 DCGAN CGAN:生成指定类型的图像 图像翻译中的应用 p ...

  4. [人工智能-深度学习-63]:生成对抗网络GAN - 图片创作:普通GAN, pix2pix, CycleGAN和pix2pixHD的演变过程

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  5. GAN生成对抗网络的原理及CycleGAN、Pixel2Pixel、starGAN的的原理即实现

    生成对抗网络 1.生成对抗网络的定义 生成式对抗网络是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一.模型通过框架中(至少)两个模块:生成模型和判别模型的互相博弈学习产生相当好的输出 ...

  6. [Pytorch系列-72]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 使用预训练模型训练CycleGAN模型

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  7. 万字综述之生成对抗网络(GAN)

    作者丨郭晓锋 单位丨爱奇艺 研究方向丨图像生成 前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇.可是在深度学习,G ...

  8. 深度学习之生成对抗网络(4)GAN变种

    深度学习之生成对抗网络(4)GAN变种 1. DCGAN 2. InfoGAN 3. CycleGAN 4. WGAN 5. Equal GAN 6. Self-Attention GAN 7. Bi ...

  9. PSGAN——姿态稳健型可感知空间式生成对抗网络论文详细解读与整理

    PSGAN--姿态稳健型可感知空间式生成对抗网络论文详细解读与整理 1.摘要 2.什么是PSGAN? 3.主要贡献 4.整体模块 5.目标函数 6.实验结果--部分化妆和插值化妆 7.定量比较 8.参 ...

最新文章

  1. php 显示要上传的图片格式,php判断文件上传图片格式的实例详解
  2. linux挂载硬盘简书,linux|挂载硬盘及分区
  3. python写网站和java写网站的区别-为什么说Java和Python现阶段并不适合普通网站建设...
  4. 浅淡HTML5移动Web开发
  5. Python中的数值类型
  6. win10桌面管理文件收纳_微软win10发布7月更新,三大版本同步更新,着重提升系统安全性...
  7. OpenFile基于浏览器的免费网络存储管理
  8. 如何让Zen Cart 不在头部显示分类
  9. servlet学习笔记_2
  10. webstorm设置字体没有反应
  11. (已实现)Mysql实现模糊拼音查询(Mybatis可直接使用)
  12. java压缩图片大小不改变图片分辨率
  13. ERROR ITMS-90096: Your binary is not optimized for iPhone 5 错误
  14. wingdings字体符号在哪_wingding、Wingdings2、wingdings3字体特殊符号与键盘字母相对应位置...
  15. 10度角的三角函数计算
  16. linux 实现离线迅雷,Linux 下使用 wget/aria2 进行离线迅雷批量下载
  17. 后台Base64解码图片变小的坑
  18. vulnhub靶场,Monitoring
  19. 通过Anaconda安装Python
  20. Minecraft 1.18.1、1.18.2模组开发 22.狙击枪(Sniper Rifle)

热门文章

  1. lol服务器维修时间,英雄联盟2014.1.9维护时间 lol官网服务器维护公告
  2. 中国围棋借应氏杯而涅槃
  3. Ms outlook 2007 试用
  4. 实心球体内部电势计算公式_带电球体电场与电势的分布
  5. 如何创建一个开源Javascript库 | Lynda教程 中文字幕
  6. LabVIEW数据采集:配套视频教程第4集(2.2.1.10节-2.2.1.25节)
  7. Pnpm Workspace: 单仓库多项目(monorepo)
  8. win8下u盘安装linux,win7 win8下U盘安装ubuntu(linux)双系统教程
  9. Introduce·传播学重点核心期刊推荐之《中国编辑》
  10. webuploader html5,在Vue项目中使用WebUploader实现文件上传