GAN原理到CycleGAN

GAN的基本原理

G(Generator)和D(Discriminator)。
如果是生成图片->
G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率,如果为1,就代表100%是真实的图片,而输出为0,就代表不可能是真实的图片。
过程就如下:
生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
CycleGAN的原理
论文地址:https://arxiv.org/abs/1703.10593
CycleGAN的原理:将一类图片转换成另一类图片
也就是说,现在有两个样本空间,X和Y,我们希望把X空间中的样本转换成Y空间中的样本。
实际的目标就是学习从X到Y的映射。我们设这个映射为F。它就对应着GAN中的生成器,F可以将X中的图片x转换为Y中的图片F(x)。对于生成的图片,我们还需要GAN中的判别器来判别它是否为真实图片,由此构成对抗生成网络。设这个判别器为 D_{Y}
在这里插入图片描述
这里会出现所有的X映射到一个Y,损失就会没有意义了。
再假设一个映射G,它可以将Y空间中的图片y转换为X中的图片G(y)。CycleGAN同时学习F和G两个映射,并要求 F(G(y)) \approx y ,以及 G(F(x)) \approx x 。也就是说,将X的图片转换到Y空间后,应该还可以转换回来。这样就杜绝模型把所有X的图片都转换为Y空间中的同一张图片了。
在这里插入图片描述
为G也引入一个判别器 D_{X} ,由此可以同样定义一个GAN的损失
在这里插入图片描述
最后的损失就会是这样三个和在一起
在这里插入图片描述
pix2pix也可以做图像变换,它和CycleGAN的区别在于,pix2pix模型必须要求成对数据(paired data),而CycleGAN利用非成对数据也能进行训练(unpaired data)。
这里用橘子案例来实战跑一下。
地址:https://github.com/vanhuyz/CycleGAN-TensorFlow
这里只跑两轮。
在这里插入图片描述
可以看到几乎不起作用,训练太少了,没有很好的拟合。
在这里插入图片描述
所以最后测试苹果转橘子的效果很差
在这里插入图片描述
在这里插入图片描述
然后这里用训练好的模型导入再看一次
在这里插入图片描述
明显要比上面清晰好多。
参考地址:https://zhuanlan.zhihu.com/p/28342644

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值