PREFACE
前言
人工智能(AI)已经成为一股强大的力量,正在推动一些日常使用的现代应用程序的发展,正在以一种曾经只存在于我们幻想中的方式重塑这个世界。人工智能曾经仅存在于少数实验室,隶属于计算机科学学科。然而,由于优秀理论的爆炸式发展、计算能力的提高和数据的可用性,该领域自2000年以来开始呈指数级增长,而且没有任何放缓的迹象。
人工智能已经一次又一次地证明,只要拥有正确的算法和足够的数据,它就可以在有限的人工干预下自学任务,并产生与人类判断相匹敌甚至有时超过人类判断的结果。无论你是新手还是运营大型组织的老手,都有充分的理由去了解人工智能的工作原理。神经网络是人工智能算法中最灵活的一类,已被广泛应用于各个领域,包括结构化数据、文本和视觉领域。
本书从神经网络的基础开始讲解,涵盖了50多个计算机视觉方面的应用。首先,你将使用NumPy和PyTorch从头开始构建神经网络(NN),然后学习调整神经网络超参数的最佳实践。随着学习的深入,你将学习CNN以及主要用于图像分类的迁移学习技术,还将了解在构建NN模型时需要注意的实际问题。
接下来,你将学习多目标检测、图像分割,并使用R-CNN、Fast R-CNN、Faster R-CNN、SSD、YOLO、U-Net和Mask R-CNN架构等技术实现这些任务,还将学习使用Detectron2框架来简化构建神经网络的具体过程,这些神经网络主要用于目标检测和人体姿态估算。之后,你将实现三维目标检测。
随后,你将学习自编码器和GAN,重点是图像处理和生成。这里将使用VAE、DCGAN、cGAN、Pix2Pix、CycleGAN、StyleGAN2、SRGAN和风格迁移来实现用于各种任务的图像处理。
最后,学习将计算机视觉与其他技术相结合来解决传统问题,包括将NLP和计算机视觉进行结合,执行OCR、图像标题生成、用transformer进行目标检测;通过结合强化学习和计算机视觉技术来实现汽车自动驾驶智能体;如何使用OpenCV库将一个NN模型投入具体的生产过程,以及传统的计算机视觉技术。
目标读者
本书是为PyTorch初中级读者准备的,目标是使读者熟练掌握基于深度学习和PyTorch的计算机视觉技术。对于刚开始学习神经网络的读者而言,本书也很有用。阅读本书需要具备Python编程语言和机器学习的基础知识。
主要内容
第1章介绍神经网络的工作原理。首先,你将学习与神经网络相关的关键术语。然后,你将了解构建模块的工作细节,并在一个小数据集上从头开始构建神经网络。
第2章介绍如何使用PyTorch。在学习使用PyTorch构建神经网络模型的不同方法之前,你将了解创建和操作张量对象的方法。这里仍将使用一个小数据集,以便你了解使用PyTorch的细节。
第3章结合前面两章涉及的所有内容,帮助你理解各种神经网络超参数对模型准确度的影响。在学完本章后,你将掌握如何在实际数据集上使用神经网络。
第4章详细介绍使用普通神经网络面临的挑战,你将了解为何卷积神经网络能克服传统神经网络的各种限制。你将深入了解CNN的工作细节,并了解其中的各种组件。然后,你将学习处理图像的最佳实践。本章将使用真实世界的图像,并学习使用CNN实现复杂图像分类的工作原理。
第5章介绍如何解决现实世界中的图像分类问题。你将了解多种迁移学习架构,并了解它们是如何显著提高图像分类准确度的。然后,使用迁移学习实现人脸关键点检测和对年龄、性别进行估计。
第6章提供在实际构建和部署图像分类模型时需要注意的要点。实际上,你将看到在真实数据上进行数据增强和批归一化的优点。此外,还将了解类激活映射为何有助于对CNN模型的预测结果进行解释。学完本章后,你就可以解决大多数图像分类问题,并利用前面讨论的模型来处理定制的数据集。
第7章奠定目标检测的基础,你将学习用于构建目标检测模型的各种技术。然后,通过一个案例了解基于区域建议的目标检测技术,在这个案例中,你将实现一个用于定位图像中卡车和公交车的模型。
第8章首先展示区域建议架构的局限性,介绍解决区域建议架构问题的更多高级架构的工作细节。我们将在相同的数据集(卡车与公交车的目标检测)上实现所有的架构,这样就可以对比每个架构的工作原理。
第9章建立在前几章的基础上,帮助你构建模型,以确定各种类别目标和目标实例在图像中的位置和轮廓。我们将针对道路图像和普通家庭图像实现具体的应用。学完本章后,你将能够通过使用PyTorch构建模型的方式解决关于图像分类、目标检测/分割的问题。
第10章总结前几章的学习内容,用几行代码实现对目标的检测和分割,通过构建模型来实现人群计数和图像着色应用。最后,你还将了解如何在真实数据集上进行三维目标检测。
第11章为图像修改奠定基础。首先学习用于压缩图像和生成新图像的自编码器。然后学习欺骗模型的对抗性攻击。之后实现图像风格迁移。最后实现一个自编码器来生成深度虚拟图像。
第12章首先介绍GAN的工作原理,然后学习虚拟人脸图像的生成技术以及如何使用GAN生成一些有趣的图像。
第13章将图像处理升级到一个新的水平。我们将实现一个GAN模型,用于将目标从一个类别转换到另外一个类别,由草图生成图像,并操作定制图像,以便生成特定风格的图像。学完本章后,你就可以组合应用自编码器和GAN进行图像处理了。
第14章为你学习结合使用计算机视觉技术与其他技术奠定基础。你将学习如何使用小样本和零训练样本完成图像分类。
第15章介绍各种自然语言处理技术的工作细节,如词嵌入、LSTM和transformer,你将使用transformer实现一些应用程序,如图像标题生成、OCR等。
第16章首先介绍强化学习术语和状态价值。在学习深度Q学习的过程中,你将了解强化学习和神经网络的结合使用方式。通过学习,你将实现一个玩Pong游戏的智能体和一个用于汽车自动驾驶的智能体。
第17章介绍将模型部署到生产环境的最佳实践。在将模型迁移到AWS公有云之前,你将了解如何在本地服务器上部署模型。
第18章详细介绍如何使用OpenCV实用程序创建5个有趣的应用程序。学完本章后,你将了解辅助深度学习的实用程序,以及在内存或推理速度有相当大限制的场景中可以替代深度学习的实用程序。
学习本书的软硬件要求
请注意,本书中几乎所有的代码都可以使用Google Colab运行,通过单击GitHub各章notebook中的Open in Colab按钮即可实现。
下载示例代码
可以从GitHub上下载本书的示例代码文件,地址是https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch。代码的更新将会提交到GitHub。
下载彩色图像
我们还提供了一个PDF文件,其中有本书中使用的屏幕截图或图表的彩色图像,你可以从https://static.packt-cdn.com/downloads/9781839213472_ColorImages.pdf下载。