TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库

Posted TensorFlow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库相关的知识,希望对你有一定的参考价值。

文 /  Google Research

用于机器学习的软件库往往对研究成功至关重要,因此软件库的更新速率必须能够跟上机器学习研究发展的脚步。


2017 年,我们推出了用于训练和评估 生成对抗网络 (Generative Adversarial Networks, GAN) 的轻量级库 TF-GAN。自那时起,TF-GAN 便在大量极具影响力的论文和项目中被广泛应用。

注:具影响力的论文

https://github.com/tensorflow/gan#who-uses-tf-gan


今天,我们推出 TF-GAN 的新版本。此版本拥有诸多升级和新功能:

Cloud TPU 支持:您现在可以使用 TF-GAN 在 Google 的 Cloud TPU 上训练 GAN。张量处理单元 (TPU) 是 Google 定制开发的 专用集成电路 (application-specific integrated circuits, ASIC),用于加速机器学习工作负载。以往在其他硬件平台上需花费数周时间训练的模型,在 TPU 上仅需数小时即可完成。我们将在下文中详细介绍一个开源示例,该示例演示如何在 TPU 上通过 ImageNet 训练图像生成 GAN。此外,您还可以在 Colab 的 TPU 教程中免费运行 TF-GAN。


GAN 自学课程:免费的学习资源将有助于机器学习的发展与传播。为此,我们以 Google 内部使用多年的 GAN 课程为基础,发布了一套 GAN 自学课程。您可以通过观看视频、阅读文字介绍、跟随练习,并运行示例代码,这些都将在 机器学习 精通之路上助您一臂之力。


GAN 标准指标:有时学术论文会“发明一个指标”,然后用其来衡量结果。为方便比较论文结果,TF-GAN 简化了指标的使用。有时除了能够纠正阻碍标准开源实现数值的精度和统计偏差外,TF-GAN 指标在计算上也非常高效,并且其在语法上易于使用。


示例:GAN 研究的发展速度异常迅猛。虽然 TF-GAN 并不打算继续保留所有 GAN 模型上的工作示例,但我们还是添加了一些相关的内容,其中包括在 TPU 上训练的Self-Attention GAN。


PyPi 包:现在您可使用“pip install tensorflow-gan”安装 TF-GAN,并将其与“import tensorflow_gan as tfgan”搭配使用。简单易上手,对不对~


Colaboratory 教程:我们已完成改进,教程现在可以与 Google 的免费 GPU 和 TPU 搭配使用。


GitHub 代码库:TF-GAN 现在拥有自己的代码库。这样一来,系统可以更轻松地跟踪更改,并为开源贡献者提供相应的权限。


TensorFlow 2.0:TF-GAN 目前兼容 TF 2.0,但我们仍在不断完善,以使其兼容 Keras。您可以在 tensorflow.org/beta 中发现一些不使用 TF-GAN 的 GAN Keras 示例,包括 DCGANPix2PixCycleGAN



使用 TF-GAN 的项目:


Cloud TPU 上的 Self-Attention GAN

Self-Attention GAN 使用 Inception Score 和 Frechet Inception Distance 两大指标,已在图像生成方面取得目前最好的成果(SOTA)。我们将此模型的两个版本开源,让其中一个版本在 Cloud TPU 上以开源方式运行。TPU 与 GPU 的版本性能相同,但训练速度提高了 12 倍。

注:Self-Attention GAN  链接

https://arxiv.org/abs/1805.08318

Inception Score 链接

https://github.com/tensorflow/gan/blob/master/tensorflow_gan/python/eval/classifier_metrics.py#L707

Frechet Inception Distance 链接

https://github.com/tensorflow/gan/blob/master/tensorflow_gan/python/eval/classifier_metrics.py#L1140


TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库
TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库
TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库

左图:真实图像中图:生成图像 (GPU) 右图:生成图像 (TPU)

TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库
TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库

左图:将  Frechet Inception Distance  Inception Score 用作训练步骤的函数。右图:将  Frechet Inception Distance 和 Inception Score 用作训练时间的函数


图像扩展

业内对图像修复(即以周围环境为基础填充图像的缺失部分)的研究已经非常充分,但对与之相关的图像扩展领域却研究甚少。图像扩展要求算法以合理且一致的方式将图像扩展到其边界之外。这在虚拟现实环境中非常有用,此类环境经常需要利用图像扩展模拟不同的相机特性。此外,全景拼接等计算摄影应用也需要借助此技术将不同的图像平滑地缝合到一起。Google 研究工程师最近开发了一个新算法,并使用 TPU 对其加以训练。与以往方法相比,该算法在扩展图像时降低了失真现象的出现。
注:新算法 链接

http://arxiv.org/abs/1908.07007

TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库

我们用无人机拍摄了美丽的 Charles River,并使用 Uncrop 技术(2019 ICCV 中将提到)来扩大视野

TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库

图像扩展的部分示例:右列为采用 TF-GAN 的新方法。与 DeepFill 和 PConv 这两种最先进的图像修复方法相比,此方法生成的对象形状更优(第一/第二行),纹理质量也很出色(第二/第三行)。输入图像已扩展至遮挡区域(左列灰色部分所示)。


BigGAN

DeepMind 研究团队结合架构更改、更大的网络和更大的批处理以及 Google TPU,改进了论文中最先进的图像生成技术。该团队利用 TF-GAN 的评估模块对指标进行标准化处理,并且能够在任何图像尺寸上展现其质量的提升。如需使用经过预训练的 BigGAN 生成器,请访问 TF Hub

注:论文 链接

https://arxiv.org/abs/1809.11096

TF Hub 链接

https://tfhub.dev/s?publisher=deepmind&q=biggan


TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库
类条件示例出自论文《针对高保真自然图像合成的大规模 GAN 训练》 (Large Scale GAN Training for High Fidelity Natural Image Synthesis)


GANSynth

研究人员使用 TF-GAN 创建了可生成音符的 GAN 神经网络 GANSynth。与之前的研究相比,这些音符更具现实意义。借助 GAN 的潜在空间 (latent space),GANSynth 可以在生成相同音符的同时,在其他属性(例如乐器)间平顺地插入音符。

注:GANSynth 链接

https://magenta.tensorflow.org/gansynth


Samples

音色一致 | 插入音符

巴赫的《G大调第一号无伴奏大提琴组曲》(Prelude Suite №1 in G major)  MIDI(来自 GANSynth)。

真实数据 | GANSynth | WaveNet | WaveGAN 

注:Samples 链接

https://medium.com/tensorflow/introducing-tf-gan-a-lightweight-gan-library-for-tensorflow-2-0-36d767e1abae



使用 GAN 将显微镜图像归一化

对实验室培养的细胞开展科学实验通常需耗时数周。在如此长的时间内,实验室环境可能会发生意外变化。这将会导致每周基于显微镜的细胞图像变化巨大,即使观察的细胞相同,也会对日后的分析造成不利影响。Google 科学家使用 TF-GAN 创建了“均衡器 (Equalizer)”,旨在减少细胞图像的多余变化,同时保留相关属性。

如图所示,应用于某个细胞切片图像的均衡器输出9 周图像演变实验的每周图像。一些切片的属性有所变化(例如平均背景色),但“图像中的细胞数量”等属性未发生变化。


致谢

感谢 Joel Shor 和 Yoel Drori、Aaron Sarna(Google Research)、David Westbrook 和 Paige Bailey(Google)。



如果您想详细了解 TF - GAN 的相关内容,请参阅以下文档。这些文档深入探讨了这篇文章中提及的许多主题:

  • Cloud TPU

    (https://cloud.google.com/tpu/docs/tpus)

  • 开源示例

    (https://github.com/tensorflow/gan/tree/master/tensorflow_gan/examples/self_attention_estimator)

  •  Colab 的 TPU 教程

    (https://colab.research.google.com/github/tensorflow/gan/blob/master/tensorflow_gan/examples/colab_notebooks/tfgan_on_tpus.ipynb)

  • GAN 自学课程 

    (https://developers.google.com/machine-learning/gan/)

  • GAN 标准指标 

    (https://github.com/tensorflow/gan/tree/master/tensorflow_gan/python/eval)

  • 示例 链接

    (https://github.com/tensorflow/gan/tree/master/tensorflow_gan/examples)

  • Colab 教程

    (https://github.com/tensorflow/gan/blob/master/tensorflow_gan/examples/colab_notebooks/tfgan_tutorial.ipynb)

  • PyPi 包

    (https://pypi.org/project/tensorflow-gan/)

  • GitHub 代码库(https://github.com/tensorflow/gan/blob/master/tensorflow_gan/examples/colab_notebooks/tfgan_tutorial.ipynb)

  • DCGAN

    (https://www.tensorflow.org/beta/tutorials/generative/dcgan)

  • Pix2Pix

    (https://www.tensorflow.org/beta/tutorials/generative/pix2pix)

  • CycleGAN

    (https://www.tensorflow.org/beta/tutorials/generative/cyclegan)




以上是关于TF - GAN入门:TensorFlow 2.0 的轻量级 GAN 库的主要内容,如果未能解决你的问题,请参考以下文章

无法理解 tensorflow 文档中使用的 GAN 模型的损失函数

研究生官方推荐!用TensorFlow 2.0做深度学习入门教程 | 资源

如何在 Tensorflow-2.0 中绘制 tf.keras 模型?

TensorFlow 没有使用 GPU

TensorFlow 2.0 语法变更

建议在 tensorflow 2.0 中调试 `tf.data.Dataset` 操作