机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)

作者
[印] 阿迪蒂亚·夏尔马(Aditya Sharma)[印] 维什韦什·拉维·什里马利(Vishwesh Ravi Shrimali) [美] 迈克尔·贝耶勒(Michael Beyeler)
丛书名
智能系统与技术丛书
出版社
机械工业出版社
ISBN
9787111668268
简要
简介
内容简介书籍计算机书籍 本书通过具体的编程实践案例,全面系统地讲述了机器学习涉及的核心内容。首先介绍新特性以及安装OpenCV 4构建计算机视觉应用程序。你将探索机器学习的基础知识,学习设计用于图像处理的各种算法。本书将逐步介绍有监督学习和无监督学习。你将获得使用Python中的scikit-learn开发各种机器学习应用程序的实践经验。后续章节将重点介绍决策树、支持向量机、贝叶斯学习等各种机器学习算法,以及如何将这些算法应用于目标检测等计算机视觉操作。然后,你将深入研究深度学习和集成学习,并探索它们在现实世界中的应用。最后,你将学习用于构建图像处理系统的最新的Intel OpenVINO。
目录
译者序
前言
作者简介
审校者简介
第一部分 机器学习与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




有问题微信扫码联系

推荐

车牌查询
桂ICP备20004708号-3