機器學(xué)習(xí):使用OpenCV、Python和scikit-learn進行智能圖像處理(原書第2版)
定 價:99 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:[印] 阿迪蒂亞·夏爾馬(Aditya Sharma) [印] 維什韋什·拉維
- 出版時間:2020/11/1
- ISBN:9787111668268
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP181
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
本書通過具體的編程實踐案例,全面系統(tǒng)地講述了機器學(xué)習(xí)涉及的核心內(nèi)容。首先介紹新特性以及安裝OpenCV 4構(gòu)建計算機視覺應(yīng)用程序。你將探索機器學(xué)習(xí)的基礎(chǔ)知識,學(xué)習(xí)設(shè)計用于圖像處理的各種算法。本書將逐步介紹有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)。你將獲得使用Python中的scikit-learn開發(fā)各種機器學(xué)習(xí)應(yīng)用程序的實踐經(jīng)驗。后續(xù)章節(jié)將重點介紹決策樹、支持向量機、貝葉斯學(xué)習(xí)等各種機器學(xué)習(xí)算法,以及如何將這些算法應(yīng)用于目標(biāo)檢測等計算機視覺操作。然后,你將深入研究深度學(xué)習(xí)和集成學(xué)習(xí),并探索它們在現(xiàn)實世界中的應(yīng)用。*后,你將學(xué)習(xí)用于構(gòu)建圖像處理系統(tǒng)的*新的Intel OpenVINO。
譯者序
前言
作者簡介
審校者簡介
第一部分 機器學(xué)習(xí)與OpenCV的基礎(chǔ)知識
第1章 機器學(xué)習(xí)體驗2
1.1 技術(shù)需求3
1.2 開始機器學(xué)習(xí)3
1.3 機器學(xué)習(xí)可以解決的問題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 機器學(xué)習(xí)的應(yīng)用13
1.8 OpenCV 4.0的新功能13
1.9 本章小結(jié)14
第2章 用OpenCV處理數(shù)據(jù)15
2.1 技術(shù)需求15
2.2 理解機器學(xué)習(xí)的工作流程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 本章小結(jié)30
第3章 監(jiān)督學(xué)習(xí)的第一步31
3.1 技術(shù)需求31
3.2 理解監(jiān)督學(xué)習(xí)32
3.2.1 看看OpenCV中的監(jiān)督學(xué)習(xí)33
3.2.2 用評分函數(shù)度量模型性能33
3.3 使用分類模型預(yù)測類標(biāo)簽39
3.3.1 理解k-NN算法40
3.3.2 用OpenCV實現(xiàn)k-NN40
3.4 使用回歸模型預(yù)測連續(xù)的結(jié)果47
3.4.1 理解線性回歸47
3.4.2 OpenCV中的線性回歸48
3.4.3 使用線性回歸預(yù)測波士頓房價51
3.4.4 Lasso回歸和嶺回歸的應(yīng)用54
3.5 使用邏輯回歸分類鳶尾花的種類55
3.5.1 理解邏輯回歸55
3.5.2 加載訓(xùn)練數(shù)據(jù)56
3.5.3 使其成為一個二值分類問題57
3.5.4 數(shù)據(jù)檢查57
3.5.5 將數(shù)據(jù)拆分成訓(xùn)練集和測試集58
3.5.6 訓(xùn)練分類器58
3.5.7 測試分類器59
3.6 本章小結(jié)59
第4章 數(shù)據(jù)表示和特征工程60
4.1 技術(shù)需求61
4.2 理解特征工程61
4.3 數(shù)據(jù)預(yù)處理62
4.3.1 特征標(biāo)準(zhǔn)化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)非負(fù)矩陣分解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和可旋轉(zhuǎn)的BRIEF84
4.8 本章小結(jié)85
第二部分 基于OpenCV的運算
第5章 基于決策樹進行醫(yī)療診斷88
5.1 技術(shù)需求88
5.2 理解決策樹89
5.2.1 構(gòu)建我們的第一棵決策樹91
5.2.2 可視化一棵經(jīng)過訓(xùn)練的決策樹97
5.2.3 探究決策樹的內(nèi)部工作原理99
5.2.4 評估特征的重要性100
5.2.5 理解決策規(guī)則101
5.2.6 控制決策樹的復(fù)雜度102
5.3 使用決策樹診斷乳腺癌102
5.3.1 加載數(shù)據(jù)集103
5.3.2 構(gòu)建決策樹104
5.4 使用決策樹進行回歸108
5.5 本章小結(jié)111
第6章 利用支持向量機進行行人檢測112
6.1 技術(shù)需求113
6.2 理解線性SVM113
6.2.1 學(xué)習(xí)最優(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 生成負(fù)樣本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 關(guān)于數(shù)據(jù)134
6.5.2 屬性信息134
6.6 本章小結(jié)136
第7章 利用貝葉斯學(xué)習(xí)實現(xiàn)一個垃圾郵件過濾器137
7.1 技術(shù)需求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ù)預(yù)處理153
7.4.4 訓(xùn)練一個普通貝葉斯分類器153
7.4.5 在完整數(shù)據(jù)集上訓(xùn)練154
7.4.6 使用n-grams提升結(jié)果154
7.4.7 使用TF-IDF提升結(jié)果155
7.5 本章小結(jié)156
第8章 利用無監(jiān)督學(xué)習(xí)發(fā)現(xiàn)隱藏結(jié)構(gòu)157
8.1 技術(shù)需求157
8.2 理解無監(jiān)督學(xué)習(xí)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 可視化真彩色調(diào)色板170
8.5.2 使用k-均值減少調(diào)色板的顏色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 本章小結(jié)180
第三部分 基于OpenCV的高級機器學(xué)習(xí)
第9章 使用深度學(xué)習(xí)分類手寫數(shù)字182
9.1 技術(shù)需求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 將感知器應(yīng)用于非線性可分的數(shù)據(jù)191
9.5 理解多層感知器193
9.5.1 理解梯度下降194
9.5.2 基于反向傳播訓(xùn)練多層感知器196
9.5.3 用OpenCV實現(xiàn)一個多層感知器197
9.6 結(jié)識深度學(xué)習(xí)202
9.7 分類手寫數(shù)字205
9.7.1 加載MNIST數(shù)據(jù)集205
9.7.2 預(yù)處理MNIST數(shù)據(jù)集206
9.7.3 使用OpenCV訓(xùn)練一個多層感知器207
9.7.4 使用Keras訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)208
9.8 本章小結(jié)211
第10章 集成分類方法212
10.1 技術(shù)需求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 預(yù)處理數(shù)據(jù)集229
10.4.3 隨機森林的訓(xùn)練和測試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 本章小結(jié)237
第11章 選擇正確的模型與超參數(shù)調(diào)優(yōu)238
11.1 技術(shù)需求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 評估結(jié)果的顯著性250
11.5.1 實現(xiàn)Student t-檢驗251
11.5.2 實現(xiàn)McNemar檢驗252
11.6 基于網(wǎng)格搜索的超參數(shù)調(diào)優(yōu)253
11.6.1 實現(xiàn)一個簡單的網(wǎng)格搜索254
11.6.2 理解驗證集的值255
11.6.3 網(wǎng)格搜索與交叉驗證結(jié)合256
11.6.4 網(wǎng)格搜索與嵌套交叉驗證結(jié)合258
11.7 利用各種評估指標(biāo)對模型評分259
11.7.1 選擇正確的分類器評估指標(biāo)259
11.7.2 選擇正確的回歸評估指標(biāo)260
11.8 將算法鏈接起來形成管道260
11.8.1 用scikit-learn實現(xiàn)管道261
11.8.2 在網(wǎng)格搜索中使用管道262
11.9 本章小結(jié)263
第12章 使用基于OpenCV的OpenVINO264
12.1 技術(shù)需求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 本章小結(jié)273
第13章 尾聲274
13.1 技術(shù)需求274
13.2 機器學(xué)習(xí)問題的解決方案275
13.3 構(gòu)建自己的估計器276
13.3.1 用C++編寫自己的基于OpenCV的分類器276
13.3.2 用Python編寫自己的基于scikit-learn的分類器278
13.4 接下來要做的工作280
13.5 本章小結(jié)281