
本书是一本使用深度学习生成图像和视频的实用指南。书中深入浅出地介绍了基于TensorFlow生成图像的基本原理。本书有三部分共10章,第一部分介绍使用TensorFlow生成图像的基本知识,包括概率模型、自动编码器和生成对抗网络(GAN);第二部分通过一些应用程序案例介绍具体的图像生成模型,包括图像到图像转换技术、风格转换和人工智能(AI)画家案例;第三部分介绍生成对抗网络的具体应用,包括高保真面孔生成、图像生成的自我关注和视频合成。本书内容详尽、案例丰富,通过阅读本书,读者不仅可以理解基于TensorFlow生成图像的基本原理,还可以真正掌握图像生成的技能。本书适合图像处理、计算机视觉和机器学习等专业的本科生、研究生及相关技术人员阅读参考。
任何足够高级的技术都近乎魔术。 ——阿瑟·克拉克 上面这句话用来描述基于人工智能(Artificial Intelligence,AI)的图像生成最为贴切。深度学习领域是人工智能的一个子集,它在十余年来得到了迅速发展。现在我们可以生成与真实人脸难以区分的人造面孔,并通过简笔画生成逼真的绘画,这些能力主要归功于一种深度神经网络,称为生成对抗网络(Generative Adversarial Network,GAN)。通过学习这本可实际操作的书,你不仅能够掌握图像生成的技能,而且会对其深层次原理有深刻的理解。 本书首先介绍了使用TensorFlow生成图像的基本原理,包括可变自编码器和GAN。当你阅读这些章节时,将学习如何为不同的应用程序构建模型,使用深度伪造(DeepFake)、神经风格迁移、图像到图像翻译、简单图像转换为逼真图像等实施人脸互换。在使用高级模型生成和编辑人脸之前,你还将了解如何以及为什么要使用谱归一化和自注意力层等高级技术来构建最先进的深度神经网络。本书还将介绍照片恢复、文本到图像合成、视频重定向和神经渲染;同时,你将学习如何在TensorFlow 2.x中从零开始搭建模型,包括PixelCNN、VAE、DCGAN、WGAN、pix2pix、CycleGAN、StyleGAN、GauGAN和BigGAN。 当学完这本书时,你将精通TensorFlow和图像生成技术。 本书为谁而写: 本书面向具备卷积神经网络基本知识、从事深度学习并希望使用本书来学习TensorFlow 2.x的各种图像生成技术的工程师、专业技术人员和研究人员。如果你是图像处理专业人士或计算机视觉工程师,希望探索最先进的体系结构以改进和增强图像、视频,你也会发现本书对你的工作具有很大的帮助。当然,熟悉Python和TensorFlow知识是充分利用本书的必要条件。 如何使用本书; 网络上可以搜到许多关于GAN基础知识的在线教程,然而在这些教程中讲解的模型相当简单,只适用于简单的数据集。除了模型简单,还存在着另一个问题,就是那些运用最先进模型生成真实图像的免费代码,比较复杂且缺乏解释,初学者很难理解。许多下载Git库代码的复制者并不知道如何调整模型以使其适用于自己的应用程序,本书的出版旨在解决这一问题。 本书帮助读者从学习基本原理开始,并立即运行代码进行测试,可以马上看到工作成果。构建模型所需的所有代码都在Jupyter Notebook中,这是为了使你能够更轻松地理解代码的运行过程,并以交互的方式修改和测试代码。我相信从零开始编写代码是学习和掌握深度学习的最好方法。本书每章都有1~3个模型,我们将从头开始编写它们。当你读完这本书时,你不仅会熟悉图像生成,而且可以成为TensorFlow 2的专家。 本书章节按照GAN的发展时间顺序排列,其中某些章节可能建立在前几章的知识基础上。因此,读者最好按顺序阅读各章,尤其是前三章,因为它们涵盖了基础知识;从第4章开始,读者可以跳到更感兴趣的章节。如果在阅读过程中对缩写词感到困惑,可以参考上一章列出的GAN技术总结。 本书的内容: 第1章“开始使用TensorFlow生成图像”:介绍像素概率的基础知识,并使用它构建本书的第一个模型来生成手写数字。 第2章“变分自编码器”:解释如何建立一个变分自编码器(VAE),并使用它生成和编辑人脸。 第3章“生成对抗网络”(GAN):首先介绍GAN的基本原理,并构建一个DCGAN来生成逼真图像;然后带领读者学习新的对抗损失来稳定训练。 第4章“图像到图像的翻译”:涵盖许多模型和有趣的应用。首先,使用pix2pix将草图转换为逼真的照片;然后,用CycleGAN把马变成斑马;最后,利用BicycleGAN生成各种各样的鞋子。 第5章“风格迁移”:解释如何从绘画中提取风格并将其迁移到照片中;讲述可使神经风格迁移运行更快的先进技术,并在最先进的GAN中使用它。 第6章“人工智能画家”:首先,以交互GAN(iGAN)为例,介绍图像编辑和转换的基本原理;然后,建立GauGAN,并从简单的分割图开始创建逼真的建筑图。 第7章“高保真人脸生成”:介绍使用渐进式GAN逐步扩展网络层,并展示如何使用风格迁移技术来构建StyleGAN。 第8章“图像生成的自注意力机制”:展示如何将自注意力嵌入用于条件图像生成的Self-Attention GAN(SAGAN)和BigGAN中。 第9章“视频合成”:演示如何使用自编码器来创建DeepFake视频。在此过程中,学习如何使用OpenCV和dlib进行人脸处理。 第10章“总结与展望”:回顾和总结本书所介绍的生成技术,并思考如何将它们用作新兴应用程序的基础,包括文本到图像的合成、视频压缩和视频重定向。 如何充分利用本书: 读者应具备深度学习训练流程的基础知识,如用于图像分类的卷积神经网络训练。本书主要使用TensorFlow 2中容易学习的高级Keras API。如果需要更新或学习TensorFlow 2,可以从网上获得许多免费教程,如TensorFlow官方网站(参见链接1)[ 请登录华信教育资源网下载本书提供的参考资料,正文中提及参见链接1、链接2等时,可在下载的“参考资料.pdf”文件中查询。]
目 录 第1篇 TensorFlow生成图像的基本原理 第1章 开始使用TensorFlow生成图像 2 1.1 技术要求 2 1.2 理解概率 2 1.2.1 概率分布 3 1.2.2 预测置信度 4 1.2.3 像素的联合概率 4 1.3 用概率模型生成人脸 7 1.3.1 创建面孔 7 1.3.2 条件概率 9 1.3.3 概率生成模型 10 1.3.4 参数化建模 12 1.4 从零开始构建PixelCNN模型 13 1.4.1 自回归模型 14 1.4.2 PixelRNN 14 1.4.3 使用TensorFlow 2构建PixelCNN模型 14 1.5 本章小结 21 第2章 变分自编码器 22 2.1 技术要求 22 2.2 用自编码器学习潜在变量 22 2.2.1 编码器 23 2.2.2 解码器 26 2.2.3 构建自编码器 28 2.2.4 从潜在变量生成图像 29 2.3 变分自编码器 31 2.3.1 高斯分布 31 2.3.2 采样潜在变量 33 2.3.3 损失函数 36 2.4 用变分自编码器生成人脸 38 2.4.1 网络体系结构 38 2.4.2 面部重建 39 2.4.3 生成新面孔 40 2.4.4 采样技巧 40 2.5 控制面部属性 42 2.5.1 潜在空间运算 42 2.5.2 寻找属性向量 42 2.5.3 面部编辑 43 2.6 本章小结 45 第3章 生成对抗网络 46 3.1 技术要求 46 3.2 了解GAN的基本原理 47 3.2.1 GAN的架构 47 3.2.2 价值函数 48 3.2.3 GAN训练步骤 51 3.3 构建深度卷积GAN(DCGAN) 53 3.3.1 结构指南 53 3.3.2 建立Fashion-MNIST的DCGAN 55 3.3.3 训练我们的DCGAN 58 3.4 训练GAN的挑战 60 3.4.1 无信息损失和度量 60 3.4.2 不稳定性 61 3.4.3 梯度消失 61 3.4.4 模式崩塌 62 3.5 建立Wasserstein GAN(WGAN) 63 3.5.1 理解Wasserstein损失 64 3.5.2 实现1-Lipschitz约束 65 3.5.3 重组训练步骤 66 3.5.4 实施梯度惩罚(WGAN-GP) 68 3.5.5 调整CelebA的WGAN-GP 71 3.6 本章小结 73 第2篇 深度生成模型的应用 第4章 图像到图像的翻译 76 4.1 技术要求 76 4.2 条件GAN 77 4.2.1 实现条件DCGAN 78 4.2.2 条件GAN的变体 82 4.3 使用pix2pix进行图像翻译 84 4.3.1 丢弃随机噪声 85 4.3.2 U-Net作为生成器 85 4.3.3 损失函数 88 4.3.4 实现PatchGAN判别器 88 4.3.5 训练pix2pix 90 4.4 CycleGAN的非成对图像翻译 91 4.4.1 未配对的数据集 91 4.4.2 循环一致性损失 92 4.4.3 构建CycleGAN模型 93 4.4.4 分析CycleGAN 95 4.5 用BicycleGAN实现图像翻译多样化 96 4.5.1 理解体系结构 97 4.5.2 实现BicycleGAN 99 4.6 本章小结 104 第5章 风格迁移 105 5.1 技术要求 105 5.2 神经风格迁移 106 5.2.1 利用VGG提取特征 107 5.2.2 内容重构 109 5.2.3 用Gram矩阵重建风格 111 5.2.4 执行神经风格迁移 113 5.3 改进风格迁移 114 5.3.1 使用前馈网络进行快速风格迁移 116 5.3.2 不同的风格特征 117 5.3.3 使用归一化层控制风格 117 5.4 实时任意风格转换 118 5.4.1 实现自适应实例归一化 119 5.4.2 风格迁移网络架构 120 5.4.3 任意风格迁移训练 123 5.5 基于风格的GAN简介 126 5.6 本章小结 131 第6章 人工智能画家 132 6.1 技术要求 132 6.2 iGAN介绍 132 6.2.1 了解流形 134 6.2.2 图像编辑 135 6.3 基于GauGAN的分割图到图像的翻译 139 6.3.1 pix2pixHD介绍 139 6.3.2 空间自适应归一化(SPADE) 140 6.3.3 实际应用GauGAN 146 6.4 本章小结 153 第3篇 高级深度生成技术 第7章 高保真人脸生成 156 7.1 技术要求 156 7.2 ProGAN概述 156 7.2.1 像素归一化 158 7.2.2 使用小批量统计增加图像变化 159 7.2.3 均衡学习率 160 7.3 ProGAN的建立 162 7.3.1 生成器块的建立 162 7.3.2 判别器块的建立 164 7.3.3 逐步发展网络 165 7.3.4 损失函数 169 7.3.5 存在的问题 169 7.4 实际应用StyleGAN 171 7.4.1 风格化生成器 172 7.4.2 实现映射网络 173 7.4.3 添加噪声 174 7.4.4 AdaIN的实现 174 7.4.5 建造生成器块 175 7.4.6 StyleGAN的训练 176 7.5 本章小结 177 第8章 图像生成的自注意力机制 178 8.1 技术要求 178 8.2 谱归一化 179 8.2.1 了解谱范数 179 8.2.2 谱的归一化实现 180 8.3 自注意力模块 181 8.3.1 计算机视觉的自注意力 181 8.3.2 自注意力模块的实现 183 8.4 建立SAGAN 185 8.4.1 构建SAGAN生成器 186 8.4.2 条件批量归一化 187 8.4.3 构建判别器 189 8.4.4 训练SAGAN 190 8.5 实现BigGAN 191 8.5.1 缩放GAN 191 8.5.2 跳过潜在向量 192 8.5.3 共享类嵌入 193 8.5.4 正交归一化 195 8.6 本章小结 196 第9章 视频合成 197 9.1 技术要求 197 9.2 视频合成概述 198 9.2.1 理解人脸视频合成 198 9.2.2 DeepFake概述 199 9.3 实现人脸图像处理 201 9.3.1 从视频中提取图像 201 9.3.2 检测和定位人脸 202 9.3.3 面部特征的检测 203 9.3.4 面部对齐 204 9.3.5 面部扭曲 206 9.4 建立DeepFake模型 208 9.4.1 构建编码器 208 9.4.2 构建解码器 209 9.4.3 训练自编码器 210 9.5 人脸互换 212 9.6 用GAN改进DeepFake 214 9.7 本章小结 216 第10章 总结与展望 217 10.1 GAN的回顾 217 10.1.1 优化和激活功能 218 10.1.2 对抗损失 218 10.1.3 辅助损失 219 10.1.4 归一化 219 10.1.5 正则化 220 10.2 将你的技能付诸实践 221 10.2.1 不要相信你读到的一切 221 10.2.2 你的GPU够强吗 221 10.2.3 使用现有的模型构建你的模型 221 10.2.4 理解模型的局限性 222 10.3 图像处理 222 10.3.1 图像修整 222 10.3.2 图像压缩 224 10.3.3 图像超分辨率 225 10.4 文本转图像 225 10.5 视频重定向 227 10.5.1 人脸再现 228 10.5.2 姿势转换 229 10.5.3 运动转移 230 10.6 神经渲染 231 10.7 本章小结 233