CycleGAN --- Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
文章地址:http://openaccess.thecvf.com/content_ICCV_2017/papers/Zhu_Unpaired_Image-To-Image_Translation_ICCV_2017_paper.pdf
代码地址:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
原理:
CycleGAN这篇文章的亮点是提出了无需使用成对样本来训练模型的新思路。像pix2pix这类方法则需要成对的数据来训练。
由于在实际应用中,我们很难获取到成对的样本集,这篇文章的思想就是将一类样本转换为另一类样本。给定两个样本空间X,Y,我们希望把X空间中的
样本转换为Y空间中的样本,即寻找从源域(X)到目标域(Y)的映射关系G:X->Y,并且要使得数据G(X)的分布与Y的分布不可区分。同时反向映射关系也需要满足,
即F:Y->X,通过引入一个循环一致性损失来使得F(G(X))≈X。
其中,G对应了GAN网络的生成器部分,用于将X中的图像转换为Y中的图像,我们可得到生成的图像为G(X)。此时还需要判别器网络来对生成的图像和真实
的图像进行判别。这个判别器用DY表示。对于这部分网络,存在一个对抗损失。
其中生成器G试着生成接近目标分布Y的图像G(X),判别器旨在区分转换样本和真实样本,由此构成了一个博弈过程。对于反向映射F:Y->X,同样存在这样的
GAN损失。
理论上说,对抗训练可以学习和产生与目标域Y相似分布的输出,但如果仅使用对抗损失来训练无法得到比较好的结果。原因在于,在足够大的样本容量下,
网络可以将相同的输入图像集合映射到目标域中图像的任意排列组合。也就是说学习到的可以只是输出的一个子分布,这样就可能会导致输入X通过映射函数得
到Y空间中的特定图像的分布。
意思就是单独的对抗损失无法保证学习函数可以将单个输入Xi映射到期望的输出Yi。由此,作者便提出了“循环一致性损失(Cycle consistency loss)”
即前向循环一致性和反向循环一致性。
简单来说,思想就是把一个东西经过变换后,通过一个反变换还能回到原来的样子(突然想到了傅里叶变换和反傅里叶变换)。
总的目标函数为:
实现
- 网络结构:
生成器部分使用的是李飞飞团队提出的感知损失用来做风格转换的网络结构。
判别器采用的70x70的Patch-GANs
- 训练细节:
运用了两个技巧来稳定网络模型的训练过程
1. 使用最小二乘损失来代替对数损失
2. 更新判别其DX和DY,使用之前生成的图像而不是最新生成的图像。保存了50个的缓存数据。
- 参数设置:
λ的值设置为10.使用Adam优化求解,batch size为1.前100个epoch学习率设置为0.0002,后100个epoch学习率线性递减直至0.
实验结果:
CycleGAN --- Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks的更多相关文章
- 《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》论文笔记
Code Address:https://github.com/junyanz/CycleGAN. Abstract 引出Image Translating的概念(greyscale to color ...
- Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 阅读笔记
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (使用循环一致的对抗网络的非配对图像-图 ...
- StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation - 1 - 多个域间的图像翻译论文学习
Abstract 最近在两个领域上的图像翻译研究取得了显著的成果.但是在处理多于两个领域的问题上,现存的方法在尺度和鲁棒性上还是有所欠缺,因为需要为每个图像域对单独训练不同的模型.为了解决该问题,我们 ...
- image-to-image translation with conditional adversarial networks文献笔记
Image-to-Image Translation with Conditional Adversarial Networks (基于条件gan的图像转图像) 作者:Phillip Isola, J ...
- Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks(使用循环一致的敌对网络进行不成对的图像到图像转换)
作者:朱俊彦,朱俊彦博士是计算机图形学领域现代机器学习应用的开拓者.他的论文可以说是第一篇用深度神经网络系统地解决自然图像合成问题的论文.因此,他的研究对这个领域产生了重大影响.他的一些科研成果,尤其 ...
- 《StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation》论文笔记
---恢复内容开始--- Motivation 使用单组的生成器G和判别训练图片在多个不同的图片域中进行转换 效果确实很逆天,难怪连Good Fellow都亲手给本文点赞 Introduction 论 ...
- 《Image-to-Image Translation with Conditional Adversarial Networks》论文笔记
出处 CVPR2017 Motivation 尝试用条件GAN网络来做image translation,让网络自己学习图片到图片的映射函数,而不需要人工定制特征. Introduction 作者从不 ...
- (Pixel2PixelGANs)Image-to-Image translation with conditional adversarial networks
Introduction 1. develop a common framework for all problems that are the task of predicting pixels f ...
- (转)Awesome GAN for Medical Imaging
Awesome GAN for Medical Imaging 2018-08-10 09:32:43 This blog is copied from: https://github.com/xin ...
随机推荐
- C语言第七周作业
每个单词的最后一个字母改成大写 函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写.(这里的"单词"是指由空格隔开的字符串). 函数接口定义: void fun( ...
- JAVA总结--jvm
VM,Virtual Machine 即虚拟机,指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. JVM,Java Virtual Machine 即Java虚拟机, ...
- Java-集合第六篇操作集合的工具类Collections
1.Java提供了一个操作Set.List.Map等集合的工具类:Collections. 工具类中提供的方法主要针对Set.List.Map的排序.查询.修改等操作,以及将集合对象设置为不可变.对集 ...
- MySQL-第十四篇事务管理
1.什么是事务 事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行. 2.事务具备的4个特性: 1>原子性(Atomicity):事务是应用中最小的执 ...
- 解决MarkDown打开出现:awesomium web-brower framework This view has crashed
当在windows 8 以上操作系统安装markdown 的时候,可能会出现这样的错误 解决方法: 官网链接:http://markdownpad.com/faq.html#livepreview-d ...
- Qt之UI文件设计和运行机制
1.项目文件组成在QtCreator中新建一个WidgetApplocation项目,选中窗口基类中选中QWidget作为窗口基类,并选中"GnerateForm"复选框.创建后项 ...
- JS调试分享技巧
1. 学会使用console.log console.log谁都会用,但是很多同学只知道最简单的console.log(x)这样打印一个对象,当你的代码里面console.log多了之后,会很难将某条 ...
- 打乱一个排好序的 list 对象 alist?
1. import random 2. random.shuffle(alist)
- SCUT - 131 - 小P玩游戏II - 贪心 - 平衡树
https://scut.online/p/131 首先假如钦定了一群人去打怪兽,那么可以把主要的任务都丢给b最大的人去打,这样不会更差.然后考虑枚举这个b最大的人,其他人陪练.一开始就是ai+k*b ...
- PREPARE - 创建一个准备好的查询
SYNOPSIS PREPARE plan_name [ (datatype [, ...] ) ] AS statement DESCRIPTION 描述 PREPARE 创建一个已准备好的查询. ...