機器學習:使用 OpenCV 和 Python 進行智能圖像處理 机器学习:使用OpenCV和Python进行智能图像处理

邁克爾·貝耶勒 (Michael Beyeler)

立即出貨

買這商品的人也買了...

相關主題

商品描述

本書是一本基於OpenCV和Python的機器學習實戰手冊,既詳細介紹機器學習及OpenCV相關的基礎知識,又通過具體實例展示如何使用OpenCV和Python實現各種機器學習算法,並提供大量示列代碼,可以幫助你掌握機器學習實用技巧,解決各種不同的機器學習和圖像處理問題。

全書共12章,第1章簡要介紹機器學習基礎知識,並講解如何安裝OpenCV和Python工具;第2章展示經典的機器學習處理流程及OpenCV和Python工具的使用;第3章討論監督學習算法,以及如何使用OpenCV實現這些算法;第4章討論數據表示和特徵工程,並介紹OpenCV中提供的用於處理圖像數據的常見特徵提取技術;第5章展示如何使用OpenCV構建決策樹進行醫療診斷;第6章討論如何使用OpenCV構建支持向量機檢測行人;第7章介紹概率論,並展示如何使用貝葉斯學習實現垃圾郵件過濾;第8章討論一些非監督學習算法;第9章詳細講解如何構建深度神經網絡來識別手寫數字;第10章討論如何高效地集成多個算法來提升性能;第11章討論如何比較不同分類器的結果,選擇合適的工具;第12章給出一些處理實際機器學習問題的提示和技巧。

OpenCV是一個綜合了經典和先進計算機視覺、機器學習算法的開源庫。通過與Python Anaconda版本結合,你就可以獲取你所需要的所有開源計算庫。
本書首先介紹分類和回歸等統計學習的基本概念,然後詳細講解決策樹、支持向量機和貝葉斯網絡等算法,以及如何把它們與其他OpenCV函數結合,最後還會介紹時下熱門主題——深度學習。通過本書的學習,你將掌握大量實用機器學習技巧,並依據書中提供的代碼或從零開發自己的算法,解決實際問題。
通過閱讀本書,你將:
·學習並高效使用OpenCV的機器學習模塊
·使用Python學習用於計算機視覺領域的深度學習技術
·掌握線性回歸和歸一化技巧
·對花卉品種、手寫數字和行人等物體進行分類
·學習支持向量機、提升決策樹和隨機森林的高效使用方法
·學習使用神經網絡和深度學習解決現實問題
·使用k均值聚類發現數據的隱藏結構
·掌握數據預處理和特徵工程

目錄大綱

譯者序

