cycle GAN


应用:

1.目标转换,比如从猫变成狗。

2.图片风格转换,比如简笔画风格变成莫奈风格

3.…


训练数据:

CycleGAN只需要两类图片就可以训练出一个模型,不需要成对(paired)的数据

成对的数据(left)非成对的数据(right)


单向GAN


上图是一个单向 GAN 的示意图。我们希望能够把 domain A 的图片(命名为 a)转化为 domain B 的图片(命名为图片 b)。

为了实现这个过程,我们需要两个生成器 G_AB 和 G_BA,分别把 domain A 和 domain B 的图片进行互相转换。

图片 A 经过生成器 G_AB 表示为 Fake Image in domain B,用 G_AB(a) 表示。而 G_AB(a) 经过生辰器 G_BA 表示为图片 A 的重建图片,用 G_BA(G_AB(a)) 表示。

最后为了训练这个单向 GAN 需要两个 loss,分别是生成器的重建 loss 和判别器的判别 loss。

为什么要连两个生成器和两个判别器呢?论文中说,是为了避免所有的X都被映射到同一个Y,比如所有男人的图像都映射到范冰冰的图像上


什么是双向的cycle GAN? 先来看单向GAN。

单向 loss(A->B):

为了训练这个单向 GAN 需要两个 loss,分别是生成器的重建 loss 和判别器的判别 loss

 

判别 loss:生成的假图片 G_AB(A) 和原始的真图片 B 尽可能的相似。

生成 loss:目的是希望生成的图片G_BA(G_AB(a))和原图 a 尽可能的相似。


理解了单向的GAN和Loss,双向的cycle GAN和cycle loss会好理解一些。


Cycle GAN:

CycleGAN 其实就是一个 A→B 单向 GAN 加上一个 B→A 单向 GAN

一个单向 GAN 有两个 loss,而 CycleGAN 加起来总共有四个 loss。


cycle GAN 的 生成器和判别器(论文图)

(a)生成器和判别器

生成器 mapping functions G : X → Y and F : Y → X

判别器 DY and DX.

DX 优化F,区分images {x} and translated images {F (y)}

DY 优化G,区分{y} and {G(x)}

(b) forward cycle-consistency loss: x →G(x) →F(G(x)) ≈ x

(c) backward cycle-consistency loss: y→F(y) →G(F(y)) ≈ y

也就是说,将X的图片转换到Y空间后,应该还可以转换回来。

Loss

1) adversarial loss:Lgan(G; DY ; X; Y )

generated images 和target domain之间的loss

2) cycle consistency loss:Lcyc(G; F )

使得 F(G(x)) ≈ x ,G(F(y)) ≈ y. 防止学习到的F和G相互矛盾

3) Full Objective

L(G; F; Dx; Dy ) =Lgan(G; Dy ; X; Y )+Lgan(F; Dx; Y; X)+ λ Lcyc(G; F );

训练目标:

训练目标

参考链接

CycleGAN:图片风格,想换就换 | ICCV 2017论文解读 - Paper weekly - CSDN博客

你可能感兴趣的:(cycle GAN)