人工智能的概念早在20世纪被提出,其属于计算机科学的一个分支。但是受限于当时有限的计算资源,人工智能一直未能展现其巨大的威力。进入21世纪后,随着数据量的爆炸式增长与计算资源的普遍化,人工智能得到了充分的发展,并且得到了实验的支撑。它从最初试图模拟人类大脑神经元激活的方式使机器模型学习知识并产生类似人类思考的智能。
人工智能从创造之始到现在,理论和技术逐渐成熟,应用的领域也不断扩大,从计算机视觉任务、自然语言处理任务、语音识别任务到推荐算法都有人工智能算法的应用。人工智能是一门极具挑战与前景的科学,从事与人工智能相关工作的人员需要必备数学知识、计算机知识与神经科学知识,属于多学科交叉融合的科学。在如今近乎全民人工智能的时代,无论是在校学生还是已步入职场的工作者,了解一些人工智能的基本知识与算法对人生都有极大的帮助。
随着人工智能的广泛流行,各大互联网巨头都着手开发相应的深度学习框架,国外如谷歌的TensorFlow、脸书的PyTorch等,国内则有百度的PaddlePaddle等,其中各大深度学习框架都各有优势,它们对于能实现的模型结构也各有偏好,想要完全掌握各种深度学习模型,仅仅掌握一种深度学习框架是完全不够的。作为入门的深度学习框架,TensorFlow不失为一种好的框架,其具有清晰的逻辑层次、方便的可视化工具、完整的社区,在帮助读者理解模型细节的同时方便读者查阅相关资料自行学习更多知识。
本书面向所有想了解与人工智能相关知识的读者,无论是零基础或是具有一定基础的学生或工作者都适用。本书以TensorFlow为深度学习框架,主要讲解计算机视觉任务中相关的知识。TensorFlow目前已更新至2.x版,其语法与更易用的Keras相近,与TensorFlow 1.x的代码写法差异较大。本书所采用的TensorFlow版本为1.14.0,是TensorFlow 1.x中的最后一个版本,选用该版本主要有以下两点考虑: 第一,由于TensorFlow 1.x提供的API函数更加底层,因此在编写代码时能够让读者涉及更多的底层实现细节,方便读者对原理加深理解; 第二,TensorFlow 1.14.0兼具TensorFlow 1.x与TensorFlow 2.x的特性,对于以后想迁移到TensorFlow 2.x的读者更为友好。
第1和2章主要为零基础的读者设计,第1章引导读者在不同的操作系统下以不同的方式配置TensorFlow所需的编程环境; 第2章为读者介绍一些常用的Python编程工具包,这些工具不仅在之后的章节中会用到,在读者平时进行Python编程的过程中也十分有帮助; 第3章为对TensorFlow不熟悉的读者设计,对TensorFlow中的一些主要概念进行了介绍,例如如何使用TensorFlow编写网络模型的输入层,如何使用TensorFlow定义网络结构并将其使用TensorBoard进行可视化等; 第4章的内容更加偏重理论性,从零开始介绍深度学习中的一些重要概念,包括不同任务适用的激活函数、损失函数、优化器等,同时介绍了深度学习任务中训练模型的技巧与参数的选择,相信通过这些技巧,读者能够更快使模型收敛,达到自己想要的效果; 第5章则重点讲解深度学习任务中常使用的数据集,从较小的规则数据集到数据量巨大并且图像不规则的数据集均有涉猎,读者应着重关注图像不规则的数据集的使用方法,因为这更接近于日常人们四处收集到的图像,除此以外,还着重介绍了如何从头设计数据集类,包括不同格式图像数据的读取与获取等。第6~8章深入讲解深度学习模型,将前5章介绍的知识与代码进行整合,以完成从数据准备到使用模型进行预测的整个过程。第6章从最简单的全连接神经网络开始,使用其完成回归与分类任务,带领读者初步感受神经网络的魅力; 第7章在全连接神经网络的基础上,加入卷积层与转置卷积层,介绍卷积神经网络,以及使用不同的卷积神经网络模型完成了部分数据集的识别任务,同时还向读者呈现了一些神经网络模型比较有趣的应用,如使图像更清晰、为黑白图像上色等; 第8章在卷积神经网络的基础上使用不同的理论假设,使模型完成图像生成的任务,通过对两种经典生成式模型的介绍,相信读者能对神经网络模型的应用场景多一层理解。
本书的内容十分连贯,每个章节的内容都会使用到前面章节讲解过的知识,旨在最大限度保证读者学习的连贯性,同时本书将晦涩难懂的数学公式减到最少,尽力以图示的方式促进读者理解,本书部分彩图请见插页。相信读者读完本书后会对计算机视觉相关任务有一个更清晰的理解,希望本书能成为每一位读者打开深度学习与TensorFlow的金钥匙。
编者2021年1月