描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111690344丛书名: 智能系统与技术丛书
编辑推荐
(1)作者背景深厚:两位作者是AI和计算机视觉方面的专家,在阿里、腾讯、百度等企业有超过10年的相关工作经验;(2)内容结构讲究:针对初学者需求精心安排,从预备知识、深度学习基础,到目标检测算法和工程案例,由浅入深,理论与实践结合;(3)内容通俗易懂:语言通俗,逻辑性强;尽量绕开复杂的数学公式推导,无需数学基础,降低读者的阅读门槛;(4)丰富实战案例:内容遵循知识点背景介绍→原理讲解→案例分析的思路,提供大量案例;(5)提供源码下载:第2~11章均提供源数据和完整代码,代码均经过严格测试,可直接在Github上下载。
内容简介
内容简介
这是一本从工具、原理、算法3个维度指导读者零基础快速掌握目标检测技术及其应用的入门书。
两位作者是资深的AI技术专家和计算机视觉算法专家,在阿里、腾讯、百度、三星等大企业从事计算机视觉相关的工作多年,不仅理论功底扎实、实践经验丰富,而且知道初学者进入计算机视觉领域的痛点和难点。据此,两位作者编写了这本针对目标检测初学者的入门书,希望从知识体系和工程实践的角度帮助读者少走弯路。
第1~2章是目标检测的准备工作,主要介绍了目标检测的常识、深度学习框架的选型、开发环境的搭建以及数据处理工具的使用。
第3~5章是目标检测的技术基础,主要讲解了数据预处理和卷积神经网络等图像分类技术的基础知识。
第6章比较详细地介绍了香港中文大学的开源算法库mmdetection。
第7~10章详细地讲解了目标检测的概念、原理、一阶段算法、二阶段算法以及提升算法性能的常用方法。
第11章简单介绍了目标检测的相关案例(以工业为背景),以帮助读者构建一个更完整的知识体系。
这是一本从工具、原理、算法3个维度指导读者零基础快速掌握目标检测技术及其应用的入门书。
两位作者是资深的AI技术专家和计算机视觉算法专家,在阿里、腾讯、百度、三星等大企业从事计算机视觉相关的工作多年,不仅理论功底扎实、实践经验丰富,而且知道初学者进入计算机视觉领域的痛点和难点。据此,两位作者编写了这本针对目标检测初学者的入门书,希望从知识体系和工程实践的角度帮助读者少走弯路。
第1~2章是目标检测的准备工作,主要介绍了目标检测的常识、深度学习框架的选型、开发环境的搭建以及数据处理工具的使用。
第3~5章是目标检测的技术基础,主要讲解了数据预处理和卷积神经网络等图像分类技术的基础知识。
第6章比较详细地介绍了香港中文大学的开源算法库mmdetection。
第7~10章详细地讲解了目标检测的概念、原理、一阶段算法、二阶段算法以及提升算法性能的常用方法。
第11章简单介绍了目标检测的相关案例(以工业为背景),以帮助读者构建一个更完整的知识体系。
目 录
前言
第1章 目标检测概述 1
1.1 什么是目标检测 1
1.2 典型的应用场景 2
1.2.1 人脸识别 2
1.2.2 智慧交通 2
1.2.3 工业检测 3
1.3 目标检测技术发展简史 3
1.3.1 传统算法 4
1.3.2 深度学习算法 5
1.4 目标检测领域重要的公开评测集 8
1.5 本章小结 11
第2章 目标检测前置技术 12
2.1 深度学习框架 12
2.1.1 Theano 12
2.1.2 TensorFlow 13
2.1.3 MXNet 14
2.1.4 Keras 15
2.1.5 PyTorch 15
2.1.6 Caffe 16
2.2 搭建开发环境 17
2.2.1 Anaconda 17
2.2.2 Conda 19
2.2.3 PyTorch的下载与安装 21
2.3 NumPy使用详解 22
2.3.1 创建数组 22
2.3.2 创建NumPy数组 24
2.3.3 获取NumPy属性 27
2.3.4 NumPy数组索引 28
2.3.5 切片 28
2.3.6 NumPy中的矩阵运算 29
2.3.7 数据类型转换 31
2.3.8 NumPy的统计计算方法 31
2.3.9 NumPy中的arg运算 32
2.3.10 FancyIndexing 33
2.3.11 NumPy数组比较 33
2.4 本章小结 35
第3章 卷积神经网络 36
3.1 卷积神经网络基础 36
3.1.1 全连接层 36
3.1.2 卷积层 37
3.1.3 池化层 42
3.1.4 三维数据的卷积运算 44
3.1.5 批规范化层 45
3.1.6 Dropout层 47
3.2 本章小结 48
第4章 数据预处理 49
4.1 数据增强 49
4.1.1 resize操作 50
4.1.2 crop操作 51
4.1.3 随机的水平和竖直翻转 52
4.1.4 随机角度的旋转 53
4.1.5 亮度、对比度和颜色的随机变化 54
4.1.6 彩色图转灰度图 55
4.2 数据的探索—Kaggle猫狗大战 56
4.3 本章小结 64
第5章 常见卷积神经网络结构 65
5.1 LeNet神经网络 65
5.2 AlexNet神经网络 70
5.3 VGGNet神经网络 77
5.4 GoogLeNet神经网络 81
5.4.1 inception模块 83
5.4.2 GoogLeNet的实现 85
5.4.3 GoogLeNet的演变 88
5.5 ResNet 89
5.5.1 残差模块 90
5.5.2 ResNet模型 92
5.6 DenseNet 92
5.7 其他网络结构 95
5.8 实战案例 96
5.9 计算图像数据集的RGB均值和方差 98
5.10 本章小结 99
第6章 mmdetection工具包介绍 100
6.1 mmdetection概要 100
6.2 mmdetection支持的检测框架和算法实现 101
6.3 搭建mmdetection开发环境 102
6.4 使用入门 103
6.4.1 使用预训练模型进行推理 103
6.4.2 训练模型 105
6.4.3 有用的工具 106
6.4.4 如何使用mmdetection 108
6.5 标注图像 110
6.6 实战案例 112
6.6.1 检测人体 113
6.6.2 检测猫和狗 115
6.7 本章小结 120
第7章 目标检测的基本概念 121
7.1 概念详解 121
7.1.1 IoU计算 122
7.1.2 NMS操作 122
7.1.3 感受野 124
7.1.4 空洞卷积 128
7.1.5 评价指标mAP 129
7.2 本章小结 131
第8章 两阶段检测方法 132
8.1 R-CNN算法 132
8.1.1 生成候选区域 132
8.1.2 类别判定 133
8.1.3 位置修正 136
8.1.4 检测过程 137
8.1.5 R-CNN算法的重要意义 138
8.2 SPP-Net算法 139
8.2.1 空间金字塔采样 139
8.2.2 网络训练 141
8.2.3 测试过程 142
8.3 Fast R-CNN算法及训练过程 143
8.3.1 ROI池化层 144
8.3.2 模型训练 144
8.3.3 测试过程 147
8.4 Faster R-CNN算法及训练过程 147
8.4.1 候选框提取网络 148
8.4.2 RPN和Fast R-CNN共享特征的方法 152
8.5 Faster R-CNN代码解析 153
8.5.1 代码整体结构 153
8.5.2 数据加载 158
8.5.3 构建主干网络 160
8.5.4 候选框提取网络 161
8.5.5 对候选框进行分类和位置校正 163
8.5.6 算法模型架构图 165
8.6 本章小结 165
第9章 检测算法的进一步改进 167
9.1 特征金字塔 167
9.1.1 特征金字塔结构 167
9.1.2 FPN代码解析 170
9.2 焦点损失函数 174
9.3 本章小结 175
第10章 一阶段检测算法 176
10.1 YOLO算法 176
10.1.1 YOLO版 176
10.1.2 YOLO第二版 182
10.1.3 YOLO第三版 185
10.2 SSD算法 196
10.2.1 SSD算法原理 197
10.2.2 训练方法 197
10.2.3 SSD代码解析 201
10.3 FCOS算法 208
10.3.1 FCOS算法原理 208
10.3.2 FCOS源码解析 213
10.4 本章小结 217
第11章 工业AI的发展 218
11.1 工业AI的概念和互联网 218
11.2 工业AI落地应用 219
11.2.1 工业AI的典型场景 220
11.2.2 工业AI落地背后的本质 221
11.2.3 展望 221
11.3 工业生产
第1章 目标检测概述 1
1.1 什么是目标检测 1
1.2 典型的应用场景 2
1.2.1 人脸识别 2
1.2.2 智慧交通 2
1.2.3 工业检测 3
1.3 目标检测技术发展简史 3
1.3.1 传统算法 4
1.3.2 深度学习算法 5
1.4 目标检测领域重要的公开评测集 8
1.5 本章小结 11
第2章 目标检测前置技术 12
2.1 深度学习框架 12
2.1.1 Theano 12
2.1.2 TensorFlow 13
2.1.3 MXNet 14
2.1.4 Keras 15
2.1.5 PyTorch 15
2.1.6 Caffe 16
2.2 搭建开发环境 17
2.2.1 Anaconda 17
2.2.2 Conda 19
2.2.3 PyTorch的下载与安装 21
2.3 NumPy使用详解 22
2.3.1 创建数组 22
2.3.2 创建NumPy数组 24
2.3.3 获取NumPy属性 27
2.3.4 NumPy数组索引 28
2.3.5 切片 28
2.3.6 NumPy中的矩阵运算 29
2.3.7 数据类型转换 31
2.3.8 NumPy的统计计算方法 31
2.3.9 NumPy中的arg运算 32
2.3.10 FancyIndexing 33
2.3.11 NumPy数组比较 33
2.4 本章小结 35
第3章 卷积神经网络 36
3.1 卷积神经网络基础 36
3.1.1 全连接层 36
3.1.2 卷积层 37
3.1.3 池化层 42
3.1.4 三维数据的卷积运算 44
3.1.5 批规范化层 45
3.1.6 Dropout层 47
3.2 本章小结 48
第4章 数据预处理 49
4.1 数据增强 49
4.1.1 resize操作 50
4.1.2 crop操作 51
4.1.3 随机的水平和竖直翻转 52
4.1.4 随机角度的旋转 53
4.1.5 亮度、对比度和颜色的随机变化 54
4.1.6 彩色图转灰度图 55
4.2 数据的探索—Kaggle猫狗大战 56
4.3 本章小结 64
第5章 常见卷积神经网络结构 65
5.1 LeNet神经网络 65
5.2 AlexNet神经网络 70
5.3 VGGNet神经网络 77
5.4 GoogLeNet神经网络 81
5.4.1 inception模块 83
5.4.2 GoogLeNet的实现 85
5.4.3 GoogLeNet的演变 88
5.5 ResNet 89
5.5.1 残差模块 90
5.5.2 ResNet模型 92
5.6 DenseNet 92
5.7 其他网络结构 95
5.8 实战案例 96
5.9 计算图像数据集的RGB均值和方差 98
5.10 本章小结 99
第6章 mmdetection工具包介绍 100
6.1 mmdetection概要 100
6.2 mmdetection支持的检测框架和算法实现 101
6.3 搭建mmdetection开发环境 102
6.4 使用入门 103
6.4.1 使用预训练模型进行推理 103
6.4.2 训练模型 105
6.4.3 有用的工具 106
6.4.4 如何使用mmdetection 108
6.5 标注图像 110
6.6 实战案例 112
6.6.1 检测人体 113
6.6.2 检测猫和狗 115
6.7 本章小结 120
第7章 目标检测的基本概念 121
7.1 概念详解 121
7.1.1 IoU计算 122
7.1.2 NMS操作 122
7.1.3 感受野 124
7.1.4 空洞卷积 128
7.1.5 评价指标mAP 129
7.2 本章小结 131
第8章 两阶段检测方法 132
8.1 R-CNN算法 132
8.1.1 生成候选区域 132
8.1.2 类别判定 133
8.1.3 位置修正 136
8.1.4 检测过程 137
8.1.5 R-CNN算法的重要意义 138
8.2 SPP-Net算法 139
8.2.1 空间金字塔采样 139
8.2.2 网络训练 141
8.2.3 测试过程 142
8.3 Fast R-CNN算法及训练过程 143
8.3.1 ROI池化层 144
8.3.2 模型训练 144
8.3.3 测试过程 147
8.4 Faster R-CNN算法及训练过程 147
8.4.1 候选框提取网络 148
8.4.2 RPN和Fast R-CNN共享特征的方法 152
8.5 Faster R-CNN代码解析 153
8.5.1 代码整体结构 153
8.5.2 数据加载 158
8.5.3 构建主干网络 160
8.5.4 候选框提取网络 161
8.5.5 对候选框进行分类和位置校正 163
8.5.6 算法模型架构图 165
8.6 本章小结 165
第9章 检测算法的进一步改进 167
9.1 特征金字塔 167
9.1.1 特征金字塔结构 167
9.1.2 FPN代码解析 170
9.2 焦点损失函数 174
9.3 本章小结 175
第10章 一阶段检测算法 176
10.1 YOLO算法 176
10.1.1 YOLO版 176
10.1.2 YOLO第二版 182
10.1.3 YOLO第三版 185
10.2 SSD算法 196
10.2.1 SSD算法原理 197
10.2.2 训练方法 197
10.2.3 SSD代码解析 201
10.3 FCOS算法 208
10.3.1 FCOS算法原理 208
10.3.2 FCOS源码解析 213
10.4 本章小结 217
第11章 工业AI的发展 218
11.1 工业AI的概念和互联网 218
11.2 工业AI落地应用 219
11.2.1 工业AI的典型场景 220
11.2.2 工业AI落地背后的本质 221
11.2.3 展望 221
11.3 工业生产
前 言
为什么要写这本书
随着深度学习技术的发展、计算能力的提升和视觉数据的增加,计算机视觉技术在图像搜索、智能相册、人脸闸机、城市智能交通管理、智慧医疗等诸多领域都取得了令人瞩目的成绩。越来越多的人开始关注这个领域。计算机视觉包含多个分支,其中图像分类、目标检测、图像分割、目标跟踪等是计算机视觉领域重要的几个研究课题。本书介绍的目标检测技术,本质上就是通过计算机运行特定的算法,检测图像中一些受关注的目标。当今时代,我们很容易在互联网上找到目标检测算法的开源代码,运行代码并不是什么难事,但理解其中的原理却有一定的难度。我们编写本书的目的就是由浅入深地向读者讲解目标检测技术,用相对通俗的语言来介绍算法的背景和原理,在读者“似懂非懂”时给出实战案例。实战案例的代码已全部通过线下验证,代码并不复杂,可以很好地帮助读者理解算法细节,希望读者在学习理论之后可以亲自动手实践。目标检测的理论和实践是相辅相成的,希望本书可以带领读者走进目标检测的世界。
本书具有以下两个特点。
1)本书默认读者具备大学本科水平的数学基础。因为图像分类是目标检测的基础,所以本书前几章讲解了图像分类算法,为后续读者理解目标检测算法打下基础。本书尽量绕开复杂的数学证明和推导,从问题的前因后果、思考过程和简单数学计算的角度做模型分析和讲解,目的是以更通俗易懂的方式带领读者入门。
2)本书附有实战案例,读者可以结合案例,通过实践验证思路。本书内容是按照知识点背景—原理剖析—实战案例的顺序展开的,代码会在书中详细列出或者上传到GitHub,以方便读者下载与调试,快速掌握知识点,快速上手。这些代码也可以应用到读者自己的项目中,以提升开发效率。本书还介绍了目前比较流行的开源算法库mmdetection,旨在帮助读者降低实际项目的开发难度。
本书第1、8、9、10章,以及6.1~6.4节,由金智勇撰写,其余各章节由涂铭撰写。
读者对象
本书适合以下几类读者阅读:
1)统计学、计算机科学技术等相关专业的学生:本书的写作初衷是面向相关专业的学生—拥有大量理论知识却缺乏实战经验的人员,让其在有理论积累的基础上深入了解目标检测。读者可以跟随本书的教程进行操作练习,从而对自己使用的人工智能工具、算法和技术“知其然亦知其所以然”。
2)信息科学和计算机科学爱好者:通过本书可以了解人工智能领域的前辈们在探索的道路上做出的努力和思考。理解他们的观点和思路,有助于读者开拓自己的思维和视野。
3)人工智能相关专业的研究人员:本书详细介绍了目标检测的相关知识,阅读本书可以了解理论知识,了解哪些才是项目所需内容以及如何在项目中实现。
如何阅读本书
本书从以下几个方面介绍目标检测的相关技术。
第1章简述了目标检测的定义及应用场景,并介绍了20年来目标检测技术的发展历程。
第2章主要对目标检测的前置技术做简单的介绍,同时介绍了本书后续章节实战案例中会用到的环境。
第3~5章介绍图像分类技术的基础知识,包括数据预处理、卷积神经网络等。该部分的代码主要使用PyTorch实现。没有图像分类基础的读者需要理解这几章的内容之后再学习后续章节,有卷积神经网络基础的读者可以有选择地学习。
第6 章比较详细地介绍了香港中文大学的开源算法库mmdetection。
第7章主要介绍了目标检测的基本概念,在进入代码实战之前,我们必须先理解基本原理。
第8~10章是本书的核心内容,详细讲解了目标检测技术的一阶段算法、两阶段算法以及提升算法性能的常用方法。
第11章简单介绍了目标检测的相关案例(以工业为背景),以帮助读者构建更完整的知识体系。
本书第2~11章都有对应的源数据和完整代码。需要注意的是,为了让读者更好地了解代码的含义,在注释信息中使用了部分中文说明,每个程序文件的编码格式都是UTF-8。
勘误和支持
由于笔者水平及撰稿时间有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可以发送电子邮件到[email protected]反馈建议或意见。
致谢
在受邀撰写本书时,从未想到过程会如此艰辛。这里需要感谢一路陪我走来的所有人。
感谢家人在我写作本书时给予了理解和支持。
感谢我的合著者—金智勇,与他合作十分愉快,他给予了我很多的理解和包容。
感谢参与审阅、编辑等工作的杨福川老师和韩蕊老师,是他们在幕后的辛勤付出保证了本书的顺利出版。
在写作期间,我也得到了很多专业领域专家的指导。例如,我在撰写第11章的时候,得到了腾讯云工业AI首席架构师周永良博士的大力帮助,感谢他提供的丰富的行业经验和独到理解。
再次感谢大家!
随着深度学习技术的发展、计算能力的提升和视觉数据的增加,计算机视觉技术在图像搜索、智能相册、人脸闸机、城市智能交通管理、智慧医疗等诸多领域都取得了令人瞩目的成绩。越来越多的人开始关注这个领域。计算机视觉包含多个分支,其中图像分类、目标检测、图像分割、目标跟踪等是计算机视觉领域重要的几个研究课题。本书介绍的目标检测技术,本质上就是通过计算机运行特定的算法,检测图像中一些受关注的目标。当今时代,我们很容易在互联网上找到目标检测算法的开源代码,运行代码并不是什么难事,但理解其中的原理却有一定的难度。我们编写本书的目的就是由浅入深地向读者讲解目标检测技术,用相对通俗的语言来介绍算法的背景和原理,在读者“似懂非懂”时给出实战案例。实战案例的代码已全部通过线下验证,代码并不复杂,可以很好地帮助读者理解算法细节,希望读者在学习理论之后可以亲自动手实践。目标检测的理论和实践是相辅相成的,希望本书可以带领读者走进目标检测的世界。
本书具有以下两个特点。
1)本书默认读者具备大学本科水平的数学基础。因为图像分类是目标检测的基础,所以本书前几章讲解了图像分类算法,为后续读者理解目标检测算法打下基础。本书尽量绕开复杂的数学证明和推导,从问题的前因后果、思考过程和简单数学计算的角度做模型分析和讲解,目的是以更通俗易懂的方式带领读者入门。
2)本书附有实战案例,读者可以结合案例,通过实践验证思路。本书内容是按照知识点背景—原理剖析—实战案例的顺序展开的,代码会在书中详细列出或者上传到GitHub,以方便读者下载与调试,快速掌握知识点,快速上手。这些代码也可以应用到读者自己的项目中,以提升开发效率。本书还介绍了目前比较流行的开源算法库mmdetection,旨在帮助读者降低实际项目的开发难度。
本书第1、8、9、10章,以及6.1~6.4节,由金智勇撰写,其余各章节由涂铭撰写。
读者对象
本书适合以下几类读者阅读:
1)统计学、计算机科学技术等相关专业的学生:本书的写作初衷是面向相关专业的学生—拥有大量理论知识却缺乏实战经验的人员,让其在有理论积累的基础上深入了解目标检测。读者可以跟随本书的教程进行操作练习,从而对自己使用的人工智能工具、算法和技术“知其然亦知其所以然”。
2)信息科学和计算机科学爱好者:通过本书可以了解人工智能领域的前辈们在探索的道路上做出的努力和思考。理解他们的观点和思路,有助于读者开拓自己的思维和视野。
3)人工智能相关专业的研究人员:本书详细介绍了目标检测的相关知识,阅读本书可以了解理论知识,了解哪些才是项目所需内容以及如何在项目中实现。
如何阅读本书
本书从以下几个方面介绍目标检测的相关技术。
第1章简述了目标检测的定义及应用场景,并介绍了20年来目标检测技术的发展历程。
第2章主要对目标检测的前置技术做简单的介绍,同时介绍了本书后续章节实战案例中会用到的环境。
第3~5章介绍图像分类技术的基础知识,包括数据预处理、卷积神经网络等。该部分的代码主要使用PyTorch实现。没有图像分类基础的读者需要理解这几章的内容之后再学习后续章节,有卷积神经网络基础的读者可以有选择地学习。
第6 章比较详细地介绍了香港中文大学的开源算法库mmdetection。
第7章主要介绍了目标检测的基本概念,在进入代码实战之前,我们必须先理解基本原理。
第8~10章是本书的核心内容,详细讲解了目标检测技术的一阶段算法、两阶段算法以及提升算法性能的常用方法。
第11章简单介绍了目标检测的相关案例(以工业为背景),以帮助读者构建更完整的知识体系。
本书第2~11章都有对应的源数据和完整代码。需要注意的是,为了让读者更好地了解代码的含义,在注释信息中使用了部分中文说明,每个程序文件的编码格式都是UTF-8。
勘误和支持
由于笔者水平及撰稿时间有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可以发送电子邮件到[email protected]反馈建议或意见。
致谢
在受邀撰写本书时,从未想到过程会如此艰辛。这里需要感谢一路陪我走来的所有人。
感谢家人在我写作本书时给予了理解和支持。
感谢我的合著者—金智勇,与他合作十分愉快,他给予了我很多的理解和包容。
感谢参与审阅、编辑等工作的杨福川老师和韩蕊老师,是他们在幕后的辛勤付出保证了本书的顺利出版。
在写作期间,我也得到了很多专业领域专家的指导。例如,我在撰写第11章的时候,得到了腾讯云工业AI首席架构师周永良博士的大力帮助,感谢他提供的丰富的行业经验和独到理解。
再次感谢大家!
涂铭
2021年9月
评论
还没有评论。