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

生成对抗网络(GAN)自被 Ian Goodfellow 等人提出以来,以其优异的性能获得人们的广泛关注,并应用于一系列任务中。然而,对于广大工程人员而言,应用新技术仍存在挑战,谷歌最近开源的 TFGAN 库解决了这个问题。

项目链接:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/gan

使用

import tensorflow as tf
tfgan = tf.contrib.gan

训练神经网络通常需要定义一个损失函数,告诉网络自己距离目标还有多远。例如:图像分类网络通常会给出一个损失函数,对错误的分类做出惩罚判定;如果网络错将狗的图片识别为猫,则获得高损失值。然而,并非所有问题都可以简单地用损失函数来标量,特别是当问题涉及到人类感知上时,如图像压缩或文本转语音系统等。生成对抗网络(GAN)的出现解决了其中的很多问题,它是一种先进的机器学习方法,已被广泛应用于从文本生成图像、超分辨率和让机器人学习抓取物体等任务中。但 GAN 的出现也引入了新的理论,为软件工程带来了新的挑战,我们很难跟上 GAN 研究的快速步伐。

GAN 生成文字的过程,它开始只能输出随机的噪声,最终学会了生成 MNIST 数字。

为使开发者更轻松地使用 GAN 进行实验,谷歌最近开源了 TFGAN,一个实现轻松训练和评估 GAN 的轻量级库。它为开发者轻松训练 GAN 提供了基础条件,提供经过完整测试的损失函数和评估指标,同时提供易于使用的范例,这些范例展示了 TFGAN 的表达能力和灵活性。谷歌还发布了一个包含高级 API 的教程,帮助人们快速上手,使用自己的数据训练模型。

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


上图展示了对抗损失在图像压缩中的影响。最顶端一行图片来自 ImageNet 数据集。中间一行展示了用传统损失训练的图像压缩神经网络对图像进行压缩和解压缩的结果。底行图片展示了使用传统损失和对抗性损失训练的网络进行图像压缩的结果。使用 GAN 损失函数的图像更加清晰,包含更多细节,即使它可能会与原图像的差距更大。

TFGAN 以几种简单的方式支持实验。它提供简单的函数调用,涵盖大部分 GAN 用例,让你仅用几行代码就可以用自己的数据运行模型。同时,它是以模块化方式构建的,可以覆盖更多的 GAN 结构设计。你可以自由选用自己想要的模块——损失、评估、特征、训练等等,所有这一切都是互相独立的。TFGAN 的轻量级设计意味着你既可以在原生 TensorFlow 代码上使用它,也可以与其他框架一同使用。使用 TFGAN 编写的 GAN 模型可以轻松获取未来基础设施改善带来的便利。在这里,你可以从大量已实现的损失和功能中进行选择,无需重新编写自己的模型。最后,这些代码都经过了完整测试,你不必担心使用 GAN 库经常出现的数值或统计错误。

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

  • 核心:提供训练 GAN 所需的主要基础设施。训练分四个阶段进行,每个阶段都可以通过自定义代码或使用 TFGAN 库调用来完成。
  • 功能:很多常见的 GAN 操作和归一化技术可供使用,包括实例归一化和条件化(conditioning)。
  • 损失:允许轻松利用已实现且经过完整测试的损失和惩罚机制进行实验,如 Wasserstein 损失、梯度惩罚、互信息惩罚等。
  • 评估:使用 Inception Score 或 Frechet Distance 与预训练的 Inception 网络评估无条件生成模型。你还可以使用自己的预训练分类器获得更加具体的结果,或使用其他方法对条件生成模型进行评估。
  • 示例和教程:从示例中可以学习如何使用 TFGAN 让 GAN 训练变得更简单,你也可以参考更复杂的示例来启动自己的项目。这些内容包括无条件和条件 GAN、InfoGAN、现有网络的对抗损失,以及图像到图像翻译。


大多数神经文本转语音系统(TTS)都会生成过于平滑的频谱。当应用 Tacotron TTS 系统时,GAN 可以生成一些更加接近真实纹理的频谱,从而减少结果音频中的人工痕迹。

使用 TFGAN 还意味着你正在使用和大量谷歌研究者相同的基础工具,这样,你就可以从谷歌员工开发的前沿技术中受益。与此同时,所有人也都可以在 GitHub 上做出自己的贡献,谷歌希望分享代码的精神可以促进整个机器学习社区的发展。

原文地址:https://research.googleblog.com/2017/12/tfgan-lightweight-library-for.html

工程谷歌生成对抗网络工程开源开源库TFGAN
1
返回顶部