前言
審校者簡介
第1章 品味機器學習 1
1.1 初步了解機器學習 1
1.2 機器學習可以解決的事情 3
1.3 初步了解 Python 4
1.4 初步了解 OpenCV 4
1.5 安裝 5
1.5.1 獲取本書最新的代碼 5
1.5.2 掌握 Python Anaconda 6
1.5.3 在 conda 環境中安裝OpenCV 8
1.5.4 驗證安裝結果 9
1.5.5 一睹 OpenCV ML 模塊 11
1.6 總結 11
第2章 使用 OpenCV 和 Python處理數據 12
2.1 理解機器學習流程 12
2.2 使用 OpenCV 和 Python 處理數據 14
2.2.1 創建一個新的 IPython 或 Jupyter 會話 15
2.2.2 使用 Python 的 NumPy包處理數據 16
2.2.3 在 Python 中載入外部數據集 20
2.2.4 使用 Matplotlib 進行數據可視化 21
2.2.5 使用C++ 中 OpenCV 的 TrainData 容器處理數據 26
2.3 總結 27
第3章 監督學習的第一步 28
3.1 理解監督學習 28
3.1.1 了解 OpenCV 中的監督學習 29
3.1.2 使用評分函數評估模型性能 30
3.2 使用分類模型預測類別 35
3.2.1 理解 k-NN 算法 37
3.2.2 使用 OpenCV實現 k-NN 37
3.3 使用回歸模型預測連續結果 43
3.3.1 理解線性回歸 43
3.3.2 使用線性回歸預測波士頓房價 44
3.3.3 應用 Lasso 回歸和ridge 回歸 48
3.4 使用邏輯回歸對鳶尾花種類進行分類 48
3.5 總結 53
第4 數據表示與特徵工程 54
4.1 理解特徵工程 54
4.2 數據預處理 55
4.2.1 特徵標準化 56
4.2.2 特徵歸一化 57
4.2.3 特徵縮放到一定的範圍 57
4.2.4 特徵二值化 58
4.2.5 缺失數據處理 58
4.3 理解降維 59
4.3.1 在OpenCV 中實現主成分分析 61
4.3.2 實現獨立成分分析 64
4.3.3 實現非負矩陣分解 65
4.4 類別變量表示 66
4.5 文本特徵表示 68
4.6 圖像表示 69
4.6.1 使用色彩空間 69
4.6.2 圖像角點檢測 71
4.6.3 使用尺度不變特徵變換 72
4.6.4 使用加速健壯特徵 74
4.7 總結 75
第5章 使用決策樹進行醫療診斷 76
5.1 理解決策樹 76
5.1.1 構建第一個決策樹 79
5.1.2 可視化訓練得到的決策樹 85
5.1.3 深入了解決策樹的內部工作機制 87
5.1.4 特徵重要性評分 88
5.1.5 理解決策規則 89
5.1.6 控制決策樹的複雜度 90
5.2 使用決策樹進行乳腺癌的診斷 90
5.2.1 載入數據集 91
5.2.2 構建決策樹 92
5.3 使用決策樹進行回歸 96
5.4 總結 99
第6章 使用支持向量機檢測行人 100
6.1 理解線性支持向量機 100
6.1.1 學習最優決策邊界 101
6.1.2 實現我們的第一個支持向量機 102
6.2 處理非線性決策邊界 107
6.2.1 理解核機制 108
6.2.2 認識我們的核 109
6.2.3 實現非線性支持向量機 109
6.3 自然環境下的行人檢測 110
6.3.1 獲取數據集 111
6.3.2 初窺方向梯度直方圖 113
6.3.3 生成負樣本 114
6.3.4 實現支持向量機 116
6.3.5 模型自舉 116
6.3.6 在更大的圖像中檢測行人 118
6.3.7 進一步優化模型 120
6.4 總結 121
第7章 使用貝葉斯學習實現垃圾郵件過濾 122
7.1 理解貝葉斯推斷 122
7.1.1 概率論的短暫之旅 123
7.1.2 理解貝葉斯定理 124
7.1.3 理解樸素貝葉斯分類器 126
7.2 實現第一個貝葉斯分類器 127
7.2.1 創建一個練習數據集 127
7.2.2 使用一個正態貝葉斯分類器對數據分類 128
7.2.3 使用一個樸素貝葉斯分類器對數據分類 131
7.2.4 條件概率的可視化 132
7.3 使用樸素貝葉斯分類器對郵件分類 134
7.3.1 載入數據集 134
7.3.2 使用Pandas構建數據矩陣 136
7.3.3 數據預處理 137
7.3.4 訓練正態貝葉斯分類器 138
7.3.5 使用完整的數據集進行訓練 139
7.3.6 使用n-gram提升結果 139
7.3.7 使用TD-IDF提升結果 140
7.4 總結 141
第8章 使用非監督學習發現隱藏結構 142
8.1 理解非監督學習 142
8.2 理解k均值聚類 143
8.3 理解期望最大化 145
8.3.1 實現期望最大化解決方案 146
8.3.2 了解期望最大化的局限 148
8.4 使用k均值壓縮色彩空間 154
8.4.1 真彩色調色板的可視化 154
8.4.2 使用k均值減少調色板 157
8.5 使用k均值對手寫數字分類 159
8.5.1 載入數據集 159
8.5.2 運行k均值 159
8.6 把聚類組織成層次樹 161
8.6.1 理解層次聚類 161
8.6.2 實現凝聚層次聚類 162
8.7 總結 163
第9章 使用深度學習對手寫數字分類 164
9.1 理解McCulloch-Pitts神經元 164
9.2 理解感知器 167
9.3 實現第一個感知器 169
9.3.1 生成練習數據集 170
9.3.2 使用數據擬合感知器 171
9.3.3 評估感知器分類器 171
9.3.4 把感知器應用到線性不可分的數據上 173
9.4 理解多層感知器 174
9.4.1 理解梯度下降 175
9.4.2 使用反向傳播訓練多層感知器 178
9.4.3 在OpenCV中實現多層感知器 179
9.5 了解深度學習 183
9.6 手寫數字分類 186
9.6.1 載入MNIST數據集 187
9.6.2 MNIST數據集預處理 188
9.6.3 使用OpenCV訓練一個MLP 189
9.6.4 使用Keras訓練一個深度神經網絡 190
9.7 總結 192
第10章 組合不同算法為一個整體 193
10.1 理解集成方法 193
10.1.1 理解平均集成 195
10.1.2 理解提升集成 197
10.1.3 理解堆疊集成 200
10.2 組合決策樹為隨機森林 200
10.2.1 理解決策樹的不足 200
10.2.2 實現第一個隨機森林 204
10.2.3 使用scikit-learn實現一個隨機森林 205
10.2.4 實現極端隨機樹 206
10.3 使用隨機森林進行人臉識別 208
10.3.1 載入數據集 208
10.3.2 預處理數據集 209
10.3.3 訓練和測試隨機森林 210
10.4 實現AdaBoost 212
10.4.1 使用OpenCV實現AdaBoost 212
10.4.2 使用scikit-learn實現AdaBoost 213
10.5 組合不同模型為一個投票分類器 214
10.5.1 理解不同的投票機制 214
10.5.2 實現一個投票分類器 215
10.6 總結 217
第11章 通過超參數調優選擇合適的模型 218
11.1 評估一個模型 218
11.1.1 評估模型錯誤的方法 219
11.1.2 評估模型正確的方法 220
11.1.3 選擇最好的模型 221
11.2 理解交叉驗證 223
11.2.1 使用OpenCV手動實現交叉驗證 225
11.2.2 使用scikit-learn進行k折交叉驗證 226
11.2.3 實現留一法交叉驗證 227
11.3 使用自舉評估魯棒性 228
11.4 評估結果的重要性 230
11.4.1 實現T檢驗 230
11.4.2 實現配對卡方檢驗 232
11.5 使用網格搜索進行超參數調優 233
11.5.1 實現一個簡單的網格搜索 234
11.5.2 理解驗證集的價值 235
11.5.3 網格搜索結合交叉驗證 236
11.5.4 網格搜索結合嵌套交叉驗證 238
11.6 使用不同評估指標來對模型評分 239
11.6.1 選擇正確的分類指標 239
11.6.2 選擇正確的回歸指標 240
11.7 鏈接算法形成一個管道 240
11.7.1 用 scikit-learn 實現管道 241
11.7.2 在網格搜索中使用管道 242
11.8 總結 243
第12章 綜合 244
12.1 著手處理一個機器學習問題 244
12.2 構建自己的估計器 245
12.2.1 使用C++編寫自己的基於OpenCV的分類器 245
12.2.2 使用Python 編寫自己的基於scikit-learn的分類器 247
12.3 今後的方向 249
12.4 總結 251