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

机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)
作 者: 阿迪蒂亚·夏尔马 维什韦什·拉维·什里马利 迈克尔·贝耶勒
出版社: 机械工业出版社
丛编项: 智能系统与技术丛书
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  阿迪蒂亚·夏尔马(Aditya Sharma),罗伯特·博世(Robert Bosch)公司的一名高级工程师,致力于解决真实世界的自动计算机视觉问题。曾获得罗伯特·博世公司2019年人工智能编程马拉松的首名。在印度理工学院,他于2019年的ICIP和2019年的MICCAI上发表了有关深度学习医学成像的论文。在国际信息技术学院,他的工作主要是文档图像超分辨。他还是一个积极进取的作家,曾为DataCamp和LearnOpenCV撰写过很多有关机器学习和深度学习的文章。他不仅经营着自己的YouTube频道,还在NCVPRIPG会议(2017)以及阿里格尔穆斯林大学(Aligarh Muslim University)的深度学习研讨会上做过演讲。维什韦什·拉维·什里马利(Vishwesh Ravi Shrimali),于2018年毕业于彼拉尼博拉理工学院(BITS Pilani)机械工程专业。此后一直在BigVision LLC从事深度学习和计算机视觉方面的工作,还参与了官方OpenCV课程的创建。他对编程和人工智能有着浓厚的兴趣,并将其应用到机械工程项目中。他还在LearnOpenCV上写了多篇有关OpenCV和深度学习的博客。除了撰写博客和做项目,他喜欢散步和弹奏木吉他。迈克尔·贝耶勒(Michael Beyeler),是华盛顿大学神经工程和数据科学的博士后研究员,致力于仿生视觉的计算模型研究,以为盲人植入人工视网膜(仿生眼睛),改善盲人的感知体验。他的工作属于神经科学、计算机工程、计算机视觉和机器学习的交叉领域。他还是几个开源软件项目的主要贡献者,并在Python、C/C++、CUDA、MATLAB和Android等方面拥有专业的编程经验。迈克尔在加州大学欧文分校获得计算机科学博士学位,在瑞士苏黎世联邦理工学院获得生物医学工程硕士学位和电子工程学士学位。

内容简介

《机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)》是一本基于OpenCV4和Python的机器学习实战手册,既详细介绍机器学习及OpenCV相关的基础知识,又通过具体实例展示如何使用OpenCV和Python实现各种机器学习算法,并提供大量示例代码,可以帮助你掌握机器学习实用技巧,解决各种不同的机器学习和图像处理问题。《机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)》共13章:第1章简要介绍机器学习基础知识,并讲解如何安装OpenCV和Python工具;第2章介绍基本的OpenCV函数;第3章讨论监督学习算法,以及如何使用OpenCV和scikit-learn实现这些算法;第4章讨论数据表示和特征工程,并介绍OpenCV中提供的用于处理图像数据的常见特征提取技术;第5章展示如何使用OpenCV构建决策树进行医疗诊断;第6章讨论如何使用OpenCV构建支持向量机检测行人;第7章讨论朴素贝叶斯算法、多项式朴素贝叶斯等技术及实现,并展示如何使用贝叶斯学习实现垃圾邮件过滤;第8章讨论一些无监督学习算法;第9章详细讲解如何构建深度神经网络来分类手写数字;第10章介绍用于分类的随机森林、bagging方法和boosting方法等;第11章讨论如何通过模型选择和超参数调优来比较各种分类器的结果;第12章介绍OpenCV4.0中引入的OpenVINO工具包;第13章给出一些处理实际机器学习问题的提示和技巧。OpenCV是用于构建计算机视觉应用程序的一个开源库。《机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)》将全面介绍新发布的OpenCV4版本所提供的大量新特性和平台改进。首先,你将了解OpenCV4的新特性并安装OpenCV4来构建计算机视觉应用程序。然后,你将探索机器学习的基础知识,学习设计用于图像处理的各种算法,循序渐进地掌握监督学习和无监督学习,并将获得使用Python中的scikit-learn开发各种机器学习应用程序的实践经验。接着,你将学习决策树、支持向量机(SVM)、贝叶斯学习等各种机器学习算法,以及如何将这些算法应用于目标检测等计算机视觉操作。之后,你将深入研究深度学习和集成学习,并探索它们在现实世界中的应用,如手写数字分类和手势识别等。最后,你将学习用于...

