
本书通过多个不同的生成对抗网络(GAN)架构的实现来帮助读者更好地理解生成对抗网络背后的原理及其构建方式。书中还提供了大量易于理解并可以直接使用的GAN代码及其部署方式和数据集,以帮助读者更快地上手解决工作中所面临的问题并积极应对相关挑战。本书适合数据科学家、算法工程师、数据挖掘工程师以及机器学习领域相关的从业人员用来学习使用全新的深度学习技术解决工作中的问题,也适合机器学习和深度学习的爱好者、初学者用来体验深度学习的魅力。
译者序 生成对抗网络(GAN)是现在深度学习领域最为火热的一个分支,在这个领域里每天都会有新的内容出现。和传统的监督式机器学习不同,生成对抗网络创造性地结合了监督式机器学习和无监督式机器学习的方法,自动从原数据中学习特征和分布,并生成令人惊叹的结果。学习画家的创作风格进行绘画,从2D图片生成3D模型,对图片进行风格转换……通过生成对抗网络,我们能够完成这类之前被认为只有人类才能完成的任务,机器学习第一次具有了创造性。 然而生成对抗网络架构本身十分复杂,调优也很困难,并且存在多个变种,通常很难找到能够快速上手的代码。这些门槛都阻挡在生成对抗网络的爱好者和相关从业人员面前。本书通过多个生成对抗网络架构的实现来帮助读者更好地理解生成对抗网络背后的原理及其使用方法。书中提供了大量易于上手的代码片段,可以帮助读者快速搭建起自己的生成对抗网络模型,并在工作中进行应用。本书的作者Josh Kalin在机器学习领域有着多年的工作经验,相信他的宝贵经验能够给读者带来不少收获。 希望生成对抗网络能够成为读者工作中最重要的“武器”! 序言 开发生成对抗网络(Generative Adversarial Network,GAN)是一项十分复杂的任务,通常也很难找到很容易就能够理解的相关代码。本书将通过多个不同的GAN实现样例,包括CycleGAN、SimGAN、DCGAN以及使用到GAN的模仿学习来帮助你了解GAN。本书的各章采用了统一的编排结构,使用Python和Keras,帮助你以一种易于理解的方式由浅入深地来了解GAN的架构。 本书覆盖了多个不同类型的GAN架构来帮助你更好地理解模型的工作原理。你将会学习如何执行诸如生成超解析图像、文字到图像的转换,以及生成带字幕视频等任务的关键操作步骤。此外,你还会用到DCGAN和deepGAN。为了帮助你在复杂的工作场景下更好地应用这些技术,本书将会使用多个真实世界中的数据集作为示例。 在本书的最后,通过这些易于理解的代码方案,你应该可以应对工作中和GAN模型相关的问题和挑战,并能快速地上手实现自己的GAN模型。 本书的目标读者 本书的目标读者是数据科学家、机器学习(Machine Learning,ML)开发者,以及需要一个处理GAN领域问题和任务快速索引的深度学习从业者。熟悉机器领域中的相关概念以及工作中使用Python的经验会帮助你更好地理解本书内容。 本书内容 第1章介绍GAN的架构并介绍每一种实现。 第2章处理与数据相关的基础工作、数据强化,以及对有大量离群数据的数据集进行平衡。 第3章介绍如何通过Keras、TensorFlow和Docker将我们已经讨论过的理论进行具体应用,并制作一个简单的GAN模型。 第4章介绍构建深度卷积生成对抗网络(Deep Convolutional Generative Adversarial Network,DCGAN)所需的构建块。 第5章介绍Pix2Pix的工作流程及其实现。 第6章介绍CycleGAN是什么,如何解析CycleGAN数据集,以及如何实现CycleGAN。 第7章介绍SimGAN的工作原理及其实现。 第8章介绍3D模型以及使用图片实现3D模型的技术。 预备知识 熟悉Python的相关基础知识是阅读本书的必备条件,了解机器学习的相关概念会帮助你更好地理解本书内容。
目录 序言 1 第1章 什么是生成对抗网络 7 简介 7 生成模型和判别模型 8 工作流程 8 工作原理 9 神经网络的“爱情故事” 10 工作流程 10 工作原理 11 深度神经网络 11 工作流程 11 工作原理 12 架构基础 13 工作流程 13 工作原理 14 基本构建块——生成器 15 工作流程 15 工作原理 15 基本构建块——判别器 16 工作流程 16 工作原理 17 基本构建块——损失函数 18 工作流程 18 工作原理 18 训练 20 工作流程 20 工作原理 20 以不同方式组织GAN 20 工作流程 21 工作原理 21 GAN的输出是什么 22 工作流程 22 工作原理 22 理解GAN架构的优点 24 工作流程 24 工作原理 25 练习 25 第2章 数据优先、环境和数据准备 27 简介 27 数据是否如此重要 27 准备工作 28 工作流程 28 工作原理 29 更多内容 29 搭建开发环境 29 准备工作 30 工作流程 30 更多内容 35 数据类型 35 准备工作 36 工作流程 36 工作原理 38 更多内容 40 数据预处理 41 准备工作 41 工作流程 41 工作原理 42 更多内容 45 异常数据 46 准备工作 46 工作流程 46 更多内容 49 平衡数据 49 准备工作 49 工作流程 49 更多内容 53 数据强化 54 准备工作 54 工作流程 55 工作原理 56 更多内容 57 练习 58 第3章 用100行代码实现第一个GAN 59 简介 59 从理论到实践——一个简单例子 59 准备工作 60 工作流程 60 参考内容 62 使用Keras和TensorFlow构建神经网络 62 准备工作 63 工作流程 63 参考内容 66 解释你的第一个GAN组件——判别器 66 准备工作 67 工作流程 67 解释你的第二个GAN组件——生成器 71 准备工作 71 工作流程 71 组合GAN组件 75 准备工作 76 工作流程 76 训练你的第一个GAN 78 准备工作 78 工作流程 78 训练模型并理解GAN的输出 84 准备工作 84 工作流程 84 工作原理 86 练习 87 第4章 使用DCGAN创造新的室外结构 89 简介 89 什么是DCGAN?一个简单的伪代码样例 89 准备工作 90 工作流程 90 参考内容 93 工具——是否需要特殊的工具 93 准备工作 93 工作流程 94 更多内容 97 参考内容 97 解析数据——数据是否独特 97 准备工作 97 工作流程 98 代码实现——生成器 100 准备工作 100 工作流程 100 参考内容 103 代码实现——判别器 103 准备工作 104 工作流程 104 参考内容 107 训练 107 准备工作 107 工作流程 107 评估——如何判断它是否有效 114 准备工作 115 工作原理 115 调整参数优化性能 116 工作流程 116 练习 118 第5章 Pix2Pix图像转换 119 简介 119 使用伪代码介绍Pix2Pix 119 准备工作 120 工作流程 120 数据集解析 122 准备工作 122 工作流程 123 代码实现——生成器 124 准备工作 124 工作流程 125 代码实现——GAN 127 准备工作 127 工作流程 128 代码实现——判别器 129 准备工作 129 工作流程 129 训练 131 准备工作 131 工作流程 132 练习 139 第6章 使用CycleGAN进行图像风格转换 141 简介 141 伪代码——工作原理 141 准备工作 142 工作流程 142 解析CycleGAN数据集 144 准备工作 144 工作流程 145 代码实现——生成器 147 准备工作 147 工作流程 148 代码实现——判别器 150 准备工作 150 工作流程 151 代码实现——GAN 153 准备工作 153 工作流程 154 训练 155 准备工作 155 工作流程 156 练习 162 第7章 利用SimGAN使用模拟图像制作具有真实感的眼球图片 163 简介 163 SimGAN架构的工作原理 163 准备工作 164 工作流程 164 伪代码——工作原理 165 准备工作 165 工作流程 165 如何使用训练数据 166 准备工作 166 工作流程 166 代码实现——损失函数 169 准备工作 169 工作流程 169 代码实现——生成器 170 准备工作 170 工作流程 171 代码实现——判别器 173 准备工作 173 工作流程 174 代码实现——GAN 176 准备工作 176 工作流程 177 训练SimGAN 178 准备工作 178 工作流程 179 练习 183 第8章 使用GAN从图像生成3D模型 185 简介 185 使用GAN生成3D模型 185 准备工作 186 工作流程 186 环境准备 188 准备工作 189 工作流程 189 对2D数据进行编码并匹配3D对象 190 准备工作 191 工作流程 191 代码实现——生成器 193 准备工作 193 工作流程 194 代码实现——判别器 196 准备工作 196 工作流程 197 代码实现——GAN 199 准备工作 199 工作流程 199 训练模型 200 准备工作 201 工作流程 201 练习 208