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. PageRank算法实现

    基本原理 在互联网上,如果一个网页被很多其他网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高.这就是PageRank的核心思想. 引用来自<数学之美>的简单例子: 网页Y的排名应该 ...

  2. composer学习总结

    composer 简介:是php用来管理依赖(dependency)关系的工具,工具包地址:https://packagist.org 下载地址:https://getcomposer.org/  安 ...

  3. MySQL优化查询 5.7版本

    1. 变更参数 : query_cache_type 如果何配置查询缓存: query_cache_type 这个系统变量控制着查询缓存工能的开启的关闭.query_cache_type=0时表示关闭 ...

  4. Axure下拉列表的交互事件 + 自定义元件库

    下拉列表的交互事件: 场景:当点击第一个下拉列表框的江苏时,第二个列表框会显示江苏省的城市:当点击第一个下拉列表框的北京时,第二个列表框会显示北京市的区 操作:把第二个列表框设置为动态面板,设置为两种 ...

  5. Java8:Lambda表达式增强版Comparator和排序

    1.概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排 ...

  6. C语言博客作业04——数组

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量 1.2.1学习体会 这几周学习了数组,数组分为三大块:一维数组.二维数组和字符数组.数组相对于之前普通变量的好处就是可以储存数值,方便数据 ...

  7. 论文选读二:Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification

    论文选读二:Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification 目前,阅读理解通常会给出 ...

  8. 【 P3952】 时间复杂度 大模拟题解

    题目链接 完全模拟 1.模拟结果 当我们的模拟程序执行结束时,直接执行模拟结果函数,用于比对我们的结果和数据给出的结果. bool yes(char a[],char b[]) { ;i<=;+ ...

  9. 如何练习打字之用英文写文章 & 如何调养右手之用左手握鼠标

    part1:how to practise your typing via writing a English blog it's easy to write english for chinese. ...

  10. springboot秒杀课程学习整理1-2

    1)从数据库到前端,做了三层转换,最后统一返回给前端的格式 DO-> model: 放在service中,目的是为了组装来自于数据库的数据,有些字段来自于不同的表的取,这一层相当于真正的业务模型 ...