图书目录

译者序

前言

作者简介

审校者简介

第一部分 机器学习与OpenCV的基础知识

第1章 机器学习体验2

11 技术需求3

12 开始机器学习3

13 机器学习可以解决的问题4

14 开始使用Python5

15 开始使用OpenCV6

16 安装6

161 获取本书的最新代码7

162 了解Python的Anaconda发行版8

163 在conda环境中安装OpenCV9

164 安装验证10

165 OpenCV的ml模块概览12

17 机器学习的应用13

18 OpenCV 40的新功能13

19 本章小结14

第2章 用OpenCV处理数据15

21 技术需求15

22 理解机器学习的工作流程16

23 使用OpenCV和Python处理数据18

231 开始一个新的IPython或Jupyter会话18

232 使用Python的NumPy包处理数据20

233 用Python加载外部数据集24

234 使用Matplotlib可视化数据25

235 使用C++中的OpenCV TrainData容器处理数据29

24 本章小结30

第3章 监督学习的第一步31

31 技术需求31

32 理解监督学习32

321 看看OpenCV中的监督学习33

322 用评分函数度量模型性能33

33 使用分类模型预测类标签39

331 理解k-NN算法40

332 用OpenCV实现k-NN40

34 使用回归模型预测连续的结果47

341 理解线性回归47

342 OpenCV中的线性回归48

343 使用线性回归预测波士顿房价51

344 Lasso回归和岭回归的应用54

35 使用逻辑回归分类鸢尾花的种类55

351 理解逻辑回归55

352 加载训练数据56

353 使其成为一个二值分类问题57

354 数据检查57

355 将数据拆分成训练集和测试集58

356 训练分类器58

357 测试分类器59

36 本章小结59

第4章 数据表示和特征工程60

41 技术需求61

42 理解特征工程61

43 数据预处理62

431 特征标准化62

432 特征归一化63

433 将特征缩放到一个范围64

434 特征二值化64

435 缺失数据的处理65

44 理解降维66

441 用OpenCV实现主成分分析67

442 实现独立成分分析70

443 实现非负矩阵分解71

444 使用t-分布随机邻域嵌入可视化降维72

45 类别变量的表示74

46 文本特征的表示75

47 图像的表示77

471 使用颜色空间77

472 检测图像中的角点79

473 使用star检测器和BRIEF描述符82

474 使用面向FAST和可旋转的BRIEF84

48 本章小结85

第二部分 基于OpenCV的运算

第5章 基于决策树进行医疗诊断88

51 技术需求88

52 理解决策树89

521 构建我们的第一棵决策树91

522 可视化一棵经过训练的决策树97

523 探究决策树的内部工作原理99

524 评估特征的重要性100

525 理解决策规则101

526 控制决策树的复杂度102

53 使用决策树诊断乳腺癌102

531 加载数据集103

532 构建决策树104

54 使用决策树进行回归108

55 本章小结111

第6章 利用支持向量机进行行人检测112

61 技术需求113

62 理解线性SVM113

621 学习最优决策边界113

622 实现我们的第一个SVM115

63 处理非线性决策边界120

631 理解核技巧121

632 了解我们的核121

633 实现非线性SVM122

64 检测自然场景中的行人123

641 获取数据集124

642 面向梯度的直方图概述126

643 生成负样本127

644 实现SVM128

645 bootstrapping模型129

646 检测更大图像中的行人130

647 进一步完善模型132

65 使用SVM的多类分类133

651 关于数据134

652 属性信息134

66 本章小结136

第7章 利用贝叶斯学习实现一个垃圾邮件过滤器137

71 技术需求138

72 理解贝叶斯推理138

721 概率理论概述138

722 理解贝叶斯定理139

723 理解朴素贝叶斯分类器142

73 实现第一个贝叶斯分类器143

731 创建一个玩具数据集143

732 使用普通贝叶斯分类器对数据进行分类144

733 使用朴素贝叶斯分类器对数据进行分类147

734 可视化条件概率147

