OpenCV 4機器學習算法原理與編程實戰
OpenCV 4機器學習算法原理與編程實戰
https://shopee.tw/9787121408304%E3%80%903dWoo%E5%A4%A7%E5%AD%B8%E7%B0%A1%E9%AB%94%E9%9B%BB%E5%AD%90%E5%B7%A5%E6%A5%AD%E3%80%91OpenCV-4%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86%E8%88%87%E7%B7%A8%E7%A8%8B%E5%AF%A6%E6%88%B0-i.14066035.8176433280?position=2
https://shopee.tw/9787121408304%E3%80%903dWoo%E5%A4%A7%E5%AD%B8%E7%B0%A1%E9%AB%94%E9%9B%BB%E5%AD%90%E5%B7%A5%E6%A5%AD%E3%80%91OpenCV-4%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86%E8%88%87%E7%B7%A8%E7%A8%8B%E5%AF%A6%E6%88%B0-i.14066035.8176433280?position=4
http://www.broadview.com.cn/book/5229
書本範例: https://pan.baidu.com/s/1lmzA8KYbBQA0GZx8abfD5Q [1w6q] – 已下載
單純範例原始碼收藏: https://github.com/jash-git/Jash-good-idea-20210816-001/tree/main/OpenCV%204%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86%E8%88%87%E7%B7%A8%E7%A8%8B%E5%AF%A6%E6%88%B0
前言:
從事機器學習工作的研究者關注的問題是計算機程序如何隨著經驗積累自動地提高性能。機器學習算法已成功應用于模式識別、通信、自動化控制、金融、生物信息學和計算機視覺等眾多領域。近年來,深度學習技術的進步,更是推動了計算機視覺領域的研究進展并引發了行業應用的巨大變革。
計算機視覺指的是通過分析輸入圖像或圖像序列,生成對被成像物體或場景的描述,用于完成具體的任務,如邊緣提取、圖像恢復、三維重建、特征匹配、運動估計、目標檢測等。OpenCV(Open Source Computer Vision)是計算機視覺領域最重要的開源函數庫,其中不僅包括了眾多圖像處理和視頻分析算法,還包含了經典機器學習算法和深度學習算法庫。這些機器學習算法在計算機視覺的圖像分類、目標檢測、目標跟蹤和光學字符檢測識別等任務中扮演了關鍵角色。深度機器學習算法庫是OpenCV的重要組成部分,其代碼使用便捷,非常適合研究與項目開發。
目前,介紹機器學習的圖書大致可分為理論與實戰兩類,且大多數應用類圖書中的案例使用Python或MATLAB編程實現。編寫本書的初衷是為讀者拉近機器學習算法原理與C++編程實戰之間的距離。OpenCV的機器學習與深度學習模塊在機器學習理論與編程實戰之間架設了一座橋梁。讀者通過閱讀本書,可以在理解算法原理的基礎上,通過示例代碼提升基于C++語言的機器學習算法編程實戰能力。
本書以OpenCV 4為工具,全面介紹了機器學習算法原理、代碼實現與應用示例。第1章和第2章介紹OpenCV 4的基礎知識與基本圖像操作;第3章講解機器學習基礎知識;第4章從最簡單的K-means和KNN入手,介紹聚類、分類與回歸算法的原理及應用;第5~7章介紹決策樹及其改進算法——隨機森林和Boosting算法;第8章介紹應用廣泛的支持向量機及應用,并涉及一些基本的統計學習理論知識;第9~10章,重點介紹神經網絡與深度神經網絡,并通過圖像分類、目標檢測、實例分割、目標跟蹤、場景文本檢測和場景文本識別等不同類型的任務,介紹GoogLeNet、YOLOv4、Mask R-CNN、GOTURN、DB和CRNN等模型部署方法,其中不乏近年出現的高性能模型。
本書基本聚焦于機器學習在計算機視覺領域的應用,不要求讀者具有相應的知識背景,在必要時書中會介紹相關的基本概念。因此,本書既可以作為相關專業學生的實驗教材,也可以作為研究人員或工程技術人員的參考資料。
本書利用業余時間編寫完成,特別感謝家人給予的支持,感謝電子工業出版社編輯安娜的鼓勵與辛勤付出。
由于機器學習與機器視覺領域理論體系龐大、應用領域廣闊、技術發展迅速,受作者水平所限,在內容選擇、算法原理與代碼分析等方面難免存在不足之處,請讀者批評指正。
朱斌
內容簡介:
本書主要面向OpenCV領域的研究與開發人員,采用原理結合實戰的方式,介紹OpenCV 4的機器學習算法模塊與深度神經網絡模塊中的核心算法原理與C++編程實戰。全書共10章, 第1~3章, 介紹OpenCV 4的基礎知識、基本圖像操作和機器學習基礎知識;第4~8章,介紹K-means、KNN、決策樹、隨機森林、Boosting算法和支持向量機等機器學習算法與編程實戰;第9~10章,介紹神經網絡與深度神經網絡的基本原理與編程實戰,并提供了不同深度學習模型的部署示例代碼。
目錄:
第1章 概述 1
1.1 OpenCV簡述 1
1.2 OpenCV的功能 1
1.3 OpenCV中的機器學習與深度神經網絡模塊 2
1.4 基本數據類型 2
1.4.1 數據類型概述 2
1.4.2 cv::Vec類 3
1.4.3 cv::Point類 6
1.4.4 cv::Scalar類 8
1.4.5 cv::Size類 9
1.4.6 cv::Rect類 9
1.4.7 cv::RotatedRect類 13
1.4.8 cv::Mat類 14
1.4.9 基本矩陣運算 19
參考文獻 22
第2章 OpenCV在機器學習任務中的基本圖像操作 23
2.1 基本圖像操作 23
2.1.1 讀取、顯示和存儲圖像 23
2.1.2 顏色空間轉換 30
2.1.3 圖像的幾何變換 36
2.1.4 直方圖均衡化 49
2.1.5 標注文字和矩形框 57
2.2 基本視頻操作 60
2.2.1 讀取和播放視頻文件 61
2.2.2 處理視頻文件 62
2.2.3 存儲視頻文件 65
參考文獻 67
第3章 機器學習的基本原理與OpenCV機器學習模塊 69
3.1 機器學習的基本概念 69
3.1.1 機器學習的定義 69
3.1.2 機器學習的分類 70
3.2 機器學習的一般流程 73
3.2.1 機器學習流程 73
3.2.2 數據集 74
3.2.3 偏差與方差 77
3.2.4 評估分類器性能的方法 79
3.3 邏輯回歸分類示例 80
3.3.1 圖像數據與數據表示 81
3.3.2 邏輯回歸模型 82
3.3.3 邏輯回歸的損失函數 83
3.4 OpenCV支持的機器學習算法 84
3.4.1 機器學習模塊的結構 84
3.4.2 機器學習模塊中的算法 85
3.4.3 數據集準備 87
3.4.4 特征選擇 88
參考文獻 89
第4章 K-means和KNN 90
4.1 算法原理 90
4.1.1 K-means原理 90
4.1.2 KNN原理 92
4.2 OpenCV實現 95
4.2.1 K-means的實現 95
4.2.2 KNN的實現 97
4.3 應用示例 99
4.3.1 K-means聚類示例 99
4.3.2 KNN手寫數字識別示例 106
4.3.3 應用提示 112
參考文獻 113
第5章 決策樹 114
5.1 決策樹原理 114
5.1.1 決策樹的基本思想 114
5.1.2 決策樹的表示方法 114
5.1.3 最佳切分屬性的選擇 116
5.1.4 停止標準 123
5.1.5 剪枝 123
5.2 OpenCV實現 123
5.2.1 創建決策樹 123
5.2.2 訓練決策樹 126
5.2.3 使用決策樹預測 127
5.3 應用示例 129
5.3.1 蘑菇可食性分類 129
5.3.2 預測波士頓房價 135
5.3.3 應用提示 142
參考文獻 142
第6章 隨機森林 143
6.1 隨機森林原理 143
6.1.1 隨機森林的基本思想 143
6.1.2 Bagging算法 143
6.2 OpenCV實現 146
6.2.1 OpenCV中的隨機森林 146
6.2.2 創建隨機森林 147
6.2.3 訓練隨機森林 148
6.2.4 使用隨機森林預測 148
6.3 應用示例 148
6.3.1 蘑菇可食性分類 149
6.3.2 預測波士頓房價 153
6.3.3 應用提示 158
參考文獻 158
第7章 Boosting算法 159
7.1 Boosting算法原理 159
7.1.1 Boosting算法的基本思想 159
7.1.2 Boosting算法 159
7.1.3 AdaBoost算法 160
7.2 OpenCV實現 164
7.2.1 創建AdaBoost模型 164
7.2.2 訓練AdaBoost模型 166
7.2.3 使用AdaBoost模型預測 166
7.3 應用示例 166
7.3.1 蘑菇可食性分類 167
7.3.2 英文字母分類問題 169
7.3.3 應用提示 174
參考文獻 174
第8章 支持向量機 175
8.1 支持向量機原理 175
8.1.1 統計學習理論概述 175
8.1.2 線性SVM算法基本原理 179
8.1.3 非線性SVM算法的基本原理 190
8.1.4 SVM回歸算法的基本原理 192
8.1.5 SVM算法執行SRM準則的解釋 194
8.2 OpenCV實現 195
8.2.1 OpenCV中的SVM算法 195
8.2.2 創建SVM模型 197
8.2.3 訓練SVM模型 199
8.2.4 使用SVM模型預測 202
8.3 應用示例 203
8.3.1 使用HOG特征與SVM算法識別手寫數字 203
8.3.2 應用提示 213
參考文獻 214
第9章 神經網絡 215
9.1 神經網絡算法原理 215
9.1.1 神經網絡的結構與表示 216
9.1.2 單隱層前饋神經網絡 220
9.1.3 多隱層前饋神經網絡 222
9.1.4 梯度下降法 225
9.1.5 反向傳播算法 229
9.2 OpenCV實現 234
9.2.1 OpenCV中的MLP算法 234
9.2.2 創建MLP模型 235
9.2.3 訓練MLP模型 237
9.2.4 使用MLP模型預測 239
9.3 應用示例 239
9.3.1 使用神經網絡識別手寫數字 239
9.3.2 應用提示 251
參考文獻 251
第10章 深度神經網絡 252
10.1 卷積神經網絡的基本原理 253
10.1.1 卷積神經網絡的結構 254
10.1.2 卷積層 255
10.1.3 池化 262
10.1.4 Softmax層 263
10.1.5 CNN特征學習的過程 263
10.1.6 CNN特征學習的原理 266
10.2 OpenCV的DNN模塊 268
10.2.1 OpenCV支持的深度學習框架 269
10.2.2 支持的層類型 269
10.2.3 編譯支持GPU加速的OpenCV 269
10.2.4 DNN模塊的使用 274
10.3 應用示例 286
10.3.1 典型計算機視覺任務 286
10.3.2 使用GoogLeNet實現圖像分類 289
10.3.3 使用YOLOv4實現目標檢測 295
10.3.4 使用Mask R-CNN實現實例分割 306
10.3.5 使用GOTURN模型實現目標跟蹤 315
10.3.6 使用DB算法實現場景文本檢測 319
10.3.7 使用CRNN實現場景文本識別 327
10.3.8 應用提示 338
參考文獻 339
—-
目录
第1章 概述 1
1.1 OpenCV简述 1
1.2 OpenCV的功能 1
1.3 OpenCV中的机器学习与深度神经网络模块 2
1.4 基本数据类型 2
1.4.1 数据类型概述 2
1.4.2 cv::Vec类 3
1.4.3 cv::Point类 6
1.4.4 cv::Scalar类 8
1.4.5 cv::Size类 9
1.4.6 cv::Rect类 9
1.4.7 cv::RotatedRect类 13
1.4.8 cv::Mat类 14
1.4.9 基本矩阵运算 19
参考文献 22
第2章 OpenCV在机器学习任务中的基本图像操作 23
2.1 基本图像操作 23
2.1.1 读取、显示和存储图像 23
2.1.2 颜色空间转换 30
2.1.3 图像的几何变换 36
2.1.4 直方图均衡化 49
2.1.5 标注文字和矩形框 57
2.2 基本视频操作 60
2.2.1 读取和播放视频文件 61
2.2.2 处理视频文件 62
2.2.3 存储视频文件 65
参考文献 67
第3章 机器学习的基本原理与OpenCV机器学习模块 69
3.1 机器学习的基本概念 69
3.1.1 机器学习的定义 69
3.1.2 机器学习的分类 70
3.2 机器学习的一般流程 73
3.2.1 机器学习流程 73
3.2.2 数据集 74
3.2.3 偏差与方差 77
3.2.4 评估分类器性能的方法 79
3.3 逻辑回归分类示例 80
3.3.1 图像数据与数据表示 81
3.3.2 逻辑回归模型 82
3.3.3 逻辑回归的损失函数 83
3.4 OpenCV支持的机器学习算法 84
3.4.1 机器学习模块的结构 84
3.4.2 机器学习模块中的算法 85
3.4.3 数据集准备 87
3.4.4 特征选择 88
参考文献 89
第4章 K-means和KNN 90
4.1 算法原理 90
4.1.1 K-means原理 90
4.1.2 KNN原理 92
4.2 OpenCV实现 95
4.2.1 K-means的实现 95
4.2.2 KNN的实现 97
4.3 应用示例 99
4.3.1 K-means聚类示例 99
4.3.2 KNN手写数字识别示例 106
4.3.3 应用提示 112
参考文献 113
第5章 决策树 114
5.1 决策树原理 114
5.1.1 决策树的基本思想 114
5.1.2 决策树的表示方法 114
5.1.3 最佳切分属性的选择 116
5.1.4 停止标准 123
5.1.5 剪枝 123
5.2 OpenCV实现 123
5.2.1 创建决策树 123
5.2.2 训练决策树 126
5.2.3 使用决策树预测 127
5.3 应用示例 129
5.3.1 蘑菇可食性分类 129
5.3.2 预测波士顿房价 135
5.3.3 应用提示 142
参考文献 142
第6章 随机森林 143
6.1 随机森林原理 143
6.1.1 随机森林的基本思想 143
6.1.2 Bagging算法 143
6.2 OpenCV实现 146
6.2.1 OpenCV中的随机森林 146
6.2.2 创建随机森林 147
6.2.3 训练随机森林 148
6.2.4 使用随机森林预测 148
6.3 应用示例 148
6.3.1 蘑菇可食性分类 149
6.3.2 预测波士顿房价 153
6.3.3 应用提示 158
参考文献 158
第7章 Boosting算法 159
7.1 Boosting算法原理 159
7.1.1 Boosting算法的基本思想 159
7.1.2 Boosting算法 159
7.1.3 AdaBoost算法 160
7.2 OpenCV实现 164
7.2.1 创建AdaBoost模型 164
7.2.2 训练AdaBoost模型 166
7.2.3 使用AdaBoost模型预测 166
7.3 应用示例 166
7.3.1 蘑菇可食性分类 167
7.3.2 英文字母分类问题 169
7.3.3 应用提示 174
参考文献 174
第8章 支持向量机 175
8.1 支持向量机原理 175
8.1.1 统计学习理论概述 175
8.1.2 线性SVM算法基本原理 179
8.1.3 非线性SVM算法的基本原理 190
8.1.4 SVM回归算法的基本原理 192
8.1.5 SVM算法执行SRM准则的解释 194
8.2 OpenCV实现 195
8.2.1 OpenCV中的SVM算法 195
8.2.2 创建SVM模型 197
8.2.3 训练SVM模型 199
8.2.4 使用SVM模型预测 202
8.3 应用示例 203
8.3.1 使用HOG特征与SVM算法识别手写数字 203
8.3.2 应用提示 213
参考文献 214
第9章 神经网络 215
9.1 神经网络算法原理 215
9.1.1 神经网络的结构与表示 216
9.1.2 单隐层前馈神经网络 220
9.1.3 多隐层前馈神经网络 222
9.1.4 梯度下降法 225
9.1.5 反向传播算法 229
9.2 OpenCV实现 234
9.2.1 OpenCV中的MLP算法 234
9.2.2 创建MLP模型 235
9.2.3 训练MLP模型 237
9.2.4 使用MLP模型预测 239
9.3 应用示例 239
9.3.1 使用神经网络识别手写数字 239
9.3.2 应用提示 251
参考文献 251
第10章 深度神经网络 252
10.1 卷积神经网络的基本原理 253
10.1.1 卷积神经网络的结构 254
10.1.2 卷积层 255
10.1.3 池化 262
10.1.4 Softmax层 263
10.1.5 CNN特征学习的过程 263
10.1.6 CNN特征学习的原理 266
10.2 OpenCV的DNN模块 268
10.2.1 OpenCV支持的深度学习框架 269
10.2.2 支持的层类型 269
10.2.3 编译支持GPU加速的OpenCV 269
10.2.4 DNN模块的使用 274
10.3 应用示例 286
10.3.1 典型计算机视觉任务 286
10.3.2 使用GoogLeNet实现图像分类 289
10.3.3 使用YOLOv4实现目标检测 295
10.3.4 使用Mask R-CNN实现实例分割 306
10.3.5 使用GOTURN模型实现目标跟踪 315
10.3.6 使用DB算法实现场景文本检测 319
10.3.7 使用CRNN实现场景文本识别 327
10.3.8 应用提示 338
参考文献 339
——