| 作者 |
| 阿迪蒂亚·夏尔马 维什韦什·拉维·什里马利 迈克尔·贝耶勒 高敬鹏 江志烨 赵娜 |
| 丛书名 |
| 智能系统与技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782011181424 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)--------------------------- 本书通过具体的编程实践案例,全面系统地讲述了机器学习涉及的核心内容。首先介绍新特性以及安装OpenCV 4构建计算机视觉应用程序。你将探索机器学习的基础知识,学习设计用于图像处理的各种算法。本书将逐步介绍有监督学习和无监督学习。你将获得使用Python中的scikit-learn开发各种机器学习应用程序的实践经验。后续章节将重点介绍决策树、支持向量机、贝叶斯学习等各种机器学习算法,以及如何将这些算法应用于目标检测等计算机视觉操作。然后,你将深入研究深度学习和集成学习,并探索它们在现实世界中的应用。最后,你将学习用于构建图像处理系统的最新的Intel OpenVINO。 ---------------------------机器学习:基于OpenCV和Python的智能图像处理--------------------------- 本书以Python语言为蓝本,以OpenCV为框架,使用Anaconda搭建环境,通过丰富的实例,从实验、实践、实用的角度,详细叙述了运用Python和OpenCV实现智能图像处理的过程。全书共12章,主要内容包括智能图像处理入门、Python基础、图像处理基础、图像几何变换、图像直方图处理、图像平滑滤波处理、图像阈值处理、图像形态学处理、图像分割处理、图像梯度及边缘检测、图像轮廓检测与拟合、人脸识别实现等,全面阐述了智能图像处理的理论基础和实现过程。 本书侧重基础、易学易懂,各章节既相对独立又前后关联,其最大的特点就是打破了传统书籍的讲解方法,在介绍各部分理论基础的同时,搭配具体实例,通过对相关程序的详细讲解,帮助读者进一步加深对理论基础的理解。本书每章配有习题,以指导读者深入学习智能图像处理技术。 |
| 目录 |
---------------------------机器学习:使用OpenCV、Python和scikit-learn进行智能图像处理(原书第2版)--------------------------- 译者序 前言 作者简介 审校者简介 第一部分 机器学习与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 ---------------------------机器学习:基于OpenCV和Python的智能图像处理--------------------------- 前言 第1章 智能图像处理入门 1 1.1 智能图像处理概述 1 1.2 环境搭建 2 1.2.1 安装Python 2 1.2.2 安装PyCharm 8 1.2.3 PyCharm的初始化 12 1.2.4 OpenCV及常用库的配置 15 1.3 思考与练习 17 第2章 Python基础 18 2.1 数据类型 18 2.1.1 数值类型 18 2.1.2 字符串类型 20 2.1.3 布尔类型 20 2.2 变量与常量 21 2.3 运算符 21 2.3.1 运算符简介 21 2.3.2 运算符优先级 21 2.4 选择与循环 22 2.4.1 if语句 22 2.4.2 while循环 25 2.4.3 for循环 27 2.4.4 break和continue语句 29 2.5 列表与元组 31 2.5.1 创建 31 2.5.2 查询 32 2.5.3 修改 33 2.5.4 删除 34 2.6 字典 35 2.6.1 字典的创建 35 2.6.2 字典的常规操作 36 2.6.3 字典的遍历 37 2.7 函数 38 2.7.1 函数的定义与调用 38 2.7.2 参数传递 40 2.8 面向对象编程 42 2.8.1 类与对象 42 2.8.2 继承与多态 44 2.9 思考与练习 46 第3章 图像处理基础 48 3.1 图像的基本表示方法 48 3.1.1 二值图像 48 3.1.2 灰度图像 48 3.1.3 彩色图像 49 3.2 图像处理的基本操作 50 3.2.1 图像的读取、显示和保存 50 3.2.2 图像通道的基本操作 53 3.2.3 图像属性的获取 55 3.3 初识Numpy.array 56 3.4 图像运算 57 3.4.1 加法运算 57 3.4.2 减法运算 59 3.4.3 乘法运算 61 3.4.4 除法运算 63 3.4.5 逻辑运算 64 3.5 图像的色彩空间转换 68 3.5.1 色彩空间类型转换函数 68 3.5.2 RGB色彩空间 68 3.5.3 GRAY色彩空间 69 3.5.4 YCrCb色彩空间 70 3.5.5 HSV色彩空间 71 3.6 思考与练习 73 第4章 图像几何变换 74 4.1 仿射变换 74 4.1.1 平移 75 4.1.2 缩放 76 4.1.3 旋转 77 4.2 重映射 78 4.2.1 复制 78 4.2.2 绕x轴翻转 80 4.2.3 绕y轴翻转 82 4.2.4 绕x轴与y轴翻转 85 4.3 投影变换 87 4.3.1 原理简介 87 4.3.2 Python实现 87 4.4 极坐标变换 89 4.4.1 原理简介 89 4.4.2 Python实现 90 4.5 思考与练习 93 第5章 图像直方图处理 94 5.1 直方图概述 94 5.2 直方图的绘制 95 5.2.1 用OpenCV绘制直方图 95 5.2.2 用pyplot绘制直方图 98 5.3 直方图正规化 99 5.3.1 正规化原理 99 5.3.2 Python实现 99 5.3.3 使用normalize实现 100 5.4 直方图均衡化 102 5.4.1 均衡化原理简介 102 5.4.2 Python实现 104 5.4.3 自适应直方图均衡化 108 5.5 思考与练习 110 第6章 图像平滑滤波处理 111 6.1 图像平滑概述 111 6.2 高斯滤波 112 6.2.1 原理简介 112 6.2.2 Python实现 113 6.3 均值滤波 114 6.3.1 原理简介 114 6.3.2 Python实现 115 6.4 方框滤波 117 6.4.1 原理简介 117 6.4.2 Python实现 117 6.5 中值滤波 119 6.5.1 原理简介 119 6.5.2 Python实现 120 6.6 双边滤波 121 6.6.1 原理简介 121 6.6.2 Python实现 122 6.7 2D卷积核的实现 123 6.8 思考与练习 125 第7章 图像阈值处理 126 7.1 阈值处理概述 126 7.2 全局阈值处理 126 7.2.1 原理简介 126 7.2.2 OpenCV阈值函数cv2.threshold() 127 7.2.3 阈值分割实例 127 7.3 局部阈值处理 136 7.3.1 原理简介 136 7.3.2 cv2.adaptiveThreshold()函数 137 7.4 Otsu阈值处理 139 7.4.1 原理简介 139 7.4.2 Python实现 140 7.5 思考与练习 141 第8章 图像形态学处理 142 8.1 腐蚀 142 8.1.1 原理简介 142 8.1.2 Python实现 143 8.2 膨胀 145 8.2.1 原理简介 145 8.2.2 Python实现 146 8.3 形态学梯度运算 148 8.3.1 原理简介 148 8.3.2 Python实现 148 8.4 开运算与闭运算 149 8.4.1 原理简介 150 8.4.2 Python实现 150 8.5 黑帽与礼帽运算 153 8.5.1 原理简介 153 8.5.2 Python实现 154 8.6 思考与练习 155 第9章 图像分割处理 157 9.1 分水岭算法的介绍与实现 157 9.1.1 算法原理 157 9.1.2 OpenCV中的相关函数 158 9.2 图像的金字塔分割 165 9.2.1 图像金字塔简介 165 9.2.2 OpenCV中的相关函数 166 9.2.3 用金字塔算法实现图像分割 170 9.3 思考与练习 171 第10章 图像梯度及边缘检测 172 10.1 Sobel算子 172 10.1.1 原理简介 172 10.1.2 Python实现 173 10.2 Scharr算子 176 10.2.1 原理简介 176 10.2.2 Python实现 176 10.3 Canny边缘检测 179 10.3.1 原理简介 179 10.3.2 Python实现 180 10.4 Laplacian算子 182 10.4.1 原理简介 182 10.4.2 Python实现 182 10.5 高斯拉普拉斯边缘检测 184 10.5.1 原理简介 184 10.5.2 Python实现 185 10.6 思考与练习 187 第11章 图像轮廓检测与拟合 188 11.1 OpenCV中轮廓的查找与绘制 188 11.1.1 轮廓的查找与绘制 188 11.1.2 查找绘制轮廓的实例 189 11.2 OpenCV中轮廓的周长与面积 192 11.2.1 周长计算:cv2.arcLength()函数 192 11.2.2 面积计算:cv2.contourArea()函数 193 11.3 几何图形的最小外包与拟合 194 11.3.1 最小外包矩形 195 11.3.2 最小外包圆形 196 11.3.3 最小外包三角形 197 11.3.4 最小外包椭圆 199 11.3.5 最优拟合直线 200 11.4 霍夫检测 201 11.4.1 霍夫直线检测 201 11.4.2 霍夫圆检测 204 11.5 思考与练习 205 第12章 人脸识别实现 207 12.1 绘图基础 207 12.1.1 绘制直线:cv2.line()函数 207 12.1.2 绘制矩形:cv2.rectangle()函数 209 12.1.3 绘制圆形:cv2.circle()函数 210 12.1.4 绘制椭圆:cv2.ellipse()函数 212 12.1.5 在图形上绘制文字:cv2.putText()函数 213 12.2 人脸检测 214 12.2.1 OpenCV中级联分类器的使用 215 12.2.2 Python实现 215 12.3 人脸识别 217 12.3.1 原理简介 217 12.3.2 相关函数 217 12.3.3 LBPH人脸识别的Python实现 218 12.4 用Fisherfaces与EigenFaces算法进行人脸识别 220 12.4.1 相关函数 220 12.4.2 Python实现 221 12.5 思考与练习 223 |