首页>参考读物>计算机科学与技术>人工智能

机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)
作者 : [印] 阿迪蒂亚·夏尔马(Aditya Sharma)[印] 维什韦什·拉维·什里马利(Vishwesh Ravi Shrimali) 著[美] 迈克尔·贝耶勒(Michael Beyeler)
译者 : 刘冰 译
出版日期 : 2020-11-02
ISBN : 978-7-111-66826-8
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 294
开本 : 16
原书名 : Machine Learning for OpenCV 4, Second Edition
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书通过具体的编程实践案例,全面系统地讲述了机器学习涉及的核心内容。首先介绍新特性以及安装OpenCV 4构建计算机视觉应用程序。你将探索机器学习的基础知识,学习设计用于图像处理的各种算法。本书将逐步介绍有监督学习和无监督学习。你将获得使用Python中的scikit-learn开发各种机器学习应用程序的实践经验。后续章节将重点介绍决策树、支持向量机、贝叶斯学习等各种机器学习算法,以及如何将这些算法应用于目标检测等计算机视觉操作。然后,你将深入研究深度学习和集成学习,并探索它们在现实世界中的应用。最后,你将学习用于构建图像处理系统的最新的Intel OpenVINO。

图书特色

图书前言

随着世界的不断变化,人们构建的机器越来越智能,对机器学习和计算机视觉专家的需求也在日益增长。顾名思义,机器学习就是机器进行学习的过程,即通过给定一组特定参数并将其作为输入进行预测。另一方面,计算机视觉提供了机器视觉,即计算机视觉使机器能够感知信息。当把这些技术组合在一起时,你就得到了一台可以使用视觉数据进行预测的机器,这使得机器拥有的能力更接近人类。当深度学习被加入时,机器的预测能力甚至可以超过人类。这似乎有些牵强,但是随着人工智能系统逐步取代基于决策的系统,这实际上已经成为现实。你拥有人工智能相机、人工智能监控器、人工智能音响系统、人工智能驱动处理器等。虽然不能保证你在读完本书之后就能够构建出一台人工智能相机,但是我们确实打算为你提供实现这些任务必需的工具。我们将要介绍的工具是功能最强大的OpenCV库,它是世界上规模最大的计算机视觉库。尽管OpenCV库在机器学习中的使用不是很普遍,但我们还是提供了一些有关如何将其应用于机器学习的例子和概念。在本书中,我们采用动手实践的方法,建议你尝试本书中提供的每一段代码,以构建一个应用程序来展示学到的知识。世界在变化,而本书就是我们帮助年轻人把世界变得更美好的方式之一。
目标读者
我们试图从头开始解释所有的概念,以使本书既适合初学者又适合高层次读者。读者需具备一些Python编程方面的基本知识,但这不是强制要求。当你遇到不能理解的Python语法时,请一定去网上查找。天助自助者。
主要内容
第1章介绍安装本书所需的软件及Python模块。
第2章带你了解一些基本的OpenCV函数。
第3章涵盖机器学习中监督学习方法的基础知识,并将通过OpenCV以及Python中的scikit-learn库带你了解一些监督学习方法示例。
第4章介绍使用OpenCV中的ORB进行特征检测和特征识别,还将试着帮大家理解维数灾难等重要概念。
第5章介绍决策树及其相关的重要概念,包括树的深度和剪枝等技术。还将介绍利用决策树预测乳腺癌诊断的一个实际应用。
第6章介绍支持向量机及如何用OpenCV实现它,还将介绍一个使用OpenCV进行行人检测的应用。
第7章将讨论朴素贝叶斯算法、多项式朴素贝叶斯等技术及其实现。最后构建一个机器学习应用程序,把数据分类成垃圾邮件和非垃圾邮件。
第8章首次介绍第二类机器学习算法—无监督学习。还将讨论k近邻、k均值等聚类技术。
第9章介绍深度学习技术,我们可以看到如何使用深度神经网络对MNIST数据集的图像进行分类。
第10章介绍用于分类的随机森林、bagging方法以及boosting方法等。
第11章回顾在各种机器学习方法中选择最优参数集的过程,以提升模型的性能。
第12章介绍在OpenCV 4.0中引入的OpenVINO工具包,并以图像分类为例介绍如何使用OpenCV中的OpenVINO工具包。
第13章对本书的重要主题进行总结,并谈谈接下来可以做些什么。
充分利用本书
如果你是Python的初学者,建议阅读任意一本优秀的Python编程书籍、在线教程或观看视频。你还可以研究一下DataCamp(http://www.datacamp.com),利用交互式课程学习Python。
同时建议学习有关Python中Matplotlib库的一些基本概念。你可以试试这个教程:https://www.datacamp.com/community/tutorials/matplotlib-tutorial-python。
在开始阅读本书之前,你不需要在系统上安装任何内容。我们将在第1章中介绍所有的安装步骤。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
本书的代码包也在GitHub上托管,网址为:https://github.com/PacktPublishing/Machine-Learning-for-OpenCV-Second-Edition。如果代码有更新,将在现有的GitHub库上进行更新。

上架指导

计算机\人工智能

封底文字

OpenCV是用于构建计算机视觉应用程序的一个开源库。本书将全面介绍新发布的OpenCV 4版本所提供的大量新特性和平台改进。
首先,你将了解OpenCV 4的新特性并安装OpenCV 4来构建计算机视觉应用程序。然后,你将探索机器学习的基础知识,学习设计用于图像处理的各种算法,循序渐进地掌握监督学习和无监督学习,并将获得使用Python中的scikit-learn开发各种机器学习应用程序的实践经验。接着,你将学习决策树、支持向量机(SVM)、贝叶斯学习等各种机器学习算法,以及如何将这些算法应用于目标检测等计算机视觉操作。之后,你将深入研究深度学习和集成学习,并探索它们在现实世界中的应用,如手写数字分类和手势识别等。最后,你将学习用于构建图像处理系统的英特尔OpenVINO工具包。
学习完本书,你将掌握使用OpenCV 4构建智能计算机视觉应用程序所需要的机器学习技能。
通过阅读本书,你将学到:
理解用于图像处理的核心机器学习概念。
探索机器学习和深度学习算法设计背后的理论。
发现训练深度学习模型的有效技术。
评估机器学习模型以提升模型的性能。
在计算机视觉应用程序中整合支持向量机和贝叶斯分类器等算法。
利用OpenVINO和OpenCV 4加速模型推理。

译者序

机器学习是人工智能领域中最能够体现机器智能的一个分支,也是人工智能领域发展最快的一个分支,其主要研究计算机如何模拟人类的学习行为,以获取新的知识和技能,并在对新知识不断学习的过程中逐步提升计算机的学习能力。数据、学习算法和模型是机器学习的三要素,计算机通过输入的数据,利用相关的学习算法,得到稳定的模型结构,产生可靠的预测结果。机器学习过程分为4个主要步骤:数据预处理、机器学习或模型训练、模型评估以及新数据预测。根据训练数据是否有标注,机器学习可以分为监督学习和无监督学习两大类。除此之外,机器学习还包括集成学习、深度学习和增强学习等内容。
本书通过具体的编程实践案例,全面系统地讲述了机器学习涉及的核心内容。全书共分为13章,包括机器学习概述、基于OpenCV的数据处理、监督学习、无监督学习、数据表示和特征工程、基于决策树的医疗诊断、基于支持向量机的行人检测、基于贝叶斯学习的垃圾邮件过滤、基于深度学习的手写数字分类、集成分类方法、模型选择与超参数调优、OpenCV 4.0中的OpenVINO工具包等内容。
为了便于学习,作者在GitHub上提供了相关用例的完整源代码,供读者下载使用。通过书中提供的用例代码,读者可以快速熟悉并掌握机器学习领域的相关知识。本书既适合想要从事机器学习及其相关领域研发的初学者,又适合致力于机器学习研究的高层次读者。对于初次接触机器学习及其相关领域的人员,在阅读本书前,建议预先阅读Python编程的相关书籍,或者学习有关Python编程的在线教程。
本书由重庆邮电大学教师刘冰博士历时4个多月翻译完成。为了能够准确地完成本书的翻译,译者查阅了大量有关机器学习、深度学习以及OpenCV 4.0等方面的中外文图书资料。但因水平有限,译文中难免存在疏漏,恳请读者批评指正。
感谢机械工业出版社华章分社的编辑,是他们的严格要求,使本书得以高质量出版。

刘冰
liubing@cqupt.edu.cn

图书目录

译者序
前言
作者简介
审校者简介
第一部分 机器学习与OpenCV的基础知识
第1章 机器学习体验 2
1.1 技术需求 3
1.2 开始机器学习 3
1.3 机器学习可以解决的问题 4
1.4 开始使用Python 5
1.5 开始使用OpenCV 6
1.6 安装 6
1.6.1 获取本书的最新代码 7
1.6.2 了解Python的Anaconda发行版 8
1.6.3 在conda环境中安装OpenCV 9
1.6.4 安装验证 10
1.6.5 OpenCV的ml模块概览 12
1.7 机器学习的应用 13
1.8 OpenCV 4.0的新功能 13
1.9 本章小结 14
第2章 用OpenCV处理数据 15
2.1 技术需求 15
2.2 理解机器学习的工作流程 16
2.3 使用OpenCV和Python处理数据 18
2.3.1 开始一个新的IPython或Jupyter会话 18
2.3.2 使用Python的NumPy包处理数据 20
2.3.3 用Python加载外部数据集 24
2.3.4 使用Matplotlib可视化数据 25
2.3.5 使用C++中的OpenCV TrainData容器处理数据 29
2.4 本章小结 30
第3章 监督学习的第一步 31
3.1 技术需求 31
3.2 理解监督学习 32
3.2.1 看看OpenCV中的监督学习 33
3.2.2 用评分函数度量模型性能 33
3.3 使用分类模型预测类标签 39
3.3.1 理解k-NN算法 40
3.3.2 用OpenCV实现k-NN 40
3.4 使用回归模型预测连续的结果 47
3.4.1 理解线性回归 47
3.4.2 OpenCV中的线性回归 48
3.4.3 使用线性回归预测波士顿房价 51
3.4.4 Lasso回归和岭回归的应用 54
3.5 使用逻辑回归分类鸢尾花的种类 55
3.5.1 理解逻辑回归 55
3.5.2 加载训练数据 56
3.5.3 使其成为一个二值分类问题 57
3.5.4 数据检查 57
3.5.5 将数据拆分成训练集和测试集 58
3.5.6 训练分类器 58
3.5.7 测试分类器 59
3.6 本章小结 59
第4章 数据表示和特征工程 60
4.1 技术需求 61
4.2 理解特征工程 61
4.3 数据预处理 62
4.3.1 特征标准化 62
4.3.2 特征归一化 63
4.3.3 将特征缩放到一个范围 64
4.3.4 特征二值化 64
4.3.5 缺失数据的处理 65
4.4 理解降维 66
4.4.1 用OpenCV实现主成分分析 67
4.4.2 实现独立成分分析 70
4.4.3 实现非负矩阵分解 71
4.4.4 使用t-分布随机邻域嵌入可视化降维 72
4.5 类别变量的表示 74
4.6 文本特征的表示 75
4.7 图像的表示 77
4.7.1 使用颜色空间 77
4.7.2 检测图像中的角点 79
4.7.3 使用star检测器和BRIEF描述符 82
4.7.4 使用面向FAST和可旋转的BRIEF 84
4.8 本章小结 85
第二部分 基于OpenCV的运算
第5章 基于决策树进行医疗诊断 88
5.1 技术需求 88
5.2 理解决策树 89
5.2.1 构建我们的第一棵决策树 91
5.2.2 可视化一棵经过训练的决策树 97
5.2.3 探究决策树的内部工作原理 99
5.2.4 评估特征的重要性 100
5.2.5 理解决策规则 101
5.2.6 控制决策树的复杂度 102
5.3 使用决策树诊断乳腺癌 102
5.3.1 加载数据集 103
5.3.2 构建决策树 104
5.4 使用决策树进行回归 108
5.5 本章小结 111
第6章 利用支持向量机进行行人检测 112
6.1 技术需求 113
6.2 理解线性SVM 113
6.2.1 学习最优决策边界 113
6.2.2 实现我们的第一个SVM 115
6.3 处理非线性决策边界 120
6.3.1 理解核技巧 121
6.3.2 了解我们的核 121
6.3.3 实现非线性SVM 122
6.4 检测自然场景中的行人 123
6.4.1 获取数据集 124
6.4.2 面向梯度的直方图概述 126
6.4.3 生成负样本 127
6.4.4 实现SVM 128
6.4.5 bootstrapping模型 129
6.4.6 检测更大图像中的行人 130
6.4.7 进一步完善模型 132
6.5 使用SVM的多类分类 133
6.5.1 关于数据 134
6.5.2 属性信息 134
6.6 本章小结 136
第7章 利用贝叶斯学习实现一个垃圾邮件过滤器 137
7.1 技术需求 138
7.2 理解贝叶斯推理 138
7.2.1 概率理论概述 138
7.2.2 理解贝叶斯定理 139
7.2.3 理解朴素贝叶斯分类器 142
7.3 实现第一个贝叶斯分类器 143
7.3.1 创建一个玩具数据集 143
7.3.2 使用普通贝叶斯分类器对数据进行分类 144
7.3.3 使用朴素贝叶斯分类器对数据进行分类 147
7.3.4 可视化条件概率 147
7.4 使用朴素贝叶斯分类器分类邮件 149
7.4.1 加载数据集 150
7.4.2 使用pandas建立一个数据矩阵 152
7.4.3 数据预处理 153
7.4.4 训练一个普通贝叶斯分类器 153
7.4.5 在完整数据集上训练 154
7.4.6 使用n-grams提升结果 154
7.4.7 使用TF-IDF提升结果 155
7.5 本章小结 156
第8章 利用无监督学习发现隐藏结构 157
8.1 技术需求 157
8.2 理解无监督学习 158
8.3 理解k-均值聚类 158
8.4 理解最大期望 161
8.4.1 实现最大期望解决方案 162
8.4.2 了解最大期望的局限性 164
8.5 使用k-均值压缩颜色空间 169
8.5.1 可视化真彩色调色板 170
8.5.2 使用k-均值减少调色板的颜色 172
8.6 使用k-均值分类手写数字 174
8.6.1 加载数据集 175
8.6.2 运行k-均值 175
8.7 将聚类组织为层次树 176
8.7.1 理解层次聚类 177
8.7.2 实现凝聚层次聚类 178
8.7.3 聚类算法比较 179
8.8 本章小结 180
第三部分 基于OpenCV的高级机器学习
第9章 使用深度学习分类手写数字 182
9.1 技术需求 182
9.2 理解McCulloch-Pitts神经元 183
9.3 理解感知器 185
9.4 实现第一个感知器 187
9.4.1 生成一个玩具数据集 188
9.4.2 拟合感知器和数据 189
9.4.3 评估感知器分类器 190
9.4.4 将感知器应用于非线性可分的数据 191
9.5 理解多层感知器 193
9.5.1 理解梯度下降 194
9.5.2 基于反向传播训练多层感知器 196
9.5.3 用OpenCV实现一个多层感知器 197
9.6 结识深度学习 202
9.7 分类手写数字 205
9.7.1 加载MNIST数据集 205
9.7.2 预处理MNIST数据集 206
9.7.3 使用OpenCV训练一个多层感知器 207
9.7.4 使用Keras训练深度神经网络 208
9.8 本章小结 211
第10章 集成分类方法 212
10.1 技术需求 213
10.2 理解集成方法 213
10.2.1 理解平均集成 214
10.2.2 理解boosting集成 217
10.2.3 理解叠加集成 219
10.3 将决策树组合成随机森林 220
10.3.1 理解决策树的缺点 220
10.3.2 实现第一个随机森林 224
10.3.3 用scikit-learn实现一个随机森林 225
10.3.4 实现超随机树 226
10.4 利用随机森林进行人脸识别 228
10.4.1 加载数据集 228
10.4.2 预处理数据集 229
10.4.3 随机森林的训练和测试 230
10.5 实现AdaBoost 232
10.5.1 用OpenCV实现AdaBoost 232
10.5.2 用scikit-learn实现AdaBoost 233
10.6 把各种模型组合成一个投票分类器 234
10.6.1 理解各种投票方案 234
10.6.2 实现一个投票分类器 235
10.6.3 简单多数 236
10.7 本章小结 237
第11章 选择正确的模型与超参数调优 238
11.1 技术需求 239
11.2 模型评估 239
11.2.1 模型评估的错误方式 239
11.2.2 模型评估的正确方式 240
11.2.3 选择最佳模型 241
11.3 理解交叉验证 244
11.3.1 用OpenCV手动实现交叉验证 246
11.3.2 用scikit-learn进行k折交叉验证 247
11.3.3 实现留一法交叉验证 247
11.4 利用bootstrapping评估鲁棒性 248
11.5 评估结果的显著性 250
11.5.1 实现Student t-检验 251
11.5.2 实现McNemar检验 252
11.6 基于网格搜索的超参数调优 253
11.6.1 实现一个简单的网格搜索 254
11.6.2 理解验证集的值 255
11.6.3 网格搜索与交叉验证结合 256
11.6.4 网格搜索与嵌套交叉验证结合 258
11.7 利用各种评估指标对模型评分 259
11.7.1 选择正确的分类器评估指标 259
11.7.2 选择正确的回归评估指标 260
11.8 将算法链接起来形成管道 260
11.8.1 用scikit-learn实现管道 261
11.8.2 在网格搜索中使用管道 262
11.9 本章小结 263
第12章 使用基于OpenCV的OpenVINO 264
12.1 技术需求 264
12.2 OpenVINO简介 265
12.3 OpenVINO工具包安装 265
12.4 交互式人脸检测演示 266
12.5 使用基于OpenCV的OpenVINO推理引擎 267
12.6 使用基于OpenCV的OpenVINO模型组 268
12.7 使用OpenCV和OpenVINO推理引擎进行图像分类 269
12.7.1 利用OpenVINO进行图像分类 270
12.7.2 利用OpenCV和OpenVINO进行图像分类 271
12.8 本章小结 273
第13章 尾声 274
13.1 技术需求 274
13.2 机器学习问题的解决方案 275
13.3 构建自己的估计器 276
13.3.1 用C++编写自己的基于OpenCV的分类器 276
13.3.2 用Python编写自己的基于scikit-learn的分类器 278
13.4 接下来要做的工作 280
13.5 本章小结 281

教学资源推荐
作者: 赵涓涓 强彦 主编
作者: [意] 法布里奇奥·里古齐(Fabrizio Riguzzi) 著
作者: Sergios Theodoridis Konstantinos Koutroumbas
作者: 汪荣贵 编著
参考读物推荐
作者: [法] 泽维尔·布里(Xavier Bourry), [美] 佐佐木凯(Kai Sasaki), [奥地利] 克里斯托夫·科纳(Christoph K?rner), [日] 中野礼一郎(Reiichiro Nakano) 著
作者: 赵国生 王健 编著
作者: 星环科技人工智能平台团队 编著