每个数据科学家都应该知道的4个令人印象深刻的GAN库!
当前,GAN被认为是计算机视觉中最令人兴奋的研究领域之一。它处理图像的能力是无与伦比的,作为数据科学家,不进行探索将是一个错误。甚至像Yann LeCun这样的杰出人士也将GANs描述为“过去十年中
机器学习中最有趣的想法”。
GAN图书馆
当我第一次与GAN合作时,我使用PyTorch从零开始开发它,的确确实是一项繁琐的工作。当输出不令人满意并且您想尝试另一种架构时,这变得更加困难,因为现在您必须重写代码。但是幸运的是,在各个技术巨头中工作的研究人员已经开发了多个GAN库,以帮助您探索和开发基于GAN的应用程序。
在本文中,我们将看到您肯定应该了解的4个有趣的GAN库。另外,我将首先向您概述GAN
我建议您查看我们全面的计算机视觉计划,以开始该领域的学习。
目录
GAN的快速概述
GAN图书馆
TF-GAN
火炬干
模仿
IBM-GAN工具箱
GAN的快速概述
GAN由Ian Good Fellow于2014年推出,是一种先进的
深度学习方法。它是经过对抗训练的生成模型家族的成员。
生成建模是一种强大的方法,网络可以学习输入数据的分布并尝试根据相似的分布来生成新的数据点。如果我们看一下生成模型的例子,我们有自动编码器,玻尔兹曼机器,生成对抗网络,贝叶斯网络等。
GAN的架构
GAN图书馆:建筑图片来源
甘斯由两个
神经网络的发电机的?和鉴别器d。此外,这两个模型在训练期间涉及零和游戏。
生成器网络学习训练数据的分布。当我们提供随机噪声作为输入时,它会生成一些合成数据,试图模仿训练样本。
现在是鉴别器模型(D)。它根据数据分布为G生成的数据指定标签Real或Fake 。这意味着,新图像来自训练图像,或者它是一些人工生成的图像。
当案件d形象作为真实的还是假线索成功识别的增加,发电机的损失。类似地,当G成功构造出类似于真实图像的高质量图像并欺骗D时,它会增加鉴别器的损失。同样,生成器从该过程中学习,并在下一次迭代中生成更好,更逼真的图像。
主要可以认为是两人游戏的MIN-MAX游戏。随着时间的推移,这两个网络的性能都会提高。这两个网络都经过多次训练迭代。随着时间的流逝以及模型参数(如权重和偏差)的几次更新,它们达到了稳定状态,也称为纳什均衡。
什么是纳什均衡?
纳什均衡是系统的稳定状态,涉及不同参与者之间的相互作用,如果其他参与者的策略保持不变,则任何参与者都无法通过单方面改变策略获得收益。
最终,在这个零和游戏中,我们可以成功生成看起来与真实训练数据集相似的人造或伪造图像。
例-
让我们看看GAN的有用性。
例如,在锁定期间,您有机会浏览旧相册。在如此令人费解的时刻,这是重温记忆的好机会。但是由于这张专辑在您的橱柜中放置了多年,没有被触及,所以有些照片被损坏了,这让你很难过。而这恰恰是您决定使用GAN的时候。
下面的图像已在GAN的帮助下使用一种名为Image Inpainting的方法成功还原。
GAN图书馆原始影像与还原影像
图片来源:Bertalmío等,2000。
图像修复是通过利用可用的背景信息来重建缺失的部分来恢复损坏的图像的技术。此技术还用于从给定图像中删除不需要的对象。
这只是对GAN的快速回顾。如果您想了解更多信息,建议您阅读以下文章。
什么是生成模型和GAN?计算机视觉的魔力
GAN对每个机器学习爱好者来说都是最有趣的5个应用!
现在,我们将看到一些有趣的GAN库。
TF-GAN
Tensorflow GAN也称为TFGAN,是一个开源的轻量级python库。它是由Google AI研究人员开发的,用于轻松有效地实施GAN。
TF-GAN提供了完善的基础架构来训练和评估“生成对抗网络”,以及经过有效测试的损失函数和评估指标。该库包含用于实现模型的各种模块。它提供了简单的函数调用,用户可以将其应用于自己的数据,而无需从头开始编写代码。
与其他软件包(如NumPy和pandas)一样,它易于安装和使用,因为它提供了PyPi软件包。使用以下代码-
#安装库
pip安装tensorflow-gan
#导入库
导入tenorflow_gan作为tfgan
以下是使用TF-Gan-从MNIST数据集生成图像的代码
#设置输入。
图片= mnist_data_provider.provide_data(FLAGS .batch_size)
噪声= tf.random_normal([ FLAGS .batch_size,FLAGS .noise_dims])
#构建生成器和鉴别器。
gan_model = tfgan.gan_model(
generator_fn = mnist.unconditional_generator, #您定义
discriminator_fn = mnist.unconditional_discriminator, #您定义
real_data =图片,
generator_inputs =噪声)
#建立GAN损失。
gan_loss = tfgan.gan_loss(
gan_model,
generator_loss_fn = tfgan_losses.wasserstein_generator_loss,
discriminator_loss_fn = tfgan_losses.wasserstein_discriminator_loss)
#创建火车操作,计算梯度并将更新应用于权重。
train_ops = tfgan.gan_train_ops(
gan_model,
gan_loss,
generator_optimizer = tf.train.AdamOptimizer(gen_lr,0.5),
discriminator_optimizer = tf.train.AdamOptimizer(dis_lr,0.5))
#在轮训计划中运行火车操作。
tfgan.gan_train(
train_ops,
钩子= [tf.train.StopAtStepHook(num_steps = FLAGS .max_number_of_steps)],
logdir = FLAGS .train_log_dir)
我喜欢图书馆的什么
关于该库的重要一件事是TF-GAN当前与Tensorflow-2.0(即TensorFlow的最新版本)兼容。另外,您可以将其与其他框架一起有效地使用。
训练生成对抗模型是一项繁重的处理任务,过去通常需要花费数周的时间。TF-GAN支持Cloud TPU。因此,可以在几个小时内完成培训过程。要了解有关如何在TPU上使用TF-GAN的更多信息,请参见该库作者的本教程。
如果您需要比较多篇论文的结果,TF-GAN为您提供了标准指标,可帮助用户高效,轻松地比较不同的研究论文,而不会产生任何统计偏差。
以下是使用TF-GAN实施的一些项目-
自我注意生成对抗网络
无边无际:用于图像扩展的生成对抗网络
用于高保真自然图像合成的大规模GAN训练
为了进一步了解Google研究人员使用的这个令人兴奋的GAN库,请阅读官方文档。
火炬干
Torch-GAN是一个基于PyTorch的框架,用于编写用于开发GAN的简短易懂的代码。该软件包由各种对抗性网络以及实施它们所需的实用程序组成。
通常,GAN共享具有多个组件的标准设计,例如生成器模型,鉴别器模型,损失函数和评估指标。而Torch GAN通过简单的API模仿GAN的设计,并允许在需要时自定义组件。
火炬
资源
该GAN库通过高度灵活的培训器促进GAN组件之间的交互,该培训器自动采用用户定义的模型和损失。
使用pip安装库很简单。您只需要在下面使用以下命令即可完成。
pip3安装割炬
实施Torch-GAN模型
在设计的核心部分,我们有一个培训模块,负责灵活性和易用性。用户需要提供所需的规范,即生成器和鉴别器模型的体系结构以及相关的优化器。用户还需要提供损失函数和评估指标。
该库提供了自由选择规格的自由,这些规格可以从广泛的可用范围内选择,也可以从自己的定制变体中选择。在下图中,我们仅用10行代码就能看到DC-GAN的实现,这并不令人惊讶。
火炬GAN实施
资源
我喜欢这个GAN库吗?
它支持多种GAN架构。您为体系结构命名,您将找到相同的TorchGAN实现。例如Vanilla GAN,DCGAN,CycleGan,条件GAN,Generative Multi对抗网络等。
该框架的另一个重要特征是其可扩展性和灵活性。Torch-GAN是一个易于理解的软件包。我们可以通过内置或用户定义的功能有效地使用它。
而且,它通过Logger对象提供有效的性能可视化。它使用TensorBoard和Vizdom支持控制台日志记录以及性能可视化。
如果您想更深入地学习,请别忘了阅读TorchGAN的官方文档。
模仿
随着该领域研究的增加,我们可以看到GAN的几种实现。比较使用不同框架开发,在不同条件下训练并使用不同度量进行评估的多个实现是很困难的。对于研究人员来说,这样的比较是不可避免的任务。因此,这是模仿发展的主要动力
模仿
资源
Mimicry是用于GAN再现性的轻量级PyTorch库。它提供了训练和评估Gan模型所需的通用功能。这使研究人员可以专注于模型实现,而不必一次又一次地编写相同的样板代码。
该GAN库提供了各种GAN架构的标准实现,例如DCGAN,具有渐变罚则的Wasserstein GAN(WGAN-GP),自监督GAN(SSGAN)等。稍后,它提供了将多个GAN模型与相同的模型尺寸,在相似的条件下训练。
就像其他两个库一样,我们可以使用pip轻松安装Mimicry,并且可以使用了。
点安装模拟火炬
这是使用模仿的SNGAN的快速实现
进口 火炬
进口 torch.optim 作为 的Optim
进口 torch_mimicry 作为 MMC
从 torch_mimicry.nets 进口 sngan
#数据处理对象
device = 火炬。设备('CUDA:0' 如果 炬。CUDA 。is_available () 其他 “CPU” )
的数据集 = MMC 。数据集。load_dataset (根= ” ./datasets' , 名字= 'cifar10' )
的DataLoader = 炬。实用程序。数据。DataLoader (
数据集, batch_size = 64, shuffle = True , num_workers = 4 )
#定义模型和优化器
netG = sngan 。SNGANGenerator32 ()。到(设备)
netD = sngan 。SNGANDiscriminator32 ()。到(设备)
optD = 优化。亚当(NETD 。参数(), 2E-4 , 贝塔= (0.0 , 0.9 ))
optG = 的Optim 。亚当(netG 。参数(), 2E-4 , 贝塔= (0.0 , 0.9 ))
#开始训练
教练 = mmc 。培训。培训师(
netD = netD ,
netG = netG ,
optD = optD ,
optG = optG ,
n_dis = 5 ,
num_steps = 100000 ,
lr_decay = 'linear' ,
dataloader = dataloader ,
log_dir = './log/example' ,
device = device )
培训师。火车()
模仿的另一个重要功能是它为性能可视化提供Tensorboard支持。因此,您可以创建损失和概率曲线来监视训练。它可以显示随机生成的图像以检查多样性。
模仿是一项旨在帮助研究人员的有趣发展。我个人建议您阅读模仿文章。
IBM GAN工具包
到目前为止,我们已经看到了一些非常高效和最新的GAN库。还有更多的GAN库,例如Keras-GAN,PyTorch-GAN,PyGAN等。当我们仔细观察时,会发现这些GAN库之间有一些共同之处。它们是代码密集型的。如果您想使用它们中的任何一个,那么您必须精通-
GAN的知识和实现。
精通Python
如何使用特定框架
对于软件程序员而言,要了解所有内容有点困难。为了解决这个问题,我们在这里提供了一个用户友好的GANs工具-IBM GAN-Toolkit。
GAN工具包提供了实现GAN模型的高度灵活的,无代码变体的形式。此外,它为实现GAN模型提供了高层次的抽象。在这里,用户只需要使用配置文件或命令行参数提供模型详细信息。然后,框架将处理其他所有内容。我个人觉得这很有趣。
以下步骤将帮助您进行安装-
首先,我们克隆代码-
$ git clone
https://github.com/IBM/gan-toolkit
$ cd gan工具包
然后安装所有要求-
$ pip install -r requirements.txt
现在可以使用了。最后,要训练网络,我们必须提供JSON格式的配置文件,如下所示
{
“ generator”:{
“ choice”:“ gan”
} ,
“ discriminator”:{
“ choice”:“ gan”
} ,
“ data_path”:“ datasets / dataset1.p” ,
“ metric_evaluate”:“ MMD”
}
$ python main.py --config my_gan.json
该工具包实现了多种GAN体系结构,例如香草GAN,DC-GAN,Conditional-GAN等。
GAN工具包的优势
它促进了采用无代码方式实现最先进的计算机视觉技术。只需一个简单的JSON文件即可定义GAN架构。框架将负责处理培训代码,因此无需编写培训代码。
它提供了多库支持,例如PyTorch,Keras和TensorFlow。
此外,在GAN工具包中,我们可以自由地混合和匹配来自不同模型的组件。例如,您可以使用DC-GAN的生成器模型,C-GAN的鉴别器和vanilla gan的训练过程。
现在,只需阅读文档并以您自己的方式使用GAN。
题库