# 前言 **生成对抗网络**(**GAN**)具有建立下一代模型的潜力,因为它们可以模拟任何数据分布。 由于它是**机器学习**(**ML**)增长最快的领域之一,因此正在该领域进行重大研究和开发工作。 当您在 GAN 域中构建八个端到端项目时,本书将测试训练神经网络的无监督技术。 “生成对抗网络项目”首先介绍了用于构建高效项目的概念,工具和库。 您还将在本书的不同项目中使用各种数据集。 在每一章中,复杂性和操作的水平都会提高,从而帮助您掌握 GAN 域。 您将介绍 3D-GAN,DCGAN,StackGAN 和 CycleGAN 等流行的方法,并且您将通过它们的实际实现来理解生成模型的架构和功能。 到本书结尾,您将准备在工作中或项目中建立,训练和优化自己的端到端 GAN 模型。 # 这本书是给谁的 如果您是数据科学家,ML 开发人员,深度学习从业人员或 AI 爱好者,并且正在寻找项目指南以测试您在构建现实 GAN 模型中的知识和专长,那么该书适合您。 # 本书涵盖的内容 第 1 章,“生成对抗网络”的介绍始于 GAN 的概念。 读者将学习什么是判别器,什么是生成器以及什么是博弈论。 接下来的几个主题将涵盖生成器的结构,判别器的结构,生成器和判别器的目标函数,GAN 的训练算法,Kullback-Leibler 和 Jensen-Shannon 散度,GAN 的评估矩阵,GAN 的不同问题, GAN 中梯度消失和爆炸,纳什均衡,批量标准化和正则化的问题。 第 2 章,“3D-GAN – 使用 GAN 生成形状”首先简要介绍 3D-GAN 和各种架构细节。 在本章中,我们将训练 3D-GAN 生成真实世界的 3D 形状。 我们编写代码来收集 3D Shapenet 数据集,对其进行清理并使其经过训练。 然后,我们将使用 Keras 深度学习库为 3D-GAN 编写代码。 第 3 章,“使用条件 GAN 进行人脸老化”,向读者介绍了条件生成对抗网络(cGAN)和 Age-cGAN。 我们将学习数据准备中的不同步骤,例如下载,清理和格式化数据。 我们将使用 IMDb Wiki 图像数据集。 我们将使用 Keras 框架为 Age-cGAN 编写代码。 接下来,我们将在 IMDb Wiki 图像数据集上训练网络。 最后,我们将使用年龄作为条件参数的训练模型来生成图像,而训练后的模型将针对不同年龄的人的脸部生成图像。 第 4 章,“使用 DCGAN 生成动漫角色”从 DCGAN 的介绍开始。 我们将学习数据准备中的不同步骤,例如收集动漫角色数据集,清理数据集并准备进行训练。 我们将在 Jupyter 笔记本中介绍 DCGAN 的 Keras 实现。 接下来,我们将学习训练 DCGAN 的不同方法,并为其选择不同的超参数。 最后,我们将使用训练有素的模型生成动漫角色。 另外,我们将讨论 DCGAN 的实际应用。 第 5 章,“使用 SRGAN 生成逼真的图像”解释了如何训练 SRGAN 生成逼真的图像。 训练过程的第一步是收集数据集,然后清理它并格式化以进行训练。 读者将学习从何处收集数据集,如何清理数据集以及如何将其转换为可用于训练的格式。 第 6 章, “StackGAN – 逼真的文本到图像合成”,本章将首先介绍 StackGAN。 数据收集和数据准备是重要的步骤,我们将学习收集数据集,清理数据集并格式化以进行训练的过程。 我们将在 Jupyter 笔记本内的 Keras 中为 StackGAN 编写代码。 接下来,我们将在 CUB 数据集上训练网络。 最后,在完成模型训练后,我们将从文本描述中生成逼真的图像。 我们将讨论 StackGAN 的不同行业应用以及如何在生产中部署它们。 第 7 章, “CycleGAN – 将绘画变成照片”,介绍了如何训练 CycleGAN 来将画作变成照片。 我们将首先介绍 CycleGAN,并研究它们的不同应用。 我们将介绍不同的数据收集,数据清理和数据格式化技术。 接下来,我们将编写 CycleGAN 的 Keras 实现,并在 Jupyter 笔记本中获得有关代码的详细说明。 我们将在准备好的数据集上训练 CycleGAN。 我们将测试我们训练有素的模型,以将绘画转换为照片。 最后,我们看一下 CycleGAN 的实际应用。 第 8 章,“条件 GAN – 使用条件对抗网络进行图像到图像的翻译”,介绍了如何训练条件 GAN 进行图像到图像的翻译。 我们将首先介绍条件 GAN 和不同的数据准备技术,例如数据收集,数据清理和数据格式化。 接下来,我们将在 Jupyter 笔记本的 Keras 中编写条件 GAN 的代码。 接下来,我们学习如何在已经准备好的数据集上训练条件 GAN。 我们将探索不同的超参数进行训练。 最后,我们将测试条件 GAN,并讨论实际应用中图像到图像转换的不同用例。 第 9 章,“预测 GAN 的未来”,是最后一章。 在介绍了 GAN 的基础知识并完成了六个项目之后,本章将使读者了解 GAN 的未来。 在这里,我们将研究在过去的 3-4 年中,GAN 的采用取得了惊人的成就,以及该行业对它的接受程度。 我还将讨论我对 GAN 未来的个人看法。 # 充分利用这本书 熟悉深度学习和 Keras,并且需要一些先验知识 TensorFlow。 使用 Python3 进行编码的经验会很有用。 # 下载示例代码文件 您可以从 [www.packt.com](http://www.packt.com) 的帐户中下载本书的示例代码文件。 如果您在其他地方购买了此书,则可以访问 [www.packt.com/support](http://www.packt.com/support) 并注册以将文件直接通过电子邮件发送给您。 您可以按照以下步骤下载代码文件: 1. 登录或注册 [www.packt.com](http://www.packt.com) 。 2. 选择支持标签。 3. 单击代码下载&勘误表。 4. 在搜索框中输入书籍的名称,然后按照屏幕上的说明进行操作。 下载文件后,请确保使用以下最新版本解压缩或解压缩文件夹: * Windows 的 WinRAR/7-Zip * Mac 的 Zipeg/iZip/UnRarX * Linux 的 7-Zip/PeaZip 本书的代码包也托管在 [GitHub](https://github.com/PacktPublishing/Generative-Adversarial-Networks-Projects) 上。 如果代码有更新,它将在现有的 GitHub 存储库中进行更新。 在[这个页面](https://github.com/PacktPublishing/)中,我们还提供了丰富的图书和视频目录中的其他代码包。 去看一下! # 使用约定 本书中使用了许多文本约定。 `CodeInText`:表示文本中的词,数据库表名称,文件夹名称,文件名,文件扩展名,路径名,伪 URL,用户输入和 Twitter 句柄。 这里是一个示例:“ 使用 `scipy` 中的 `loadmat()` 函数来检索 `voxels`。” 代码块设置如下: ```py import scipy.io as io voxels = io.loadmat("path to .mat file")['instance'] ``` 任何命令行输入或输出的编写方式如下: ```py pip install -r requirements.txt ``` **粗体**:表示您在屏幕上看到的新术语,重要单词或顺序。 Warnings or important notes appear like this.Tips and tricks appear like this.