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上的对抗性损失结合起来,就得到了未成对图像到图像转换的完整目标。

相关工作

  1. GAN。GAN成功关键在于对抗损失迫使生成图像和真实图像难以区分。本文继续采用这个思想。
  2. 图像到图像的转化。很多配对的图像到图像训练方法,本文重在非配对图像。
  3. 非匹配图像到图像的翻译。本文不依赖于任何特定任务的,预定义的输入和输出之间的相似性函数,也不假设我们假设输入和输出必须位于相同的低维嵌入空间。这使我们的方法成为许多视觉和图形任务的通用解决方案。
  4. 循环一致性。在目标跟踪,语言翻译,3D形状配准等方面。在CNN中也有应用。我们引入了类似的损失来推动G和F相互一致。
  5. 神经风格转移。是另一种形式的图像到图像的转化。我们主要关注点是通过捕捉高阶结构之间的对应关系来学习两个域之间的映射,而不是两个特定图像之间的映射。

公式

设计两个映射函数,G:X到Y。F:Y到X。并设计两个对抗判别器。Dx用于区分x和F(y),Dy用于区分y和G(x)。同时设计两个损失函数,一个对抗损失用于使得生成图像和目标图像分布一致,另一个是循环一致性损失,以防止G和F相互矛盾。

  1. 对抗损失: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。

实现

  1. 网络结构。包括 two stride-2 convolutions, several residual blocks , 和 two 1/2 -strided convolutions。使用instance normalization。对于判别器的网络结构,使用70*70Patch-GANs,即判断70×70图像块是真实或者假。鉴别器架构具有比整张图片判断的鉴别器更少的参数,并且可以以完全卷积的方式应用于任意大小的图像。
  2. 训练细节。第一,应用了最近工作中的两种技术来稳定我们的模型训练过程,对于Lgan用最小平方差损失替换掉公式1的负log似然函数。公式1变为公式5。

第二,为了减少模型的震荡,更新鉴别器DX和DY,使用历史生成图像,而不是使用最新的生成图像。保存一个图像缓冲区,存储以前生成的50个图像。

结果

比较了本文方法与最近的方法在同一个数据集上的未配对图像对图像的转化。然后研究了对抗性损失和循环一致性损失的重要性,并将我们的完整方法与几个变量进行了比较。最后,我们证明了我们的算法在非配对数据的应用中的通用性。本文方法称为CycleGAN

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 阅读笔记的更多相关文章

  1. image-to-image translation with conditional adversarial networks文献笔记

    Image-to-Image Translation with Conditional Adversarial Networks (基于条件gan的图像转图像) 作者:Phillip Isola, J ...

  2. 《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》论文笔记

    Code Address:https://github.com/junyanz/CycleGAN. Abstract 引出Image Translating的概念(greyscale to color ...

  3. StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation - 1 - 多个域间的图像翻译论文学习

    Abstract 最近在两个领域上的图像翻译研究取得了显著的成果.但是在处理多于两个领域的问题上,现存的方法在尺度和鲁棒性上还是有所欠缺,因为需要为每个图像域对单独训练不同的模型.为了解决该问题,我们 ...

  4. 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 ...

  5. Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks(使用循环一致的敌对网络进行不成对的图像到图像转换)

    作者:朱俊彦,朱俊彦博士是计算机图形学领域现代机器学习应用的开拓者.他的论文可以说是第一篇用深度神经网络系统地解决自然图像合成问题的论文.因此,他的研究对这个领域产生了重大影响.他的一些科研成果,尤其 ...

  6. 《StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation》论文笔记

    ---恢复内容开始--- Motivation 使用单组的生成器G和判别训练图片在多个不同的图片域中进行转换 效果确实很逆天,难怪连Good Fellow都亲手给本文点赞 Introduction 论 ...

  7. 《Image-to-Image Translation with Conditional Adversarial Networks》论文笔记

    出处 CVPR2017 Motivation 尝试用条件GAN网络来做image translation,让网络自己学习图片到图片的映射函数,而不需要人工定制特征. Introduction 作者从不 ...

  8. (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 ...

  9. (转)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 ...

随机推荐

  1. npm --save-dev --save | -D -S区别

    -S就是--save的简写,就行npm默认一个start的字段,你可以不必输入npm run start 而只需输入npm start,这两个效果是一样的.-D就是--save-dev 这样安装的包的 ...

  2. ES6解构过程添加一个默认值和赋值一个新的值

    const info = { name: 'xiaobe', } const { name: nickName = '未知' } = info; 其中nickName是解构过程中新声明的一个变量,并且 ...

  3. Js原生封装选项卡组件

    class MyTab extends HTMLElement{ //创建一个类名MyTab constructor(){ //构造函数 super(); //指向父类构造函数,必须要有的 const ...

  4. ERROR:scala:Error:Object scala.runtime in compiler mirror not found

    我的项目是sbt项目,今天早晨的时候还好好的,结果中午吃了个饭回来就特么的编译就报错了,真是闹心 报错截图: 解决方案: 删除idea的缓存文件 然后重新启动idea,重新下载jia包,在进行编译,就 ...

  5. python-Excel读取-合并单元格读取

    python-Excel读取-合并单元格读取(后续会补充python-Excel写入的部分) 1. python读取Excel单元格 代码包含读取Excel中数据,以及出现横向合并单元格,以及竖向合并 ...

  6. Java线程池—ThreadPool简介

    一.Java线程池类/接口关系图及作用 Executor接口:只有一个方法execute(Runnable command),用来执行用户的任务线程. ExecutorService接口:继承自Exe ...

  7. STSdb数据库的实现使用类

    STSdb 3.5是一个开源的key-value存储形式的数据库,它是用微软.net框架C#语言编写的.STSdb 3.5尤其使用于紧急任务或实时系统,如:股市交易,电子通信,实验室数据等,它的主要功 ...

  8. BootStrap 学习笔记一

    1.bootstrap列偏移 列偏移是指在网格系统中,可以使用偏移列来达到让某列右移的效果,只需要在class的“col-*-*”后追加“col-*-offset-*” <div class=& ...

  9. 新手vue构建单页面应用实例

    本人写的小程序,功能还在完善中,欢迎扫一扫提出宝贵意见! 步骤: 1.使用vue-cli创建项目2.使用vue-router实现单页路由3.用vuex管理我们的数据流4.使用vue-resource请 ...

  10. Element-ui上传文件(删除、添加、预览)

    先看下效果是不是你所需要的.... 上传文件进度条后续会加上的.... 功能需求:默认为上传状态 1.未上传:点击可上传文件 2.已上传:点击可上传文件 (1).鼠标移入[删除] (2).鼠标点击[预 ...