OpenCV+TensorFlow深度學習與計算機視覺實戰(zhàn)
定 價:69 元
- 作者:王曉華
- 出版時間:2019/1/1
- ISBN:9787302518426
- 出 版 社:清華大學出版社
- 中圖法分類:TP391.413
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書旨在掌握深度學習基本知識和特性的基礎上,培養(yǎng)使用TensorFlow OpenCV進行實際編程以解決圖像處理相關問題的能力。全書力求通過通俗易懂的語言和詳細的程序分析,介紹TensorFlow的基本用法、高級模型設計和對應的程序編寫。
本書共13章,內(nèi)容包括計算機視覺與深度學習的關系、Python的安裝和使用、Python數(shù)據(jù)處理及可視化、機器學習的理論和算法、計算機視覺處理庫OpenCV 、OpenCV圖像處理實戰(zhàn)、TensorFlow基本數(shù)據(jù)結(jié)構(gòu)和使用、TensorFlow數(shù)據(jù)集的創(chuàng)建與讀取、BP神經(jīng)網(wǎng)絡、反饋神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡等。本書強調(diào)理論聯(lián)系實際,著重介紹TensorFlow OpenCV解決圖像識別的應用,提供大量數(shù)據(jù)集供讀者使用,并以代碼的形式實現(xiàn)深度學習模型實例供讀者參考。
本書既可作為學習人工神經(jīng)網(wǎng)絡、深度學習、TensorFlow程序設計以及圖像處理等相關內(nèi)容的程序設計人員的自學用書,也可作為高等院校和培訓學校相關專業(yè)的教材使用。
(1)本書偏重于介紹使用卷積神經(jīng)網(wǎng)絡及其相關變化的模型,在TensorFlow框架上進行圖像特征提取、圖像識別以及具體應用,這是目前已出版圖書中鮮有涉及的。
(2)本書并非枯燥的理論講解,而是作者閱讀和參考了大量*文獻做出的歸納總結(jié),在這點上也與其他編程書籍有本質(zhì)區(qū)別。書中的例子都是來自于現(xiàn)實世界中對圖像分辨和特征的競賽優(yōu)勝模型,通過介紹這些例子可以使讀者更深一步地了解和掌握其內(nèi)在的算法和本質(zhì)。
(3)本書作者有長期研究生和本科教學經(jīng)驗,通過通俗易懂的語言對全部內(nèi)容進行講解,深入淺出地介紹反饋神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡理論體系的全部知識點,并在程序編寫時使用官方推薦的TensorFlow*框架進行程序設計,幫助讀者更好地使用*的模型框架、理解和掌握TensorFlow程序設計的精妙之處。
(4)掌握和使用深度學習的人才應該在掌握基本知識和理論的基礎上,重視實際應用程序開發(fā)能力和解決問題能力的培養(yǎng)。因此,本書結(jié)合作者在實際工作中遇到的實際案例進行分析,抽象化核心模型并給出具體解決方案,并提供了全部程序例題的相應代碼以供讀者學習。
前 言
我們處于一個變革的時代!
給定一個物體,讓一個3歲的小孩描述這個物體是什么似乎是一件非常簡單的事情。然而將同樣的東西放在計算機面前,讓它描述自己看到了什么,這在不久以前還是一件不可能的事。
讓計算機學會看東西是一個專門的學科計算機視覺正在做的工作。借助于人工神經(jīng)網(wǎng)絡和深度學習的發(fā)展,近年來計算機視覺在研究上取得了重大的突破。通過模擬生物視覺所構(gòu)建的卷積神經(jīng)網(wǎng)絡模型在圖像識別和分類上取得了非常好的效果。
而今,借助于深度學習技術(shù)的發(fā)展,使用人工智能去處理常規(guī)勞動,理解語音語義,幫助醫(yī)學診斷和支持基礎科研工作,這些曾經(jīng)是夢想的東西似乎都在眼前。
寫作本書的原因
TensorFlow作為最新的、應用范圍最為廣泛的深度學習開源框架引起了廣泛的關注,吸引了大量程序設計和開發(fā)人員進行相關內(nèi)容的學習與開發(fā)。掌握TensorFlow編程基本技能的程序設計人員成為當前各組織和單位熱切追求的最熱門人才之一。他們的主要工作就是利用獲得的數(shù)據(jù)集設計不同的人工神經(jīng)模型,利用人工神經(jīng)網(wǎng)絡強大的學習能力提取和挖掘數(shù)據(jù)集中包含的潛在信息,編寫相應的TensorFlow程序?qū)?shù)據(jù)進行處理,對其價值進行進一步開發(fā),為商業(yè)機會的獲取、管理模式的創(chuàng)新、決策的制定提供相應的支持。隨著越來越多的組織、單位對深度學習應用的重視,高層次的TensorFlow程序設計人員將會成為就業(yè)市場上搶手的人才。
與其他應用框架不同的是,TensorFlow并不是一個簡單的編程框架,深度學習也不是一個簡單的名詞,需要相關研究人員對隱藏在其代碼背后的理論進行系統(tǒng)學習、掌握一定的數(shù)學知識和理論基礎。本書的作者具有長期一線理科理論教學經(jīng)驗,可以將其中的理論知識以非常淺顯易懂的語言描述出來。這一點是市面上相關書籍無法比擬的。
本書是為了滿足廣大TensorFlow程序設計和開發(fā)人員學習最新TensorFlow程序代碼的要求而出版的。書中對涉及深度學習的結(jié)構(gòu)與編程代碼做了循序漸進的介紹與說明,以解決實際圖像處理為依托,從理論開始介紹TensorFlow OpenCV程序設計模式,多角度、多方面地對其中的原理和實現(xiàn)提供翔實的分析,同時結(jié)合實際案例編寫的應用程序設計可以使讀者從開發(fā)者的層面掌握TensorFlow程序的設計方法和技巧、為開發(fā)出更強大的圖像處理應用打下扎實的基礎。
本書的優(yōu)勢
(1)本書偏重于介紹使用卷積神經(jīng)網(wǎng)絡及其相關變化的模型,在TensorFlow框架上進行圖像特征提取、圖像識別以及具體應用,這是目前已出版圖書中鮮有涉及的。
(2)本書并非枯燥的理論講解,而是作者閱讀和參考了大量最新文獻做出的歸納總結(jié),在這點上也與其他編程書籍有本質(zhì)區(qū)別。書中的例子都是來自于現(xiàn)實世界中對圖像分辨和特征的競賽優(yōu)勝模型,通過介紹這些例子可以使讀者更深一步地了解和掌握其內(nèi)在的算法和本質(zhì)。
(3)本書作者有長期研究生和本科教學經(jīng)驗,通過通俗易懂的語言對全部內(nèi)容進行講解,深入淺出地介紹反饋神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡理論體系的全部知識點,并在程序編寫時使用官方推薦的TensorFlow最新框架進行程序設計,幫助讀者更好地使用最新的模型框架、理解和掌握TensorFlow程序設計的精妙之處。
(4)掌握和使用深度學習的人才應該在掌握基本知識和理論的基礎上,重視實際應用程序開發(fā)能力和解決問題能力的培養(yǎng)。因此,本書結(jié)合作者在實際工作中遇到的實際案例進行分析,抽象化核心模型并給出具體解決方案,并提供了全部程序例題的相應代碼以供讀者學習。
本書的內(nèi)容
本書共分為13章,所有代碼均采用Python語言(TensorFlow框架推薦使用的語言)編寫。
第1章介紹計算機視覺與深度學習的關系,旨在說明使用深度學習和人工智能實現(xiàn)計算機視覺是未來的發(fā)展方向,也是必然趨勢。
第2章介紹Python 3.6 Tensorflow 1.9 OpenCV 3.4.2的環(huán)境搭建。Python語言是易用性非常強的語言,可以很方便地將公式和愿景以代碼的形式表達出來,而無須學習過多的編程知識。本章還介紹Python專用類庫threading的使用。這個類庫雖不常見,但會為后文的數(shù)據(jù)讀取和TensorFlow專用格式的生成打下基礎。
第3章主要介紹Python語言的使用。通過介紹和實現(xiàn)不同的Python類庫,幫助讀者強化Python的編程能力、學習相應類庫。這些都是在后文中反復使用的內(nèi)容。同時借用掌握的知識學習數(shù)據(jù)的可視化展示能力(在數(shù)據(jù)分析中是一項基本技能,具有非常重要的作用)。
第4章全面介紹機器學習的基本分類、算法和理論基礎,以及不同算法(例如回歸算法和決策樹算法)的具體實現(xiàn)和應用。這些是深度學習的基礎理論部分,向讀者透徹而準確地展示深度學習的結(jié)構(gòu)與應用,為后文進一步掌握深度學習在計算機視覺中的應用打下扎實的基礎。
第5~6章是對OpenCV類庫(Python中專門用于圖像處理的類庫)使用方法的介紹。本書以圖像處理為重點,因此對圖像數(shù)據(jù)的讀取、編輯以及加工是重中之重。通過基礎講解和進階介紹,讀者可以掌握這個重要類庫的使用,學會對圖像的裁剪、變換和平移的代碼編寫。
第7~8章是TensorFlow的入門基礎,通過一個娛樂性質(zhì)的網(wǎng)站向讀者介紹TensorFlow的基本應用,用圖形圖像的方式演示神經(jīng)網(wǎng)絡進行類別分類的擬合過程,在娛樂的同時了解其背后的技術(shù)。
第9章是本書的一個重點,也是神經(jīng)網(wǎng)絡的基礎內(nèi)容。本章的反饋算法是解決神經(jīng)網(wǎng)絡計算量過大的里程碑算法。作者使用通俗易懂的語言,通過詳細嚴謹?shù)闹v解,對這個算法進行了介紹,并且通過獨立編寫代碼的形式,為讀者實現(xiàn)神經(jīng)網(wǎng)絡中最重要的算法。本章的內(nèi)容看起來不多,但是非常重要。
第10章對TensorFlow的數(shù)據(jù)輸入輸出做了詳細的介紹。從讀取CSV文件開始,到教會讀者制作專用的TensorFlow數(shù)據(jù)格式TFRecord,這是目前市面上的書籍鮮有涉及的。對于使用TensorFlow框架進行程序編寫,數(shù)據(jù)的準備和規(guī)范化是重中之重,因此本章也是較為重要的一個章節(jié)。
第11~12章是應用卷積神經(jīng)網(wǎng)絡在TensorFlow框架上進行學習的一個基礎教程,經(jīng)過前面章節(jié)的鋪墊和介紹,采用基本理論卷積神經(jīng)網(wǎng)絡進行手寫體的辨識是深度學習最基本的技能,也是非常重要的一個學習基礎。并且在程序編寫的過程中,作者向讀者展示了參數(shù)調(diào)整對模型測試結(jié)果的重要作用,這也是目前市面上相關書籍沒有涉及的內(nèi)容,非常重要。
第13章通過一個完整的例子演示使用卷積神經(jīng)網(wǎng)絡進行圖像識別的流程。例子來自于ImageNet圖像識別競賽,所采用的模型也是比賽中獲得準確率最高的模型。通過對項目每一步的詳細分析,手把手地教會讀者使用卷積神經(jīng)網(wǎng)絡進行圖像識別。
除此之外,全書對于目前圖像識別最流行和取得最好成績的深度學習模型做了介紹,這些都是目前深度學習的熱點和研究重點。
本書的特點
? 本書不是純粹的理論知識介紹,也不是高深技術(shù)研討,完全是從實踐應用出發(fā),用最簡單的、典型的示例引申出核心知識,最后還指出了通往高精尖進一步深入學習的道路。
? 本書沒有深入介紹某一個知識塊,而是全面介紹TensorFlow OpenCV涉及的圖像處理的基本結(jié)構(gòu)和上層程序設計方法,借此能夠系統(tǒng)綜合性地掌握深度學習的全貌,使讀者在學習過程中不至于迷失方向。
? 本書在寫作上淺顯易懂,沒有深奧的數(shù)學知識,采用較為形象的形式,用大量圖像例子描述應用的理論知識,讓讀者在輕松愉悅的閱讀下掌握相關內(nèi)容。
? 本書旨在引導讀者進行更多技術(shù)上的創(chuàng)新,每章都會用示例描述的形式幫助讀者更好地理解本章的學習內(nèi)容。
? 本書代碼遵循重構(gòu)原理,避免代碼污染,真心希望讀者能寫出優(yōu)秀、簡潔、可維護的代碼。
示例代碼下載
本書配套的示例代碼下載地址可以通過掃描右邊二維碼獲取。
如果下載有問題,或者對本書有疑問和建議,請聯(lián)系booksaga@163.com,郵件主題為OpenCV TensorFlow。
本書適合人群
本書適合于學習人工神經(jīng)網(wǎng)絡、深度學習、計算機視覺以及TensorFlow程序設計等相關技術(shù)的程序設計人員閱讀,也可以作為高等院校和培訓學校相關專業(yè)的教材。建議在學習本書的過程中,理論聯(lián)系實際,獨立進行一些代碼編寫,采取開放式的實驗方法,即讀者自行準備實驗數(shù)據(jù)和實驗環(huán)境,解決實際問題。
本書作者
本書作者現(xiàn)為高校計算機專業(yè)副教授,擔負數(shù)據(jù)挖掘、Java程序設計、數(shù)據(jù)結(jié)構(gòu)等多項本科及研究生課程,研究方向為數(shù)據(jù)倉庫與數(shù)據(jù)挖掘、人工智能、機器學習,在研和參研多項科研項目。本書在寫作過程中得到了家人的大力支持,在此對他們表示感謝。
以盡致的文字、嚴密的邏輯、合時的題材、豐富的內(nèi)涵服務社會,是作者編寫本書的宗旨。但因認識局限,不足之處還望大家多多指正。
王曉華
2018年10月
王曉華,高校資深計算機專業(yè)講師,給研究生和本科生講授面向?qū)ο蟪绦蛟O計、數(shù)據(jù)結(jié)構(gòu)、Hadoop程序設計等相關課程。主要研究方向為云計算、數(shù)據(jù)挖掘。曾主持和參與多項國家和省級科研課題,獨立完成一項科研成果并獲省級成果認定,發(fā)表過多篇論文,申請有一項專利。著有《Spark MLlib機器學習實踐》《TensorFlow深度學習應用實踐》等圖書。
目 錄
第1章 計算機視覺與深度學習 1
1.1 計算機視覺與深度學習的關系 1
1.1.1 人類視覺神經(jīng)的啟迪 2
1.1.2 計算機視覺的難點與人工神經(jīng)網(wǎng)絡 3
1.1.3 應用深度學習解決計算機視覺問題 4
1.2 計算機視覺學習的基礎與研究方向 5
1.2.1 學習計算機視覺結(jié)構(gòu)圖 5
1.2.2 計算機視覺的學習方式和未來趨勢 6
1.3 本章小結(jié) 7
第2章 Python的安裝與使用 8
2.1 Python基本安裝和用法 8
2.1.1 Anaconda的下載與安裝 9
2.1.2 Python編譯器PyCharm的安裝 12
2.1.3 使用Python計算softmax函數(shù) 15
2.2 TensorFlow類庫的下載與安裝(基于CPU模式) 16
2.3 TensorFlow類庫的下載與安裝(基于GPU模式) 18
2.3.1 CUDA配置 18
2.3.2 cuDNN配置 21
2.4 OpenCV類庫的下載與安裝 22
2.5 Python常用類庫中的threading 24
2.5.1 threading庫的使用 25
2.5.2 threading模塊中最重要的Thread類 25
2.5.3 threading中的Lock類 26
2.5.4 threading中的join類 27
2.6 本章小結(jié) 28
第3章 Python數(shù)據(jù)處理及可視化 29
3.1 從小例子起步NumPy的初步使用 29
3.1.1 數(shù)據(jù)的矩陣化 29
3.1.2 數(shù)據(jù)分析 31
3.1.3 基于統(tǒng)計分析的數(shù)據(jù)處理 32
3.2 圖形化數(shù)據(jù)處理Matplotlib包的使用 33
3.2.1 差異的可視化 33
3.2.2 坐標圖的展示 34
3.2.3 玩?zhèn)大的數(shù)據(jù)集 36
3.3 深度學習理論方法相似度計算 38
3.3.1 基于歐幾里得距離的相似度計算 38
3.3.2 基于余弦角度的相似度計算 39
3.3.3 歐幾里得相似度與余弦相似度的比較 40
3.4 數(shù)據(jù)的統(tǒng)計學可視化展示 41
3.4.1 數(shù)據(jù)的四分位 41
3.4.2 數(shù)據(jù)的四分位示例 42
3.4.3 數(shù)據(jù)的標準化 46
3.4.4 數(shù)據(jù)的平行化處理 47
3.4.5 熱點圖-屬性相關性檢測 49
3.5 Python數(shù)據(jù)分析與可視化實戰(zhàn)某地降水的關系處理 50
3.5.1 不同年份的相同月份統(tǒng)計 50
3.5.2 不同月份之間的增減程度比較 52
3.5.3 每月降水是否相關 53
3.6 本章小結(jié) 54
第4章 深度學習的理論基礎機器學習 55
4.1 機器學習基本分類 55
4.1.1 基于學科的分類 55
4.1.2 基于學習模式的分類 56
4.1.3 基于應用領域的分類 56
4.2 機器學習基本算法 57
4.2.1 機器學習的算法流程 57
4.2.2 基本算法的分類 58
4.3 算法的理論基礎 60
4.3.1 小學生的故事求圓的面積 60
4.3.2 機器學習基礎理論函數(shù)逼近 61
4.4 回歸算法 62
4.4.1 函數(shù)逼近經(jīng)典算法線性回歸算法 62
4.4.2 線性回歸的姐妹邏輯回歸 64
4.5 機器學習的其他算法決策樹 65
4.5.1 水晶球的秘密 65
4.5.2 決策樹的算法基礎信息熵 66
4.5.3 決策樹的算法基礎ID3算法 67
4.6 本章小結(jié) 68
第5章 計算機視覺處理庫OpenCV 70
5.1 認識OpenCV 70
5.1.1 OpenCV的結(jié)構(gòu) 70
5.1.2 從雪花電視談起在Python中使用OpenCV 74
5.2 OpenCV基本的圖片讀取 75
5.2.1 基本的圖片存儲格式 76
5.2.2 圖像的讀取與存儲 78
5.2.3 圖像的轉(zhuǎn)換 78
5.2.4 使用NumPy模塊對圖像進行編輯 80
5.3 OpenCV的卷積核處理 81
5.3.1 計算機視覺的三種不同色彩空間 81
5.3.2 卷積核與圖像特征提取 82
5.3.3 卷積核進階 84
5.4 本章小結(jié) 85
第6章 OpenCV圖像處理實戰(zhàn) 86
6.1 圖片的自由縮放以及邊緣裁剪 86
6.1.1 圖像的擴縮裁挖 86
6.1.2 圖像色調(diào)的調(diào)整 87
6.1.3 圖像的旋轉(zhuǎn)、平移和翻轉(zhuǎn) 89
6.2 使用OpenCV擴大圖像數(shù)據(jù)庫 90
6.2.1 圖像的隨機裁剪 90
6.2.2 圖像的隨機旋轉(zhuǎn)變換 91
6.2.3 圖像色彩的隨機變換 92
6.2.4 對鼠標的監(jiān)控 93
6.3 本章小結(jié) 94
第7章 Lets play TensorFlow 95
7.1 TensorFlow游樂場 95
7.1.1 I want to play a game 95
7.1.2 TensorFlow游樂場背后的故事 99
7.1.3 如何訓練神經(jīng)網(wǎng)絡 101
7.2 Hello TensorFlow 102
7.2.1 TensorFlow名稱的解釋 102
7.2.2 TensorFlow基本概念 103
7.2.3 TensorFlow基本架構(gòu) 105
7.3 本章小結(jié) 106
第8章 Hello TensorFlow,從0到1 107
8.1 TensorFlow的安裝 107
8.2 TensorFlow常量、變量和數(shù)據(jù)類型 109
8.3 TensorFlow矩陣計算 114
8.4 Hello TensorFlow 115
8.5 本章小結(jié) 120
第9章 TensorFlow重要算法基礎 122
9.1 BP神經(jīng)網(wǎng)絡簡介 122
9.2 BP神經(jīng)網(wǎng)絡兩個基礎算法詳解 124
9.2.1 最小二乘法詳解 125
9.2.2 道士下山的故事梯度下降算法 127
9.3 TensorFlow實戰(zhàn)房屋價格的計算 130
9.3.1 數(shù)據(jù)收集 130
9.3.2 模型的建立與計算 131
9.3.3 TensorFlow程序設計 133
9.4 反饋神經(jīng)網(wǎng)絡反向傳播算法介紹 135
9.4.1 深度學習基礎 135
9.4.2 鏈式求導法則 136
9.4.3 反饋神經(jīng)網(wǎng)絡原理與公式推導 138
9.4.4 反饋神經(jīng)網(wǎng)絡原理的激活函數(shù) 143
9.4.5 反饋神經(jīng)網(wǎng)絡原理的Python實現(xiàn) 144
9.5 本章小結(jié) 150
第10章 TensorFlow數(shù)據(jù)的生成與讀取 151
10.1 TensorFlow的隊列 151
10.1.1 隊列的創(chuàng)建 151
10.1.2 線程同步與停止 155
10.1.3 隊列中數(shù)據(jù)的讀取 156
10.2 CSV文件的創(chuàng)建與讀取 157
10.2.1 CSV文件的創(chuàng)建 157
10.2.2 CSV文件的讀取 158
10.3 TensorFlow文件的創(chuàng)建與讀取 160
10.3.1 TFRecords文件的創(chuàng)建 160
10.3.2 TFRecords文件的讀取 163
10.3.3 圖片文件的創(chuàng)建與讀取 164
10.4 本章小結(jié) 169
第11章 卷積神經(jīng)網(wǎng)絡的原理 170
11.1 卷積運算基本概念 170
11.1.1 卷積運算 171
11.1.2 TensorFlow中卷積函數(shù)實現(xiàn)詳解 172
11.1.3 使用卷積函數(shù)對圖像感興趣區(qū)域進行標注 176
11.1.4 池化運算 178
11.1.5 使用池化運算加強卷積特征提取 180
11.2 卷積神經(jīng)網(wǎng)絡的結(jié)構(gòu)詳解 181
11.2.1 卷積神經(jīng)網(wǎng)絡原理 181
11.2.2 卷積神經(jīng)網(wǎng)絡的應用實例LeNet5網(wǎng)絡結(jié)構(gòu) 184
11.2.3 卷積神經(jīng)網(wǎng)絡的訓練 186
11.3 TensorFlow實現(xiàn)LeNet實例 186
11.3.1 LeNet模型分解 187
11.3.2 使用ReLU激活函數(shù)替代Sigmoid 191
11.3.3 程序的重構(gòu)模塊化設計 195
11.3.4 卷積核和隱藏層參數(shù)的修改 199
11.4 本章小結(jié) 205
第12章 卷積神經(jīng)網(wǎng)絡公式的推導與應用 206
12.1 反饋神經(jīng)網(wǎng)絡算法 206
12.1.1 經(jīng)典反饋神經(jīng)網(wǎng)絡正向與反向傳播公式推導 206
12.1.2 卷積神經(jīng)網(wǎng)絡正向與反向傳播公式推導 209
12.2 使用卷積神經(jīng)網(wǎng)絡分辨CIFAR-10數(shù)據(jù)集 217
12.2.1 CIFAR-10數(shù)據(jù)集下載與介紹 217
12.2.2 CIFAR-10模型的構(gòu)建與數(shù)據(jù)處理 219
12.2.3 CIFAR-10模型的細節(jié)描述與參數(shù)重構(gòu) 228
12.3 本章小結(jié) 229
第13章 貓狗大戰(zhàn)實戰(zhàn)AlexNet圖像識別 230
13.1 AlexNet簡介 231
13.1.1 AlexNet模型解讀 231
13.1.2 AlexNet程序的實現(xiàn) 234
13.2 實戰(zhàn)貓狗大戰(zhàn)AlexNet模型 239
13.2.1 數(shù)據(jù)的收集與處理 240
13.2.2 模型的訓練與存儲 244
13.2.3 使用訓練過的模型預測圖片 250
13.2.4 使用Batch_Normalization正則化處理數(shù)據(jù)集 257
13.3 本章小結(jié) 266