OpenCV 4.0+Python機器學習與計算機視覺實戰 ( 簡體 字) |
作者:[印]梅努阿·吉沃吉安 等著 | 類別:1. -> 教材 -> 數位影像處理 2. -> 程式設計 -> Python 3. -> 程式設計 -> 機器學習 |
譯者:黃進青 譯 |
出版社:清華大學出版社 | 3dWoo書號: 55665 詢問書籍請說出此書號!【缺書】 NT售價: 545 元 |
出版日:2/1/2022 |
頁數:292 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302597360 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:本書的目的是讓你能夠使用最新版本的OpenCV 4.0框架和Python 3.8語言,親身接觸各種中級或高級項目,而不僅僅是像理論課那樣介紹計算機視覺的核心概念。 本書已經是第二版,增加了使用OpenCV解決問題的概念的深度。它將指導你完成獨立的實踐項目,這些項目側重于基本的計算機視覺概念,例如圖像處理、3D場景重建、對象檢測和對象跟蹤。它還通過實際示例討論了統計學習和深度神經網絡。 本書首先闡述了圖像濾鏡和特征匹配之類的概念,并介紹了如何使用諸如Kinect深度傳感器之類的自定義傳感器、如何在3D模式下重建和可視化場景、如何對齊圖像以及如何將多幅圖像組合為一幅圖像等。 在本書的高級項目部分,你將學習到如何通過神經網絡識別交通標志和面部情緒,以及如何使用神經網絡檢測和跟蹤視頻流中的對象。 學習完本書之后,你將獲得實際編程經驗,并能熟練地根據特定的業務需求開發自己的高級計算機視覺應用程序。本書還探索了多種機器學習和計算機視覺模型,例如支持向量機(SVM)和卷積神經網絡等,這些都有助于你開發自己的實際問題解決方案。 本書讀者 本書主要針對使用OpenCV和其他機器學習庫開發高級實際應用程序的計算機視覺領域愛好者,以幫助他們掌握相應技能。 本書讀者應該具備基礎編程技能和Python編程知識。 內容介紹 本書共分為10章,另外還包括兩個附錄。具體介紹如下。 第1章“濾鏡”,探討了若干比較有趣的圖像濾鏡(如黑白鉛筆素描、暖調/冷調濾鏡和卡通化效果等),并可將這些濾鏡應用于網絡攝像頭的實時視頻流。 第2章“深度傳感器和手勢識別”,可幫助你開發應用程序,以使用深度傳感器(如Microsoft Kinect 3D Sensor或華碩Xtion)的輸出實時檢測和跟蹤簡單的手勢。 第3章“通過特征匹配和透視變換查找對象”,可幫助你開發一個應用程序,以檢測攝像頭視頻流中的任意感興趣的對象,即使從不同角度或距離,甚至是部分遮擋觀察對象的情況下也可以正常工作。 第4章“使用運動恢復結構重建3D場景”,展示了如何通過從攝像頭運動中推斷場景的幾何特征來重建和可視化3D場景。 第5章“在OpenCV中使用計算攝影”,可以幫助你開發命令行腳本,將圖像作為輸入并生成全景或高動態范圍(HDR)圖像。本章腳本將對齊圖像以使其具有像素之間的對應關系,或者將其拼接在一起以創建全景圖像,這是圖像對齊的有趣應用。 第6章“跟蹤視覺上的顯著對象”,可以幫助你開發一個應用程序,以跟蹤一個視頻序列中的多個視覺顯著對象(例如足球比賽中場上的所有球員)。 第7章“識別交通標志”,向你展示了如何訓練支持向量機,以識別來自德國交通標志識別基準(GTSRB)數據集中的交通標志。 第8章“識別面部表情”,可以幫助你開發一個應用程序,以實時檢測人臉并在網絡攝像頭的視頻流中識別其面部表情。 第9章“對象分類和定位”,將引導你開發使用深度卷積神經網絡進行實時對象分類的應用程序。你將修改分類器網絡,以使用自定義類別在自定義數據集上進行訓練。你還將學習如何在數據集上訓練Keras模型,以及如何序列化Keras模型并將其保存到磁盤。你將看到如何使用加載的Keras模型對新輸入圖像進行分類,如何使用圖像數據訓練卷積神經網絡,以獲得良好的分類器和非常高的準確率。 第10章“檢測和跟蹤對象”,將指導你開發使用深度神經網絡進行實時對象檢測的應用程序,并可將其連接到跟蹤器。你將學習對象檢測器的工作原理及其訓練方法,實現一個基于卡爾曼濾波器的跟蹤器,使用對象的位置和速度來預測可能的位置。完成本章的示例后,你將能夠構建自己的實時對象檢測和跟蹤應用程序。 附錄A“應用程序性能分析和加速”,介紹了如何使用Numba在應用程序中發現性能瓶頸并實現現有代碼的基于CPU和GPU的加速。 附錄B“設置Docker容器”,將引導你復制用于運行本書代碼的環境。 充分利用本書 本書所有的代碼都使用Python 3.8,可在各種操作系統(如Windows、GNU Linux和macOS等)上使用。我們已盡量僅使用這3個操作系統上可用的庫,并且詳細介紹了所使用的每個依賴項的確切版本,可以使用pip(Python的依賴項管理系統)進行安裝。如果你仍然無法使這些依賴項正常工作,則可以使用本書提供的Dockerfile,我們已對本書中的所有代碼進行了測試,這些內容在附錄B“設置Docker容器”中有詳細介紹。 表P-1提供了本書使用的依賴項列表,以及相應的章節。 為運行代碼,你需要一臺普通的筆記本電腦或個人計算機。有些章節要求使用網絡攝像頭,這可以是筆記本電腦的嵌入式攝像頭,也可以是外部攝像頭。第2章“深度傳感器和手勢識別”還需要深度傳感器,這可以是Microsoft 3D Kinect傳感器,也可以是 libfreenect庫或OpenCV支持的任何其他傳感器(如華碩Xtion)。 本書代碼已經在Ubuntu 18.04上使用Python 3.8和Python 3.7進行了測試。 如果你的計算機上已經裝有Python,則可以在終端上運行以下命令:
$ pip install -r requirements.txt
上述requirement.txt在本書項目的GitHub存儲庫中有提供,并且包含以下內容(這其實就是表P-1中的依賴項列表):
wxPython==4.0.5 numpy==1.18.1 scipy==1.4.1 matplotlib==3.1.2 requests==2.22.0 opencv-contrib-python==4.2.0.32 opencv-python==4.2.0.32 rawpy==0.14.0 ExifRead==2.1.2 tensorflow==2.0.1
或者,你也可以按照附錄B“設置Docker容器”中的說明進行操作,以使所有代碼都可以在Docker容器中運行。 圖P-1 搜索圖書名 (3)在本書詳情頁面中,找到并單擊Download code from GitHub(從GitHub下載代碼文件)按鈕,如圖P-2所示。 提示: 如果你看不到該下載按鈕,可能是沒有登錄packtpub賬號。該站點可免費注冊賬號。
圖P-2 單擊下載代碼的按鈕 (4)在本書GitHub源代碼下載頁面中,單擊右側的Code(代碼)按鈕,在彈出的下拉菜單中選擇Download ZIP(下載壓縮包),如圖P-3所示。 下載文件后,請確保使用最新版本解壓縮或解壓縮文件夾: ? WinRAR/7-Zip(Windows系統)。 ? Zipeg/iZip/UnRarX(Mac系統)。 ? 7-Zip/PeaZip(Linux系統)。 關于作者 Menua Gevorgyan博士是一位經驗豐富的研究人員,具有信息技術和服務行業的長期工作經歷。他精通計算機視覺、深度學習、機器學習和數據科學,并且在OpenCV和Python編程方面擁有豐富的經驗。他對機器感知和機器理解問題感興趣,并有意探索讓機器像人類一樣感知世界。 “感謝Rosal Colaco為提高本書質量所做的辛苦努力,也感謝Sandeep Mishra對于本書的良好建議。” Arsen Mamikonyan是一位經驗豐富的機器學習專家,曾在硅谷和倫敦工作,還曾在亞美尼亞美國大學(奧克蘭)任教。他精通應用機器學習和數據科學,并使用Python和 OpenCV等構建了現實應用程序。他擁有麻省理工學院的工程學碩士學位,專攻人工智能。 “感謝我的妻子Lusine,以及我的父母Gayane和Andranik,他們在我寫作這本書的過程中不斷鼓勵我。還要感謝我的合著者Menua,他在忙碌的工作日程中始終與我保持緊密聯系,并在我們從事這個項目的過程中保持了很高的積極性。” Michael Beyeler是華盛頓大學神經工程和數據科學的博士后研究員,他正在研究仿生視覺的計算模型,以改善植入視網膜假體(仿生眼)的盲人的知覺體驗。 他的工作處于神經科學、計算機工程、計算機視覺和機器學習的交叉領域。他還是多個開源軟件項目的積極貢獻者,并且在Python、C/C++、CUDA、MATLAB和Android等方面擁有專業的編程經驗。Michael擁有加州大學爾灣分校的計算機科學博士學位,以及瑞士蘇黎世聯邦理工學院的生物醫學工程理學碩士學位和電氣工程理學學士學位。 關于審稿人 Sri Manikanta Palakollu是一名在JNTUH SICET攻讀計算機科學與工程學士學位的本科生。他是他所在大學的OpenStack開發人員社區的創始人。 他已經開始了自己的職業程序員生涯。他喜歡解決與數據科學領域有關的問題。他的興趣包括數據科學、應用程序開發、Web開發、網絡安全和技術寫作。他在Hacker Noon、freeCodeCamp、Towards Data Science和DDI等出版物上發表了許多有關數據科學、機器學習、編程和網絡安全的文章。 |
內容簡介:《OpenCV 4.0+Python機器學習與計算機視覺實戰》詳細闡述了機器學習與計算機視覺相關的基本解決方案,主要包括濾鏡、深度傳感器和手勢識別、通過特征匹配和透視變換查找對象、使用運動恢復結構重建3D場景、在OpenCV中使用計算攝影、跟蹤視覺上的顯著對象、識別交通標志、識別面部表情、對象分類和定位、檢測和跟蹤對象等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。 本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和參考手冊。 |
目錄:第1章濾鏡 1 1.1準備工作 2 1.2規劃應用程序 2 1.3創建黑白鉛筆素描 3 1.3.1了解使用減淡和加深技術的方法 4 1.3.2使用二維卷積實現高斯模糊 6 1.3.3應用鉛筆素描變換效果 7 1.3.4使用高斯模糊的優化版本 9 1.4生成暖調和冷調濾鏡 10 1.4.1通過曲線平移使用顏色操作 11 1.4.2使用查找表實現曲線濾鏡 11 1.4.3設計暖調和冷調效果 12 1.5創建圖像卡通化效果 15 1.5.1使用雙邊濾鏡 16 1.5.2檢測并強調突出的邊緣 17 1.5.3組合顏色和輪廓以創建卡通效果 19 1.6綜合演練 20 1.6.1運行應用程序 20 1.6.2映射GUI基類 21 1.6.3了解GUI構造函數 22 1.6.4了解基本的GUI布局 23 1.6.5處理視頻流 24 1.6.6創建自定義濾鏡布局 25 1.7小結 27 1.8許可 28 第2章深度傳感器和手勢識別 29 2.1準備工作 30 2.2規劃應用程序 30 2.3設置應用程序 31 2.3.1訪問Kinect3D傳感器 31 2.3.2使用與OpenNI兼容的傳感器 32 2.3.3運行應用程序和主函數例程 34 2.4實時跟蹤手勢 35 2.5了解手部區域分割 36 2.5.1找到圖像中心區域最突出的深度 36 2.5.2應用形態學閉合操作平滑蒙版 38 2.5.3在分割蒙版中查找連接的組件 39 2.6執行手形分析 41 2.6.1確定分割之后手部區域的輪廓 41 2.6.2查找輪廓區域的凸包 41 2.6.3尋找凸包的凸缺陷 42 2.7執行手勢識別 43 2.7.1區分凸缺陷的不同原因 44 2.7.2根據伸出的手指數對手勢進行分類 45 2.8小結 47 第3章通過特征匹配和透視變換查找對象 49 3.1準備工作 50 3.2列出應用程序執行的任務 50 3.3規劃應用程序 52 3.4設置應用程序 52 3.4.1運行應用程序 52 3.4.2顯示結果 53 3.5了解處理流程 54 3.6學習特征提取 56 3.6.1特征檢測 56 3.6.2使用SURF檢測圖像中的特征 57 3.6.3使用SURF獲取特征描述子 58 3.7了解特征匹配 59 3.7.1使用FLANN算法匹配圖像特征 60 3.7.2執行比率檢驗以消除異常值 60 3.7.3可視化特征匹配 61 3.7.4映射單應性估計 64 3.7.5扭曲圖像 67 3.8了解特征跟蹤 69 3.9理解早期異常值檢測和剔除 69 3.10研究算法原理 72 3.11小結 74 3.12許可 75 第4章使用運動恢復結構重建3D場景 77 4.1準備工作 77 4.2規劃應用程序 78 4.3了解相機校準知識 81 4.3.1了解針孔相機模型 81 4.3.2估算相機內參 83 4.3.3定義相機校準圖形用戶界面 84 4.3.4初始化相機校準算法 84 4.3.5收集圖像和對象點 86 4.3.6尋找相機矩陣 87 4.4設置應用程序 88 4.4.1理解main例程函數 89 4.4.2實現SceneReconstruction3D類 90 4.5從一對圖像估計相機的運動 92 4.5.1使用豐富特征描述子應用點匹配 93 4.5.2使用光流進行點匹配 94 4.5.3查找相機矩陣 97 4.5.4應用圖像校正 99 4.6重建場景 101 4.7了解3D點云可視化 102 4.8了解運動恢復結構 105 4.9小結 105 第5章在OpenCV中使用計算攝影 107 5.1準備工作 107 5.2規劃應用程序 107 5.3了解8位問題 108 5.3.1了解RAW圖像 110 5.3.2使用伽瑪校正 111 5.4了解高動態范圍成像 115 5.4.1探索改變曝光度的方法 118 5.4.2快門速度 119 5.4.3光圈 119 5.4.4ISO感光度 120 5.4.5使用多重曝光圖像生成HDR圖像 120 5.4.6從圖像中提取曝光強度值 122 5.4.7估計相機響應函數 123 5.4.8使用OpenCV編寫HDR腳本 124 5.4.9顯示HDR圖像 125 5.5了解全景拼接 126 5.5.1編寫腳本參數并過濾圖像 126 5.5.2計算相對位置和最終圖片尺寸 128 5.5.3查找相機參數 128 5.5.4為全景圖創建畫布 129 5.5.5將圖像合并在一起 129 5.5.6改善全景拼接 131 5.6小結 131 5.7延伸閱讀 131 5.8許可 132 第6章跟蹤視覺上的顯著對象 133 6.1準備工作 133 6.2了解視覺顯著性 134 6.3規劃應用程序 135 6.4設置應用程序 136 6.4.1實現main函數 136 6.4.2了解MultiObjectTracker類 137 6.5映射視覺顯著性 138 6.5.1了解傅里葉分析 140 6.5.2了解自然場景統計 142 6.5.3使用頻譜殘差法生成顯著圖 145 6.5.4檢測場景中的原型對象 148 6.6了解均值漂移跟蹤 149 6.7自動跟蹤足球場上的所有球員 151 6.8了解OpenCV跟蹤API 154 6.9綜合演練 157 6.10小結 158 6.11數據集許可 158 第7章識別交通標志 159 7.1準備工作 160 7.2規劃應用程序 160 7.3監督學習概念簡介 161 7.3.1訓練過程 161 7.3.2測試過程 163 7.4探索GTSRB數據集 164 7.5解析數據集 166 7.6了解數據集特征提取 169 7.6.1理解常見的預處理 170 7.6.2了解灰度特征 171 7.6.3理解色彩空間 172 7.6.4使用SURF描述子 172 7.6.5映射HOG描述子 173 7.7關于SVM 175 7.7.1使用SVM進行多類分類 176 7.7.2訓練SVM 177 7.7.3測試SVM 178 7.7.4準確率 179 7.7.5混淆矩陣 180 7.7.6精確率 181 7.7.7召回率 183 7.8綜合演練 185 7.9使用神經網絡改善結果 187 7.10小結 188 7.11數據集許可 189 第8章識別面部表情 191 8.1準備工作 191 8.2規劃應用程序 192 8.3了解人臉檢測 194 8.3.1了解基于Haar的級聯分類器 194 8.3.2理解預訓練的級聯分類器 195 8.3.3使用預先訓練的級聯分類器 196 8.3.4理解FaceDetector類 198 8.3.5在灰度圖像中檢測臉部 199 8.3.6預處理檢測到的臉部 200 8.3.7檢測眼睛部位 201 8.3.8變換臉部 202 8.4收集數據 203 8.4.1收集訓練數據集 203 8.4.2運行應用程序 204 8.4.3實現數據收集器的圖形用戶界面 205 8.4.4擴充基本布局 206 8.4.5處理當前幀 208 8.4.6存儲數據 208 8.5理解面部表情識別 210 8.5.1處理數據集 210 8.5.2了解PCA 211 8.5.3理解MLP 213 8.5.4理解感知器 213 8.5.5了解深度架構 215 8.5.6制作用于面部表情識別的MLP 217 8.5.7訓練MLP 219 8.5.8測試MLP 220 8.5.9運行腳本 220 8.6綜合演練 221 8.7小結 224 8.8參考資料 224 8.9許可 225 第9章對象分類和定位 227 9.1準備工作 228 9.2規劃應用程序 228 9.3準備推理腳本 228 9.4準備數據集 230 9.4.1下載并解析數據集 230 9.4.2創建一個TensorFlow數據集 233 9.5使用卷積神經網絡分類 236 9.5.1理解卷積神經網絡 236 9.5.2了解遷移學習 237 9.5.3準備寵物類型和品種的分類器 239 9.5.4訓練和評估分類器網絡 240 9.6使用卷積神經網絡進行定位 242 9.6.1準備定位器模型 243 9.6.2理解反向傳播算法 245 9.6.3訓練模型 247 9.7推理的實際應用 248 9.8小結 249 9.9數據集許可 249 第10章檢測和跟蹤對象 251 10.1準備工作 252 10.2規劃應用程序 252 10.3準備主腳本 252 10.4使用SSD模型檢測對象 254 10.5使用其他檢測器 257 10.6了解對象檢測器 260 10.6.1單對象檢測器 260 10.6.2滑動窗口方法 260 10.6.3單遍檢測器 261 10.6.4了解交并比 263 10.6.5訓練SSD和YOLO式網絡 264 10.7跟蹤檢測到的對象 265 10.7.1實現SORT跟蹤器 267 10.7.2理解卡爾曼濾波器 267 10.7.3結合使用邊界框跟蹤器和卡爾曼濾波器 271 10.7.4將邊界框轉換為觀察值 272 10.7.5實現卡爾曼濾波器 273 10.7.6將檢測結果與跟蹤器關聯在一起 276 10.7.7定義跟蹤器的類 277 10.8查看程序的實際應用效果 279 10.9小結 280 附錄A應用程序性能分析和加速 281 A.1用Numba加速 282 A.2通過CPU加速 284 A.3理解Numba、CUDA和GPU加速 286 附錄B設置Docker容器 289 B.1定義Dockerfile 289 B.2使用GPU 293 |
序: |