chapter 11 CycleGAN与非配对图像转换

本章主要总结2个知识点:1)CycleGAN原理;2)CycleGAN在Tensorflow中的实现;

一、CycleGAN原理

在前两章中,我们主要利用pix2pix.py来训练DCGAN,进行“图像翻译”,在训练DCGAN时,要求训练样本是成对的,比如:image_blur 和 image_clear,但是,在现实世界,这种成对的样本很难寻找,由此,引入了CycleGAN,在对该网络进行训练时,无需成对样本(如下图示),也可以完成训练,且依然可以用CycleGAN的生成网络进行图像翻译,下面对其原理进行解释。

首先,需要明确,CycleGAN依然由“生成网络”和“判别网络”构成,但是,其损失函数与GAN损失函数存在很大差别。
GAN的损失函数为:Ltotal (G,Dy,X,Y) = Ey~pdata(y)[lnD(y)] + Ex~pdata(x)[ln(1-D(G(x)))]。
而在CycleGAN中,由于训练样本X,Y不成对,因此,生成网络G有可能将X中的所有image都映射到Y上的某个image,从而使GAN中的损失函数失效,针对这个问题,CycleGAN中提出了“循环一致性损失”的概念。
其核心思想是,除了生成网络形成的映射F(X -> Y)以外,在设定一个相反的映射G(Y -> X),我们的目的是,使得:G(F(X)) = Y,F(G(Y)) = X;在相反方向同样设定一个判别函数Dx,其损失函数形式与GAN相同。除了判别函数Dy,Dx上的损失函数,CycleGAN中还设定了另外一个损失函数,即“循环一致性损失”:Lcyc(G,F,X,Y) = Ex~pdata(x)[|| G(F(x)) - x||1] + Ey~pdata(y)[||F(G(y)) - y ||1],该损失函数防止生成网络将所有X中的image都映射到Y中同一个image上(个人理解:假设生成网络G将所有x都映射到同一个y上,则F(xi) = y,G(F(xi))可能等于任何xi,这样|| G(F(x)) - x||1就可能无限大,从而使得Lcyc(G,F,X,Y) 无限大。逆向思维,通过限定Lcyc(G,F,X,Y) ,使其尽可能小,我们可以防止生成网络将所有x都映射到同一个y上)。
由上,我们就可以得出CycleGAN的损失函数:
Ltotal = LGAN(F,Dy,X,Y) + LGAN(G,Dx,X,Y) + lambda * Lcyc(F,G,X,Y)
通过该损失函数,可以利用不成对样本对CycleGAN进行训练。

关于CycleGAN的总结:
CycleGAN的损失函数由3部分组成:
Dy损失:使得生成网络生成的image与real image尽可能的相似(其原理依然为“G,D网络的对抗”);
Dx损失:使得“反生成网络”通过real image生成的image尽可能与input image相近;
cyc损失:保证生成网络不将所有input image映射到一个相同的real image上;
CycleGAN实现的图像翻译,与DCGAN实现的图像翻译性质不同,DCGAN的input和output本质是同一事物,而CycleGAN的input和output不是同一事物,如apple to orange;DCGAN中train data是成对出现的,而CycleGAN中的train data不成对,即不是以[Input_image | real_image] 的形式输入CycleGAN的,一个input_image,可能对应任意一个real_image;

有一个疑问:x,y是如何对应的输入到CycleGAN中的???
根据源码,(x,y)的输入还是成对的,只是x,y不是同一个事物;

二、Tensorflow中CycleGAN的训练

build_data.py 用于将数据转为tfrecord格式
model.py 定义了CycleGAN网络
train.py 用于训练CycleGAN网络
export_graph.py 将训练好的model导出为.pb文件
inference.py 利用已经训练好的model进行测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sarah ฅʕ•̫͡•ʔฅ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值