谷歌开源 TFGAN:轻量级生成对抗网络工具库


开源最前线(ID:OpenSourceTop) 猿妹 编译

编译自:https://research.googleblog.com/2017/12/tfgan-lightweight-library-for.html

近日谷歌开源了 TFGAN,一个实现轻松训练和评估 GAN 的轻量级库。


轻量级库 TFGAN


授权协议:Apache

操作系统:C/C++ Python 

开发厂商:谷歌

Github:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/gan


TFGAN 简介


培训一个神经网络通常需要定义一个损失函数,告诉网络与目标的距离有多远。例如,图像分类网络经常会赋予一个损失函数,对它们给出错误判定进行分类;比如网络将一张狗的图片误标为猫,这将会造成很大的失误。然而,并不是所有的问题都具有易于定义的损失函数,尤其是涉及人类感知的问题,如图像压缩或文本转语音系统。


生成对抗网络(GAN),这是一种机器学习技术,可以改善应用中的许多问题,包括从文本生成图像,超分辨率和帮助机器人学习等操作提供解决方案。GAN 还引入了新的理论,为软件工程带来新的挑战,并且难以跟上 GAN 研究的步伐。


为使开发者更轻松地使用 GAN 进行实验,谷歌已经开源 TFGAN,这是一个实现轻松训练和评估 GAN 的轻量级库。它提供了训练 GAN 的基础组件,提供经过完整测试的损失函数和评估指标,并提供了易于使用的示例,这些示例突出了 TFGAN 的表达性和灵活性。同时还发布了一个教程,其中包含一个高级 API,帮助人们快速上手,可以快速获取有关数据的模型。


TFGAN 教程:https://github.com/tensorflow/models/blob/master/research/gan/tutorial.ipynb



TFGAN 组成部分


TFGAN 由以下几个独立存在的部分组成:


核心:提供训练 GAN 所需的主要基础设施。训练分四个阶段进行,每个阶段都可以通过自定义代码或使用 TFGAN 库调用来完成。


功能:很多常见的 GAN 操作和归一化技术可供使用,包括实例归一化和条件化(conditioning)。


损失:允许轻松利用已实现且经过完整测试的损失和惩罚机制进行实验,如 Wasserstein 损失、梯度惩罚、互信息惩罚等。


评估:使用 Inception Score 或 Frechet Distance 与预训练的 Inception 网络评估无条件生成模型。你还可以使用自己的预训练分类器获得更加具体的结果,或使用其他方法对条件生成模型进行评估。


示例和教程:从示例中可以学习如何使用 TFGAN 让 GAN 训练变得更简单,你也可以参考更复杂的示例来启动自己的项目。这些内容包括无条件和条件 GAN、InfoGAN、现有网络的对抗损失,以及图像到图像翻译。



上图显示图像压缩的对抗性损失的影响。第一行显示来自 ImageNet 数据集的图像补丁。中间一行显示了通过传统损失训练的图像压缩神经网络对图像进行压缩和解压的结果。最下面一行显示了来自传统损失和对抗性损失的网络的结果。GAN损失函数生成的图像更清晰细致,即使它们看起来不像原始图像。


TFGAN 使用方式


TFGAN 以几个重要的方式支持实验。它提供了简单的函数调用,涵盖了大部分的 GAN 用例,你可以通过几行代码就能在你的数据上运行模型,为覆盖更过 GAN 结构设计,它是以模块化的方式构建并且相互独立,你可以使用任何你想要的模块 - 丢失,评估,功能,培训等。


TFGAN 的轻量级设计也意味着您可以将其与其他框架一起使用,或使用原生 TensorFlow 代码。使用 TFGAN 编写的 GAN 模型很轻松获取未来的基础设施的改进,你也可以从大量已经实现的损失和功能中进行选择,而无需重新编写自己的模型。最后,代码经过了完整的测试,所以不必担心使用 GAN 库会经常出现的数字或统计错误。



大多数神经文本到语音(TTS)系统产生过平滑的频谱图。当应用于Tacotron TTS系统时,GAN可以重新创建一些逼真的纹理,从而减少最终音频中的伪影。


当你使用 TFGAN 时,使用的基础架构将与 Google 研究人员相同,你也可以在 GitHub 上做出自己的贡献,谷歌希望此举可以促进 ML 研究人员和用户之间的代码共享

推荐↓↓↓
开源最前线
上一篇:国内首套开源持续集成(CI) 解决方案 flow.ci 开源啦 下一篇:AMD 开源基于 Mesa 的 Vulkan Linux 驱动