Cycle-GAN论文解读

论文:https://arxiv.org/abs/1703.10593

参考:Cycle-GAN论文解读 

源码:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

引言

        假设有两个不成对的图像X和Y,我们的算法训练去学习一个“自动相互转换”,训练时不需要成对的配对样本,只需要源域和目标域的图像。训练后网络就能实现对图像源域到目标域的迁移。

摘要

        图像到图像的转换是一类视觉和图形问题,其目标是使用对齐图像对的训练集来学习输入图像和输出图像之间的映射。然而,对于许多任务来说,成对的训练数据是不一定有的。我们提出了一种方法,在没有配对示例的情况下,学习将图像从源域X平移到目标域Y。我们的目标是学习一个映射G:X\rightarrow Y使得G(X)的分布和Y的分布不可区分。同时又因为这个映射是高度不受约束的,我们还设计了一个反映射F:Y\rightarrow X并引入了一个循环一致性损失(cycle consistency loss )。也就是要求X域的图像映射到Y域上再映射回X域之后,与原图尽可能保持一致,反之亦然,从Y域映射到X域在映射回来的Y域图像也应与原图保持一致。

1  介绍

        之前提到的Pix2Pix可以实现配对图片的风格转换,比如说马和斑马的转换。如下图所示,但是有一个问题,就是会发现每一对图片都是对应的,实际上很难有这种数据集。更理想的情况是给出两组数据,里面没有对应关系,网络直接学习找到映射。

         下图实际上就是Pix2Pix和Cycle-GAN的区别所在了。pix2pix也可以做图像变换,它和CycleGAN的区别在于,pix2pix模型必须要求成对数据(paired data),而CycleGAN利用非成对数据也能进行训练(unpaired data)。

2  相关工作

        相关前置知识:GANDCGANPix2Pix

2.1  Cycle-GAN网络架构

        Cycle-GAN其实就是一个X→Y单向GAN加上一个Y→X单向GAN。两个GAN共享两个生成器,然后各自带一个判别器,所以加起来总共有两个判别器和两个生成器。一个单向GAN有两个loss,而CycleGAN加起来总共有四个loss。

2.2  Cycle-GAN网络特点

         如果只考虑前半部分即红色框,那么G_{AB}只要生成马的图片就可以通过判别器D_{B}了,而不用考虑原始斑马了,不用考虑如何保持形态、位置等问题,也就是说并不是从原图像的斑马中学来的。

        为了使得我们生成的图片跟原始图片是有关联的,再加上一个网络G_{BA},把B在生成为A,定义一个损失函数来衡量这个过程原始图片和还原图片之间的相似性(L2-Loss,每个像素点相减的平方)。

        (2个G网络,2个D网络)损失函数:G网络,D网络,Cycle(L2-Loss,输入输出相似性),Identity(在上图,经过A2B,比如说直接输入一个斑马,直接输出一模一样斑马),如下所示(体现Cycle这个思想)。

 

 Cycle-GAN网络:

  • G_{AB}实现domainA到domainB迁移
  • G_{BA}实现domainB到domainA迁移
  • D_A实现判别G_{BA}生成的数据还是真实的A数据
  • D_B实现判别G_{AB}生成的数据还是真实的B数据

训练过程如下:

  • G_{AB}尽可能生成更真的图像愚弄D_B
  • G_{BA}尽可能生成更真的图像愚弄D_A
  • D_A尽可能判别出真实的A或者G_{BA}生成的A
  • D_B尽可能判别出真实的B或者G_{AB}生成的B

 3  损失函数

 3.1  Adversarial Loss

        尽可能让生成器生成的数据接近于真实的数据分布

  •  其中y表示域Y内的样本,x表示域X内的样本
  • D_Y(y)表示真实的Y中的样本在判别器D_Y之中的评分,越接近1则判别器认为此样本越真。
  • G(x)为生成器根据x生成的与Y同分布的样本。
  • D_Y(G(x))为判别器根据生成的样本得到的评分,如果D_Y认为生成的样本越假,则D_Y的评分D_Y(G(x))越接近于0,则1-D_Y(G(x))越接近于1
  • 如果判别器越强,则更能区分真实的y与生成器根据x生成的G(x),此loss值会越大
  • 同时,生成器希望尽可能的生成以假乱真的样本,愚弄判别器,所以生成器希望GAN loss越小。生成器与判别器在对抗的过程中,越来越强,最终生成器生成的样本以假乱真,达到判别器判别不出的程度。即,即判别器希望这个Loss越大越好,这样他的判别能力越好,但是生成器希望这个Loss越小越好,这样判别器才分不清楚。

        相对应的,有F:Y\rightarrow X,其目标为:

 3.2  Cycle Consistency Loss 

         用于让两个生成器生成的样本之间不要相互矛盾。上一个adversarial loss只可以保证生成器生成的样本与真实样本同分布,但是我们希望对应的域之间的图像是一一对应的。即A-B-A还可以再迁移回来。即达到如下的恢复效果。

        我们希望x \rightarrow G(x)\rightarrow F(G(x)) \approx x,称该正向过程为forward cycle consistency;同理,y \rightarrow F(y) \rightarrow G(F(y)) \approx y, 称该反向过程为backward cycle consistency。因此Cycle Consistency Loss 表示为:

 3.3  Consistency lossidentity loss 

         ​​​​​​​Consistency loss、identity loss  用于保证生成图像尽量保留源图像的信息

  • Consistency loss :源域X中的图像x,经过其中一个生成器生成图像 G(x),作为另一个生成器的输入生成回来 F(G(x)),尽可能与原来图像接近,采用L2-Loss。
  • Identity loss :用于保证生成图像的连续性,一个图像x,经过其中一个生成器生成图像 G(x),尽可能与原来图像接近。

3.4  总体损失函数

         优化目标为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值