74 使用朴素贝叶斯分类器分类邮件149

741 加载数据集150

742 使用pandas建立一个数据矩阵152

743 数据预处理153

744 训练一个普通贝叶斯分类器153

745 在完整数据集上训练154

746 使用n-grams提升结果154

747 使用TF-IDF提升结果155

75 本章小结156

第8章 利用无监督学习发现隐藏结构157

81 技术需求157

82 理解无监督学习158

83 理解k-均值聚类158

84 理解最大期望161

841 实现最大期望解决方案162

842 了解最大期望的局限性164

85 使用k-均值压缩颜色空间169

851 可视化真彩色调色板170

852 使用k-均值减少调色板的颜色172

86 使用k-均值分类手写数字174

861 加载数据集175

862 运行k-均值175

87 将聚类组织为层次树176

871 理解层次聚类177

872 实现凝聚层次聚类178

873 聚类算法比较179

88 本章小结180

第三部分 基于OpenCV的高级机器学习

第9章 使用深度学习分类手写数字182

91 技术需求182

92 理解McCulloch-Pitts神经元183

93 理解感知器185

94 实现第一个感知器187

941 生成一个玩具数据集188

942 拟合感知器和数据189

943 评估感知器分类器190

944 将感知器应用于非线性可分的数据191

95 理解多层感知器193

951 理解梯度下降194

952 基于反向传播训练多层感知器196

953 用OpenCV实现一个多层感知器197

96 结识深度学习202

97 分类手写数字205

971 加载MNIST数据集205

972 预处理MNIST数据集206

973 使用OpenCV训练一个多层感知器207

974 使用Keras训练深度神经网络208

98 本章小结211

第10章 集成分类方法212

101 技术需求213

102 理解集成方法213

1021 理解平均集成214

1022 理解boosting集成217

1023 理解叠加集成219

103 将决策树组合成随机森林220

1031 理解决策树的缺点220

1032 实现第一个随机森林224

1033 用scikit-learn实现一个随机森林225

1034 实现超随机树226

104 利用随机森林进行人脸识别228

1041 加载数据集228

1042 预处理数据集229

1043 随机森林的训练和测试230

105 实现AdaBoost232

1051 用OpenCV实现AdaBoost232

1052 用scikit-learn实现AdaBoost233

106 把各种模型组合成一个投票分类器234

1061 理解各种投票方案234

1062 实现一个投票分类器235

1063 简单多数236

107 本章小结237

第11章 选择正确的模型与超参数调优238

111 技术需求239

112 模型评估239

1121 模型评估的错误方式239

1122 模型评估的正确方式240

1123 选择最佳模型241

113 理解交叉验证244

1131 用OpenCV手动实现交叉验证246

1132 用scikit-learn进行k折交叉验证247

1133 实现留一法交叉验证247

114 利用bootstrapping评估鲁棒性248

115 评估结果的显著性250

1151 实现Student t-检验251

1152 实现McNemar检验252

116 基于网格搜索的超参数调优253

1161 实现一个简单的网格搜索254

1162 理解验证集的值255

1163 网格搜索与交叉验证结合256

1164 网格搜索与嵌套交叉验证结合258

117 利用各种评估指标对模型评分259

1171 选择正确的分类器评估指标259

1172 选择正确的回归评估指标260

118 将算法链接起来形成管道260

1181 用scikit-learn实现管道261

1182 在网格搜索中使用管道262

119 本章小结263

第12章 使用基于OpenCV的OpenVINO264

121 技术需求264

122 OpenVINO简介265

123 OpenVINO工具包安装265

124 交互式人脸检测演示266

125 使用基于OpenCV的OpenVINO推理引擎267

126 使用基于OpenCV的OpenVINO模型组268

127 使用OpenCV和OpenVINO推理引擎进行图像分类269

1271 利用OpenVINO进行图像分类270

1272 利用OpenCV和OpenVINO进行图像分类271

128 本章小结273

第13章 尾声274

131 技术需求274

132 机器学习问题的解决方案275

133 构建自己的估计器276

1331 用C++编写自己的基于OpenCV的分类器276

1332 用Python编写自己的基于scikit-learn的分类器278

134 接下来要做的工作280

135 本章小结281