【GANs学习笔记】(十六)CGAN、TRIPLEGAN

完整笔记:http://www.gwylab.com/note-gans.html
———————————————————————

第三章 GANs的应用

Part1 GANs在图像生成上的应用

1. CGAN

1.1 传统GANs的问题

       我们假设现在要做一个项目:输入一段文字,输出一张图片,要让这张图片足够清晰并且符合这段文字的描述。我们搭建一个传统的NeuralNetwork(下称NN)去训练。

       考虑我们输入的文字是“train”,希望NN能输出清晰的火车照片,那在数据集中,下面左图是正面的火车,它们统统都是正确的火车图片;下面右图是侧面的火车,它们也统统都是正确的火车。

 

       那在训练这个NN的时候,network会觉得说,火车既要长得像左边的图片,也要长得像右边的图片,那最终networkoutput就会变成这一大堆images的平均,可想而知那会是一张非常模糊并且错误的照片。

       我们需要引入GANs技术来保证NN产生清晰准确的照片。

       我们把原始的NN叫做GGenerator),现在它吃两个输入,一个是条件wordc,另外一个是从原始图片中sample出的分布z,它的输出是一个imagex,它希望这个x尽可能地符合条件c的描述,同时足够清晰,如下图。

       GANs中为了保证输出image的质量会引入一个DDiscriminator),这个D用来判断输入的x是真实图片还是伪造图片,如下图。

       但是传统GANs只能保证让x尽可能地像真实图片,它忽略了让x符合条件描述c的要求。于是,为了解决这一问题,CGAN便被提出了。

1.2 CGAN的原理

       我们的目的是,既要让输出的图片真实,也要让输出的图片符合条件c的描述。Discriminator输入便被改成了同时输入cx,输出要做两件事情,一个是判断x是否是真实图片,另一个是xc是否是匹配的。

       比如说,在下面这个情况中,条件ctrain,图片x也是一张清晰的火车照片,那么D的输出就会是1

       而在下面两个情况中,左边虽然输出图片清晰,但不符合条件c;右边输出图片不真实。因此两种情况中D的输出都会是0

       CGAN的基本思路就是这样,下面我们具体看一下CGAN的算法实现。

1.3 CGAN的算法实现

       因为CGANsupervised学习,采样的每一项都是文字和图片的pairCGAN的核心就是判断什么样的pair给高分,什么样的pair给低分。

       我们先关注Discriminator

       第一项是正确条件与真实图片的pair,应该给高分;第二项是正确条件与仿造图片的pair,应该给低分(于是加上了“1-”);第三项是错误条件与真实图片的pair,也应该给低分。

       可以明显的看出,CGANGANsDiscriminator上的不同之处就是多出了第三项。

       下面再关注一下Generaotor

       生成器的目的就是让判别器给仿造图片的得分越高越好,这与传统GANs本质上是一致的,只是在输入上多了一个参数c

       CGAN的最终目标表达式写为:

1.4 CGAN的讨论

       大部分的CGAN Discriminator都采用上述架构,为了把图片和条件结合在一起,往往会把x丢入一个network产生一个embeddingcondition也丢入一个network产生一个embedding,然后把这两个embedding拼在一起丢入一个network中,这个network既要判断第一个embedding是否真实,同时也要判断两个embedding是否逻辑上匹配,最终给出一个分数。但是也有一种CGAN采用了另外一种架构,并且据李宏毅老师的介绍这种架构的效果是不错的。

       首先有一个network它只负责判断输入x是否是一个真实的图片,并且同时产生一个embedding,与c一同传给第二个network;然后第二个network只需判断xc是否匹配。最终两个network的打分依据模型需求进行加权筛选即可。

       第二种模型有一个明显的好处就是Discriminator能区分出为什么这样的pair会得低分,它能反馈给Generator得低分的原因是c不匹配还是x不够真实;然而对第一种模型而言它只知道这样的pair得分低却不知道得分低的原因是什么,这会造成一种情况就是Generator产生的图片已经足够清晰了,但是因为不匹配 c而得了低分,而Generator不知道得分低的原因是什么,依然以为是产生的图片不够清晰,那这样Generator就有可能朝着错误的方向迭代。不过,目前第一种模型还是被广泛应用的,其实事实上二者的差异在实际中也不是特别明显。



 

