Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 阅读笔记
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
(使用循环一致的对抗网络的非配对图像-图像转化)
原文地址:https://arxiv.org/abs/1703.10593
作者:Jun-Yan Zhu,Taesung Park,Phillip Isola,Alexei A. Efros
作者机构:伯克利人工智能研究(BAIR)实验室
作者博客:Jun-Yan Zhu,http://people.csail.mit.edu/junyanz/。博客上有论文演示视频以及代码,从博客发现,pix2pix和cycle-gan该作者都参与提出。
作者兴趣方向:计算机视觉、计算机图形学和机器学习。
摘要
图像-图像的转化训练时,数据不一定是成对的,本文就是用于解决在没有成对图像的基础上,将源域图像转化为目标域图像的问题。我们的目标是学习一个从X到Y的映射G,利用对抗Loss,使得G(X)与Y无法被判别器区分。因为这个映射G高度受限,所以再设计一个从Y到X的映射F,引入一个循环一致性的loss去使得F(G(X))~=X(反之亦然)。本文方法在风格转换,物体变形,季节转变,图像加强上都有应用。
介绍
如果训练一个映射G:X到Y,并且通过一个对抗网使得输出y^=G(x),x∈X无法从Y中区分。理论上来说,这个目标函数能够使得输出分布与目标分布靠近,这要求G是独立的。最优化G可以得到我们的目标。然而这样的转化不能保证输入和输出是有意义的一一对应,因为G有无穷种方式使得Y^的分布靠近Y,这样的优化对抗网络往往会导致模式崩溃(mode collapse),即所有输入图像映射到相同的输出图像。
基于这个问题,所以需要更多的结构去改善我们的目标函数。利用图像转化应该必备的特性“循环一致性”。例如:一个英文句子翻译成法语,然后再由法语翻译成英文,这时的结果应该尽量与原英文语句一致。即我们如果转化G映射,X到Y和另一个转换F映射Y到X,那么G和F应该互为倒数,两个映射都应该是双射的。通过同时训练映射G和F来应用这个结构假设,并且加上循环一致损失来使得F(G(x))~=x,G(F(y))~=y。将这种损失与域X和域Y上的对抗性损失结合起来,就得到了未成对图像到图像转换的完整目标。
相关工作
- GAN。GAN成功关键在于对抗损失迫使生成图像和真实图像难以区分。本文继续采用这个思想。
- 图像到图像的转化。很多配对的图像到图像训练方法,本文重在非配对图像。
- 非匹配图像到图像的翻译。本文不依赖于任何特定任务的,预定义的输入和输出之间的相似性函数,也不假设我们假设输入和输出必须位于相同的低维嵌入空间。这使我们的方法成为许多视觉和图形任务的通用解决方案。
- 循环一致性。在目标跟踪,语言翻译,3D形状配准等方面。在CNN中也有应用。我们引入了类似的损失来推动G和F相互一致。
- 神经风格转移。是另一种形式的图像到图像的转化。我们主要关注点是通过捕捉高阶结构之间的对应关系来学习两个域之间的映射,而不是两个特定图像之间的映射。
公式
设计两个映射函数,G:X到Y。F:Y到X。并设计两个对抗判别器。Dx用于区分x和F(y),Dy用于区分y和G(x)。同时设计两个损失函数,一个对抗损失用于使得生成图像和目标图像分布一致,另一个是循环一致性损失,以防止G和F相互矛盾。
- 对抗损失:G:X到Y。判别器Dy:
其中G试图生成图像G(x)看起来类似于来自域Y的图像。而DY的目的是区分生成样本G(x)和真实样本y。
2. 循环一致性损失:对抗式训练在理论上可以学习分别作为目标域Y和X产生相同分布的映射G和F(严格地说,这要求G和F是随机函数)。具有足够大的容量,网络可以将相同的一组输入图像映射到目标域中图像的任意随机排列,其中任何学习到的映射都可以产生与目标分布匹配的输出分布。为了进一步减少可能映射函数的空间,我们认为学习到的映射函数应该是循环一致的:如图3 (b)所示。对于定义域x中的每一个图像x,图像平移周期应该能够使x返回到原始图像,
x → G(x) → F(G(x)) ≈ x.向前循环一致性。
y → F(y) → G(F(y)) ≈ y.向后循环一致性
我们可以用循环一致性损失来激励这种行为:
完整的目标函数:
λ控制两个目标函数的相关重要性。
我们的目标是求解:
模型可以看作是训练两个“自动编码器:学习一个自编码器F◦G:X→X和另一个G◦F: Y→Y。然而,这些自动编码器都有特殊的内部结构:它们通过中间表示层将图像映射到自身。这种设置也可以看作是“对抗式自动编码器”的一种特殊情况,它使用对抗式损失来训练自动编码器的瓶颈层来匹配任意的目标分布。在我们的案例中,X→X自编码器的目标分布是域Y。
实现
- 网络结构。包括 two stride-2 convolutions, several residual blocks , 和 two 1/2 -strided convolutions。使用instance normalization。对于判别器的网络结构,使用70*70Patch-GANs,即判断70×70图像块是真实或者假。鉴别器架构具有比整张图片判断的鉴别器更少的参数,并且可以以完全卷积的方式应用于任意大小的图像。
- 训练细节。第一,应用了最近工作中的两种技术来稳定我们的模型训练过程,对于Lgan用最小平方差损失替换掉公式1的负log似然函数。公式1变为公式5。
第二,为了减少模型的震荡,更新鉴别器DX和DY,使用历史生成图像,而不是使用最新的生成图像。保存一个图像缓冲区,存储以前生成的50个图像。
结果
比较了本文方法与最近的方法在同一个数据集上的未配对图像对图像的转化。然后研究了对抗性损失和循环一致性损失的重要性,并将我们的完整方法与几个变量进行了比较。最后,我们证明了我们的算法在非配对数据的应用中的通用性。本文方法称为CycleGAN。
Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 阅读笔记的更多相关文章
- 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》论文笔记
Code Address:https://github.com/junyanz/CycleGAN. Abstract 引出Image Translating的概念(greyscale to color ...
- StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation - 1 - 多个域间的图像翻译论文学习
Abstract 最近在两个领域上的图像翻译研究取得了显著的成果.但是在处理多于两个领域的问题上,现存的方法在尺度和鲁棒性上还是有所欠缺,因为需要为每个图像域对单独训练不同的模型.为了解决该问题,我们 ...
- 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_I ...
- 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 ...
随机推荐
- Vue-admin工作整理(七):路由的切换动效
思路就是通过 transition-group 这个组件来对多组件进行控制,效果是通过样式来写,transition-group要有指定的key值,样式中通过name来命名类的名字 <templ ...
- 使用subline作为Stata外部编辑器,并实现代码高亮
Sublime Text 3在Stata13/14/15 代码编辑中的辅助应用 更友好的格式请见: http://dfadf0be.wiz03.com/share/s/3vHv2-0ALQZE2v ...
- 在linux上运行网页程序及日志文件查看
- linux 内存-文档学习
ptmalloc http://www.malloc.de/en/ tcmalloc https://github.com/gperftools/gperftools jcmalloc http:// ...
- ape 文件 转化为mp3 文件
试了很多软件,最后才发觉 any-audio-converter最好用. 可以吧ape 按 cue切割好,然后转化成 MP3 官网可以免费下载: https://www.any-audio-conve ...
- LeetCode--034--在排序数组中查找元素的第一个和最后一个位置(java)
给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n) 级别. 如果数组中不存在目标值,返回 [ ...
- es6中promise ALL Race Resolve Reject finish的实现
function mypromise(func){ this.statue = "pending"; this.data = null; this.resolveCallback ...
- C#流程控制语句--迭代语句(while,do....while, for , foreach)
迭代语句:有的时候,可能需要多次执行同一块代码.函数中的第一个语句先执行,接着是第二个语句,依此类推. 迭代语句:while(先检查后执行) while(条件表达式 bool类型) { 代码语句 } ...
- mongodb+express+nodejs(登陆退出)
1.安装expressnpm i -g express(新版本4.X以上要安装express-generator)npm i -g express-generator 2.安装mongodb下载地址h ...
- QT:图形的描画(折线,柱状图,多边形)
1. 创建一个继承于QWidget的类,重载一个叫paintEvent的函数, 2. 在paintEvent函数中调用Qpainter类,此类是一个重量级类,在paintEvent函数尽量只创建一次 ...