论文笔记:CycleGAN
CycleGAN
1、四个问题
- 要解决什么问题?
- 图像翻译任务(image-to-image translation problems),域转换任务。
- 用了什么方法解决?
- 提出了CycleGAN的网络结构。
- 目的是:通过使用一组对抗损失,学习到一个映射G:X→YG: X \rightarrow YG:X→Y,使得生成的样本G(X)G(X)G(X)的分布难以跟真实样本YYY的分布区分开来。
- 同样也要保证,通过另一组对抗损失,学习到一个与GGG相反的映射F:Y→XF: Y \rightarrow XF:Y→X,并能够保证cycle consistency,即F(G(X))≈XF(G(X)) \approx XF(G(X))≈X,反之同理。
- 效果如何?
- 在图像翻译、风格转换、季节转换等任务上超过之前的模型。
- 能够使用不成对的数据进行训练,cycleGAN会自动学习不同域之间的风格特征。
- 还存在什么问题?
- CycleGAN的训练重度依赖于数据,如果数据质量不好,或是混入较多错误样本,可能会导致灾难性的后果。
- CycleGAN相对难以收敛,直接对映射进行约束训练的难度较大。
2、论文概述
2.1、基本思路
- 条件对抗生成网络(CGAN)是图像翻译问题的一种通用方案。对于这类网络来说,不仅仅会学习图像到图像的映射关系,还会自适应地学习一个损失函数来训练这层映射关系。
- CycleGAN思路参考自机器翻译的研究工作:
- 在机器翻译中,语言与语言之间几乎不存在一一对应关系,可能是多对一也可能是一对多,难以建立标签。因此就有研究者提出,在语言转换过程中引入一致性假设,即:英语翻译为法语,再将其翻译为英语,要保证两次翻译前后的语句尽可能近似。
- 因此,作者提出在图像翻译中引入cycle consistency。即假设有从域XXX到域YYY的映射GGG,又有从域YYY到域XXX的映射FFF,这两个映射要满足前面提到的cycle consistency:
- 使用映射GGG从域XXX转到域YYY,再使用映射FFF从域YYY映射回域XXX,得到X^\hat{X}X^,前后要保证L2损失:∥X−X^∥2\| X - \hat{X} \|_2∥X−X^∥2尽可能小。
- 使用映射FFF从域YYY转到域XXX,再使用映射GGG从域XXX映射回域YYY,得到Y^\hat{Y}Y^,前后要保证L2损失:∥Y−Y^∥2\| Y - \hat{Y} \|_2∥Y−Y^∥2尽可能小。
- 在cycle consistency之外加入两个对抗损失(adversarial loss),构成两个GAN,最后组合起来就是一个CycleGAN模型。
2.2、方法
- 如图所示,是一个CycleGAN的基本结构:
- 对抗损失(Adversarial Loss):
- CycleGAN实际上可以看做是由两个单向的GAN组成的。
- 第一组GAN是:映射G:X→YG: X \rightarrow YG:X→Y和判别器DYD_YDY。 损失函数如下:
- 生成器GGG试着去生成图像G(x)G(x)G(x),并使其尽可能类似于YYY域内的样本,同时DYD_YDY尝试去区分生成的样本G(x)G(x)G(x)和真实样本yyy。GGG试图去最小化目标函数,而判别器DDD则尽可能地最大化它,如:
- 第二组GAN与第一组近似,映射关系相反:F:Y→XF: Y \rightarrow XF:Y→X,以及判别器DXD_XDX。
- 与第一组GAN同理,可以构造对抗损失,不做赘述。
- 优化关系也类似:
- Cycle Consistency Loss:
- 仅从理论上来说,使用对抗损失来学习映射GGG和FFF,可以分别学习到域XXX和YYY间的转换关系。
- 在学习映射GGG和映射FFF的过程中,其实更近似与在随机的高维映射函数空间中搜索一组合适的函数。而仅仅依靠对抗损失,往往很难保证学习到有效的映射函数。为了减少在搜索空间中可能的函数选择,还需要加入额外的映射约束。
- 由此,作者提出了cycle consistency函数的概念:
- 作者认为,除了使用原始的对抗损失对映射GGG和映射FFF进行约束之外,这两个映射函数还需要具有cycle consistency的性质。
- 对于图像域XXX的图像xxx,在转换到域YYY后,还要保证能够转换回XXX域后能得到原始图像xxx。x→G(x)→F(G(x))≈xx \rightarrow G(x) \rightarrow F(G(x)) \approx xx→G(x)→F(G(x))≈x,文中称其为forward cycle consistency。
- 类似地,对于图像域YYY的图像yyy,在转换到域XXX后,还要保证能够转换回YYY域后能得到原始图像yyy。y→F(y)→G(F(y))≈yy \rightarrow F(y) \rightarrow G(F(y)) \approx yy→F(y)→G(F(y))≈y,文中称其为backward cycle consistency。
- 公式如下:
- 完整目标函数:
- λ\lambdaλ控制两个损失的相对关系。
- 最终希望得到的最优生成器是:
2.3、效果
- 总体来说,CycleGAN的效果还是很不错的,论文给出了很多实验结果,不做赘述了。
3、参考资料
- Unpaired Image-to-Image Translation Using Cycle-Consistent Adversarial Networks
论文笔记:CycleGAN相关推荐
- GAN学习历程之CycleGAN论文笔记
GAN目前发展的很快,成果也很多,从GAN->Pix2pix->CycleGAN 本来是准备看一篇19年一月份ICLR发表的conference paper INSTAGAN,发现这篇论文 ...
- 【论文笔记】Generative Adversarial Frontal View to Bird View Synthesis - 论文阅读笔记
[论文笔记]Generative Adversarial Frontal View to Bird View Synthesis 这篇论文是一篇发表在3DV会议上的文章,提出了基于GAN进行视角迁移与 ...
- 《CalliGAN: Style and Structure-aware Chinese Calligraphy Character Generator》论文笔记
关于<CalliGAN: Style and Structure-aware Chinese Calligraphy Character Generator>的论文笔记. 原文:Calli ...
- [2021 IJCV] Intra-Camera Supervised Person Re-Identification 论文笔记
目录 Background Motivation Related Work Problem Definition Methodology Per-Camera Multi-Task Learning ...
- ORB-SLAM3 论文笔记
ORB-SLAM3 论文笔记 这篇博客 ORB-SLAM3系统 相机模型的抽象(Camera Model) 重定位的问题 图片矫正的问题 视觉惯性SLAM的工作原理 相关公式 IMU初始化 跟踪和建图 ...
- 【论文笔记】 LSTM-BASED DEEP LEARNING MODELS FOR NONFACTOID ANSWER SELECTION
一.简介 这篇论文由IBM Watson发表在2016 ICLR,目前引用量92.这篇论文的研究主题是answer selection,作者在这篇论文基础上[Applying Deep Learnin ...
- 最新图神经网络论文笔记汇总(附pdf下载)
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 [导读]近年来,图神经网络变得非常火热,每年顶会在该领域内都会出现大量的研究论文,本文为大家提 ...
- [论文笔记] Fast Quality Driven Selection of Composite Web Services (ECOWS, 2006)
Time: 4.0 hours Jae-Ho Jang, Dong-Hoon Shin, Kyong-Ho Lee, "Fast Quality Driven Selection of Co ...
- 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning
论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning 2017-06-06 21: ...
- 光流 速度_[论文笔记] FlowNet 光流估计
[论文笔记] FlowNet: Learning Optical Flow with Convolutional Networks 说在前面 个人心得: 1. CNN的光流估计主要是速度上快,之后的v ...
最新文章
- iOS:切换视图的第三种方式:UITabBarController标签栏控制器
- 理科的至尊思想:进制之间的转换
- 20140710文安c++面试总结
- 记一次JavaNIO重复读消费
- 维护SAP帮助信息(WEB)
- HOJ 1015 Nearly prime numbers
- Hbase2修复 - HBCK2
- c++ h264RTP接收和发送程序
- SQL Server商业智能–在已建立的数据仓库中扩展事实表
- python有什么用-python有什么用
- Hadoop实战之一~Hadoop概述
- 怎么把png批量转换jpg格式?
- hadoop 运行过程中出现Call to localhost/127.0.0.1:9000 failed on connection exception错误。
- matlab统计颗粒数,一种基于Matlab的谷物颗粒计数方法
- python 应用thrift---- thrift的监控fb303 - import coding_dog ---- by 坚毅的刀刀 - 博客大巴...
- 国防科技大学计算机作品赛,信息学院教师在全国计算机类课程实验教学案例设计竞赛中获一等奖...
- Android自定义导览地图组件(二)
- HttpClient上传文件到微信素材乱码问题解决
- PhoneWindowManager().interceptKeyBeforeQueueing()中的interactive变量值的来源
- 公钥秘钥及加签验签那些事儿