2. TripleGAN

     2.1 TripleGAN解决的问题

       TripleGAN是基于CGAN的改进,它主要想解决的问题是,在实际训练中,我们拥有的已配对的数据(c,x)往往是非常少量的,而人工标注配对数据(cx)又比较麻烦,于是我们可以增添一个classifier去学习如何给图片x标注配对条件c,这样就能形成比较好的训练数据。

     2.2 TripleGAN的模型架构

       在上述架构图中,x是图片,y是条件(也就是c),(xy)构成一个配对。从图中可以看出,TripleGAN由三个部分组成,第一个是Classifier,它负责学习并提供更多的配对信息给discriminator,主要是从生成配对、真实配对和仅有图片三种输入中学会提取出它们的配对信息,并将这个配对信息与图片整合成一个新的配对()传递给discriminator;而第二个部分discriminator就需要学会鉴别输入的配对是来自真实数据,还是generator,还是classifier,最终在discriminator的帮助下都会越来越接近;至于第三个部分generator,就与CGAN中的generator一模一样了,输入一个条件y和先验分布z,产生一个输出图片x和条件y的配对。

     2.3 TripleGAN的应用价值

       TripleGAN最大的应用价值就是不仅generator能够被提取出来,成为一个文字生成图片的模型,classifier也能被提取出来,成为一个图片标注文字的模型。

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Triple GAN是一种基于PyTorch开发的生成对抗网络(GAN)模型。GAN是一种由生成器和判别器组成的对抗式模型,它们通过对抗学习迭代过程中的相互竞争来生成逼真的数据样本。 Triple GAN在原始的GAN模型基础上进行了改进,引入了第三个组件称为评估器。评估器的目标是从真实数据和生成器生成的数据中区分出来。通过引入评估器,Triple GAN能够更好地监督生成器的学习过程,提高生成样本的质量。 在Triple GAN中,生成器负责从随机噪声中生成虚假的数据样本,判别器则负责将这些生成的样本与真实的样本区分开来。评估器的作用是用来评估生成样本的质量,给与合适的奖励或惩罚信号,帮助生成器更好地学习。通过三个组件的相互竞争学习,Triple GAN能够不断提升生成样本的质量和逼真程度。 PyTorch是一个开源的深度学习框架,它提供了丰富的工具和接口来支持神经网络的搭建和训练。Triple GAN的开发采用了PyTorch作为基础框架,可以利用PyTorch强大的计算和自动求导功能来实现GAN模型的训练和优化。 总结起来,Triple GAN是一种基于PyTorch开发的生成对抗网络模型,通过引入评估器来监督生成器的学习,提高生成样本的质量。PyTorch作为深度学习框架提供了强大的工具和接口支持,用于实现Triple GAN模型的训练和优化。 ### 回答2: "triple gan pytorch"是一个涉及到机器学习和深度学习的概念。PyTorch是一种流行的深度学习框架,而Triple GAN则是一种基于GAN(生成对抗网络)的深度学习模型。 Triple GAN旨在改进传统的生成对抗网络,来更好地生成高质量的图像。它使用三个生成器和三个判别器来构建网络结构。其中,生成器负责从随机噪声中生成图像,而判别器则用于判断生成器生成的图像是否真实。这种三个生成器和三个判别器的结构可以提供更多的信息,从而提升生成图像的质量和多样性。 Triple GAN在训练过程中使用了多个损失函数,例如对抗性损失、内容损失和辅助损失。通过这些损失函数的组合,Triple GAN可以更好地捕捉图像的内容、纹理和细节。 使用PyTorch作为实现工具,可以更加方便地搭建和训练Triple GAN模型。PyTorch是一个开源的深度学习框架,具有良好的灵活性和可扩展性。它提供了丰富的工具和函数,用于构建和训练深度学习模型,同时还提供了一套强大的自动求导机制,方便进行梯度计算和反向传播。 总结来说,“triple gan pytorch”是指使用PyTorch框架实现的Triple GAN模型。这个模型通过使用三个生成器和三个判别器来提升生成图像的质量和多样性。通过PyTorch框架可以更加便捷地实现和训练这个模型。 ### 回答3: "TripleGAN"是一种基于PyTorch平台的生成对抗网络(GAN)模型。GAN是一种深度学习模型,由生成器和判别器组成,可以用于生成逼真的数据样本。 TripleGAN是在传统的GAN架构上的一个扩展,旨在解决单一模式GAN生成多个模式的困难。它通过引入一个辅助分类器来实现生成多个模式的能力。 TripleGAN的生成器负责产生数据样本,判别器负责判断生成的样本与真实样本之间的区别。辅助分类器则用于分类生成的样本,使生成器能够生成多个模式的样本。通过对生成器、判别器和辅助分类器进行对抗性训练,TripleGAN能够提供更好的生成样本多样性和质量。 在PyTorch平台上,可以使用PyTorch的深度学习库来实现TripleGAN。首先定义生成器、判别器和辅助分类器的网络结构,并使用PyTorch的优化器和损失函数进行训练。可以利用GPU加速来提升训练效率。使用PyTorch的数据加载和预处理功能,可以将输入数据准备好,以便进行训练和评估。 总之,TripleGAN是基于PyTorch的一种生成对抗网络模型,通过引入辅助分类器来实现生成多个模式的能力。在实现过程中,我们可以利用PyTorch提供的丰富功能和库来构建和训练TripleGAN模型,并通过优化器和损失函数对模型进行优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值