当前位置:   article > 正文

windows中tensorflow实现CycleGAN_cyclegan爆内存

cyclegan爆内存

目录

CycleGAN的原理(转)

CycleGAN与DCGAN的对比(转)

CycleGAN与pix2pix模型的对比(转)

在TensorFlow中实验CycleGAN(实战过程)

环境:tensorflow-gpu(此代码在cpu版本训练时间太长,最好用gpu版本)

python 3.6.8

Data preparing

Training

Export model

Inference

参考


CycleGAN是在2017年3月底放在arxiv(地址:[1703.10593] Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks)的一篇文章,同一时期还有两篇非常类似的DualGANDiscoGAN,简单来说,它们的功能就是:自动将某一类图片转换成另外一类图片。

这篇文章主要分成三个部分:

  • CycleGAN的原理解析(转)
  • CycleGAN与原始的GAN、DCGAN、pix2pix模型的对比(转)
  • 如何在TensorFlow中用CycleGAN训练模型(windows)(原创)

CycleGAN的原理(转)

我们之前已经说过,CycleGAN的原理可以概述为:将一类图片转换成另一类图片。也就是说,现在有两个样本空间,X和Y,我们希望把X空间中的样本转换成Y空间中的样本。

因此,实际的目标就是学习从X到Y的映射。我们设这个映射为F。它就对应着GAN中的生成器,F可以将X中的图片x转换为Y中的图片F(x)。对于生成的图片,我们还需要GAN中的判别器来判别它是否为真实图片,由此构成对抗生成网络。设这个判别器为 D_{Y} 。这样的话,根据这里的生成器和判别器,我们就可以构造一个GAN损失,表达式为:

L_{\text{GAN}}(F,D_{Y},X,Y) = E_{y \sim p_{\text{data}}(y)}\lbrack\log D_{Y}(y)\rbrack + E_{x \sim p_{\text{data}}(x)}\lbrack\log(1 - D_{Y}(F(x)))\rbrack

参考:GAN学习指南:从原理入门到制作生成Demo

但单纯的使用这一个损失是无法进行训练的。原因在于,映射F完全可以将所有x都映射为Y空间中的同一张图片,使损失无效化。对此,作者又提出了所谓的“循环一致性损失”(cycle consistency loss)。

我们再假设一个映射G,它可以将Y空间中的图片y转换为X中的图片G(y)。CycleGAN同时学习F和G两个映射,并要求

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/839625
推荐阅读
相关标签
  

闽ICP备14008679号