機器學習:使用OpenCV、Python和scikit-learn進行智能圖像處理(原書第2版)
定 價:99 元
叢書名:智能系統(tǒng)與技術叢書
- 作者:[印] 阿迪蒂亞·夏爾馬(Aditya Sharma) [印] 維什韋什·拉維
- 出版時間:2020/11/1
- ISBN:9787111668268
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP181
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書通過具體的編程實踐案例,全面系統(tǒng)地講述了機器學習涉及的核心內容。首先介紹新特性以及安裝OpenCV 4構建計算機視覺應用程序。你將探索機器學習的基礎知識,學習設計用于圖像處理的各種算法。本書將逐步介紹有監(jiān)督學習和無監(jiān)督學習。你將獲得使用Python中的scikit-learn開發(fā)各種機器學習應用程序的實踐經(jīng)驗。后續(xù)章節(jié)將重點介紹決策樹、支持向量機、貝葉斯學習等各種機器學習算法,以及如何將這些算法應用于目標檢測等計算機視覺操作。然后,你將深入研究深度學習和集成學習,并探索它們在現(xiàn)實世界中的應用。*后,你將學習用于構建圖像處理系統(tǒng)的*新的Intel OpenVINO。
譯者序
前言
作者簡介
審校者簡介
第一部分 機器學習與OpenCV的基礎知識
第1章 機器學習體驗2
1.1 技術需求3
1.2 開始機器學習3
1.3 機器學習可以解決的問題4
1.4 開始使用Python5
1.5 開始使用OpenCV6
1.6 安裝6
1.6.1 獲取本書的最新代碼7
1.6.2 了解Python的Anaconda發(fā)行版8
1.6.3 在conda環(huán)境中安裝OpenCV9
1.6.4 安裝驗證10
1.6.5 OpenCV的ml模塊概覽12
1.7 機器學習的應用13
1.8 OpenCV 4.0的新功能13
1.9 本章小結14
第2章 用OpenCV處理數(shù)據(jù)15
2.1 技術需求15
2.2 理解機器學習的工作流程16
2.3 使用OpenCV和Python處理數(shù)據(jù)18
2.3.1 開始一個新的IPython或Jupyter會話18
2.3.2 使用Python的NumPy包處理數(shù)據(jù)20
2.3.3 用Python加載外部數(shù)據(jù)集24
2.3.4 使用Matplotlib可視化數(shù)據(jù)25
2.3.5 使用C++中的OpenCV TrainData容器處理數(shù)據(jù)29
2.4 本章小結30
第3章 監(jiān)督學習的第一步31
3.1 技術需求31
3.2 理解監(jiān)督學習32
3.2.1 看看OpenCV中的監(jiān)督學習33
3.2.2 用評分函數(shù)度量模型性能33
3.3 使用分類模型預測類標簽39
3.3.1 理解k-NN算法40
3.3.2 用OpenCV實現(xiàn)k-NN40
3.4 使用回歸模型預測連續(xù)的結果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 加載訓練數(shù)據(jù)56
3.5.3 使其成為一個二值分類問題57
3.5.4 數(shù)據(jù)檢查57
3.5.5 將數(shù)據(jù)拆分成訓練集和測試集58
3.5.6 訓練分類器58
3.5.7 測試分類器59
3.6 本章小結59
第4章 數(shù)據(jù)表示和特征工程60
4.1 技術需求61
4.2 理解特征工程61
4.3 數(shù)據(jù)預處理62
4.3.1 特征標準化62
4.3.2 特征歸一化63
4.3.3 將特征縮放到一個范圍64
4.3.4 特征二值化64
4.3.5 缺失數(shù)據(jù)的處理65
4.4 理解降維66
4.4.1 用OpenCV實現(xiàn)主成分分析67
4.4.2 實現(xiàn)獨立成分分析70
4.4.3 實現(xiàn)非負矩陣分解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和可旋轉的BRIEF84
4.8 本章小結85
第二部分 基于OpenCV的運算
第5章 基于決策樹進行醫(yī)療診斷88
5.1 技術需求88
5.2 理解決策樹89
5.2.1 構建我們的第一棵決策樹91
5.2.2 可視化一棵經(jīng)過訓練的決策樹97
5.2.3 探究決策樹的內部工作原理99
5.2.4 評估特征的重要性100
5.2.5 理解決策規(guī)則101
5.2.6 控制決策樹的復雜度102
5.3 使用決策樹診斷乳腺癌102
5.3.1 加載數(shù)據(jù)集103
5.3.2 構建決策樹104
5.4 使用決策樹進行回歸108
5.5 本章小結111
第6章 利用支持向量機進行行人檢測112
6.1 技術需求113
6.2 理解線性SVM113
6.2.1 學習最優(yōu)決策邊界113
6.2.2 實現(xiàn)我們的第一個SVM115
6.3 處理非線性決策邊界120
6.3.1 理解核技巧121
6.3.2 了解我們的核121
6.3.3 實現(xiàn)非線性SVM122
6.4 檢測自然場景中的行人123
6.4.1 獲取數(shù)據(jù)集124
6.4.2 面向梯度的直方圖概述126
6.4.3 生成負樣本127
6.4.4 實現(xiàn)SVM128
6.4.5 bootstrapping模型129
6.4.6 檢測更大圖像中的行人130
6.4.7 進一步完善模型132
6.5 使用SVM的多類分類133
6.5.1 關于數(shù)據(jù)134
6.5.2 屬性信息134
6.6 本章小結136
第7章 利用貝葉斯學習實現(xiàn)一個垃圾郵件過濾器137
7.1 技術需求138
7.2 理解貝葉斯推理138
7.2.1 概率理論概述138
7.2.2 理解貝葉斯定理139
7.2.3 理解樸素貝葉斯分類器142
7.3 實現(xiàn)第一個貝葉斯分類器143
7.3.1 創(chuàng)建一個玩具數(shù)據(jù)集143
7.3.2 使用普通貝葉斯分類器對數(shù)據(jù)進行分類144
7.3.3 使用樸素貝葉斯分類器對數(shù)據(jù)進行分類147
7.3.4 可視化條件概率147
7.4 使用樸素貝葉斯分類器分類郵件149
7.4.1 加載數(shù)據(jù)集150
7.4.2 使用pandas建立一個數(shù)據(jù)矩陣152
7.4.3 數(shù)據(jù)預處理153
7.4.4 訓練一個普通貝葉斯分類器153
7.4.5 在完整數(shù)據(jù)集上訓練154
7.4.6 使用n-grams提升結果154
7.4.7 使用TF-IDF提升結果155
7.5 本章小結156
第8章 利用無監(jiān)督學習發(fā)現(xiàn)隱藏結構157
8.1 技術需求157
8.2 理解無監(jiān)督學習158
8.3 理解k-均值聚類158
8.4 理解最大期望161
8.4.1 實現(xiàn)最大期望解決方案162
8.4.2 了解最大期望的局限性164
8.5 使用k-均值壓縮顏色空間169
8.5.1 可視化真彩色調色板170
8.5.2 使用k-均值減少調色板的顏色172
8.6 使用k-均值分類手寫數(shù)字174
8.6.1 加載數(shù)據(jù)集175
8.6.2 運行k-均值175
8.7 將聚類組織為層次樹176
8.7.1 理解層次聚類177
8.7.2 實現(xiàn)凝聚層次聚類178
8.7.3 聚類算法比較179
8.8 本章小結180
第三部分 基于OpenCV的高級機器學習
第9章 使用深度學習分類手寫數(shù)字182
9.1 技術需求182
9.2 理解McCulloch-Pitts神經(jīng)元183
9.3 理解感知器185
9.4 實現(xiàn)第一個感知器187
9.4.1 生成一個玩具數(shù)據(jù)集188
9.4.2 擬合感知器和數(shù)據(jù)189
9.4.3 評估感知器分類器190
9.4.4 將感知器應用于非線性可分的數(shù)據(jù)191
9.5 理解多層感知器193
9.5.1 理解梯度下降194
9.5.2 基于反向傳播訓練多層感知器196
9.5.3 用OpenCV實現(xiàn)一個多層感知器197
9.6 結識深度學習202
9.7 分類手寫數(shù)字205
9.7.1 加載MNIST數(shù)據(jù)集205
9.7.2 預處理MNIST數(shù)據(jù)集206
9.7.3 使用OpenCV訓練一個多層感知器207
9.7.4 使用Keras訓練深度神經(jīng)網(wǎng)絡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 實現(xiàn)第一個隨機森林224
10.3.3 用scikit-learn實現(xiàn)一個隨機森林225
10.3.4 實現(xiàn)超隨機樹226
10.4 利用隨機森林進行人臉識別228
10.4.1 加載數(shù)據(jù)集228
10.4.2 預處理數(shù)據(jù)集229
10.4.3 隨機森林的訓練和測試230
10.5 實現(xiàn)AdaBoost232
10.5.1 用OpenCV實現(xiàn)AdaBoost232
10.5.2 用scikit-learn實現(xiàn)AdaBoost233
10.6 把各種模型組合成一個投票分類器234
10.6.1 理解各種投票方案234
10.6.2 實現(xiàn)一個投票分類器235
10.6.3 簡單多數(shù)236
10.7 本章小結237
第11章 選擇正確的模型與超參數(shù)調優(yōu)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手動實現(xiàn)交叉驗證246
11.3.2 用scikit-learn進行k折交叉驗證247
11.3.3 實現(xiàn)留一法交叉驗證247
11.4 利用bootstrapping評估魯棒性248
11.5 評估結果的顯著性250
11.5.1 實現(xiàn)Student t-檢驗251
11.5.2 實現(xiàn)McNemar檢驗252
11.6 基于網(wǎng)格搜索的超參數(shù)調優(yōu)253
11.6.1 實現(xiàn)一個簡單的網(wǎng)格搜索254
11.6.2 理解驗證集的值255
11.6.3 網(wǎng)格搜索與交叉驗證結合256
11.6.4 網(wǎng)格搜索與嵌套交叉驗證結合258
11.7 利用各種評估指標對模型評分259
11.7.1 選擇正確的分類器評估指標259
11.7.2 選擇正確的回歸評估指標260
11.8 將算法鏈接起來形成管道260
11.8.1 用scikit-learn實現(xiàn)管道261
11.8.2 在網(wǎng)格搜索中使用管道262
11.9 本章小結263
第12章 使用基于OpenCV的OpenVINO264
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