-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
10/8 新書到! 10/1 新書到! 9/24 新書到! 9/18 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深度學習計算機視覺實戰 卷積神經網絡、Python 、TensorFlow和Kivy

( 簡體 字)
作者:[埃] 艾哈邁德·法齊·迦得(Ahmed Fawzy Gad)著 林賜 譯類別:1. -> 程式設計 -> 深度學習
   2. -> 教材 -> 數位影像處理
譯者:
出版社:清華大學出版社深度學習計算機視覺實戰 卷積神經網絡、Python 、TensorFlow和Kivy 3dWoo書號: 53594
詢問書籍請說出此書號!

缺書
NT售價: 490

出版日:9/1/2020
頁數:324
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302558224
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

人工智能(Artificial Intelligence,AI)是將人類思維嵌入計算機的一個領域。換句話說,就是創建模仿生物大腦功能的人工大腦。現在,人們需要將使用智能可做的所有事情轉移到機器中。第一代AI專注于人類可以規范描述的問題。進行智能操作的步驟以機器必須遵循的指令形式來描述。機器遵循人類給出的步驟,而不做任何改變。這些是第一代AI的特征。
人類可以完整描述一些簡單問題,如井字游戲甚至是國際象棋,但無法描述更復雜的問題。在國際象棋中,將棋盤表示為8×8大小的矩陣可以簡單地解釋問題,描述每個棋子及其走法。機器將僅限于完成人類規范描述的那些任務。通過編寫此類指令,機器可智能地下棋,此時機器智能是人工的。機器本身不是智能的,但人類能以幾條靜態代碼行的形式將其智能傳遞給機器。所謂“靜態”,這表示在所有情況下機器行為都是相同的。
這種狀況下,機器與人類緊密相連,不能單獨工作。這就像是主仆關系。人類是主人,機器是仆人,后者僅遵循人類的指令,而不能做其他事情。
將智能行為嵌入代碼塊并不能處理人類的所有智能行為。一些簡單任務(如排序數字)可以由人類描述,然后交由機器處理,它們具有100%的人類智能。但某些復雜任務,例如語音轉文本、圖像識別、情感分析等,不能僅通過代碼來解決。此類問題無法像國際象棋那樣被人類描述。我們不可能編寫代碼識別貓等圖片對象。由于不存在分類物體的單一規則,因此此類識別物體的智能行為不能簡單地使用靜態代碼解決。例如,不存在識別貓的規則。即使某條規則能夠成功創建,可以識別某個環境中的貓,但當應用到另一個環境中時,也必然失敗。那么,對于此類任務,我們如何使機器擁有智能呢?這就要實現機器學習(Machine Learning,ML),即由機器學習規則。
為了使機器能夠識別對象,我們可以按照機器可理解的方式提供來自專家的先驗知識。這種基于知識的系統構成第二代AI。此類系統的其中一個挑戰在于如何處理不確定性和未知知識。人類可以在不同的復雜環境中識別對象,能夠智能地處理不確定性和未知知識,但機器不能。
在ML中,人類負責完成研究數據的復雜任務,要找出哪些類型的特征能夠準確地對對象進行分類。遺憾的是,找到最佳類型的特征是一項艱巨的任務。這是研究人員針對不同應用正嘗試進行回答的問題。例如,為診斷疾病,專業人士首先要收集患者和未患病者的數據,對這些數據進行正確標記,然后找到可以明確區分他們的某些類型的特征。這類特征可能是年齡、性別、血糖和血壓。數據集越大,人類找到適用于所有樣本的特征的難度就越大,因此這是一項非常具有挑戰性的任務。
但如今,我們可以訓練ML模型來了解如何區分不同的類別。ML算法可以找到合適的數學函數,在輸入和輸出之間建立最健壯的關系。
機器學習算法并不能解決所有問題。關鍵的智能仍然存在于人類專家的頭腦中,而非機器中。人類收集和標記數據,提取最合適的特征,并選擇最佳的ML算法。在這之后,機器學習算法僅學習人類所講的內容。在尋找將輸入映射到輸出的規則的過程中,機器仍然起著重要的作用。
通常,使用來自特定環境的數據進行訓練的ML算法不能用在其他環境中。這是一個關鍵的限制。整個世界存在著大量數據,數據每天都在增加,傳統的機器學習技術不適合對其進行處理。例如,使用一組工程化的特征描述圖像是非常復雜的,這是因為即使在同一環境中,情況也是富于變化的。我們應該重復這項工作(即特征工程),以使ML算法能夠適用于其他環境。
隨著類別數量的增加,人類找到好的區別性特征的能力會降低,因此我們不應該依賴于人類,而要將這些工作留給機器。機器本身會嘗試探索數據,找到合適的特征,以區分不同的類別。我們僅需要提供數據給機器即可。這就是深度學習(Deep Learning,DL)。人們正趨于使用卷積神經網絡(CNN)這個DL模型處理大量圖像。
DL領域著重于學習如何從原始數據中得出結論,而無須進行特征工程之類的中間步驟。這就是實際上DL可以被稱為“自動化特征工程”的原因。它對處理器和內存的要求比較高,可能需要數周的時間區分不同的類別。
《深度學習計算機視覺實戰》針對的是未來的數據科學家,這些科學家正逐步開始了解DL的基本概念,以用于計算機視覺。讀者應該對圖像處理和Python有一個基本了解。以下是各章內容的概述。
第1章基于計算機視覺中一些常用特征描述子的介紹,選擇了最適合的特征集對Fruits 360數據集進行分類。此類特征使用Python實現。通過在預處理步驟中過濾此類特征,可以使用最少數目的特征進行分類。該章得出的結論是,傳統的手工特征不適用于復雜問題。DL是處理大量樣本及類別的替代方法。
第2章討論人工神經網絡(Artificial Neural Network,ANN),這是DL模型的基礎。它首先解釋了ANN僅是線性模型的組合。我們通過指定最佳層數和神經元為一些簡單示例設計ANN架構。基于數值示例和Python示例,我們可以清楚地知道ANN如何進行前向和后向傳遞。
第3章使用第2章中的特征集實現ANN,對Fruits 360 數據集的子集進行分類。由于在實現過程中未使用任何優化技術,因此分類正確率較低。
第4章簡單介紹單目標和多目標優化技術。它使用基于隨機技術的遺傳算法優化ANN權重。這將分類正確率提高到97%以上。
第5章討論識別多維信號的CNN。該章從強調全連接神經網絡(FCNN)和CNN之間的差別以及CNN如何從FCNN中衍生出來開始。基于數值示例,CNN中的兩個基本操作(即卷積和池化)的概念將逐漸變得清晰。我們可以使用NumPy實現CNN層,從而詳細了解CNN如何工作。
第6章介紹DL庫TensorFlow,我們使用這個庫構建用于并行和分布式處理大量數據的DL模型。通過構建簡單的線性模型和模擬XOR門的ANN等示例,我們討論了TensorFlow占位符、變量、數據流圖和TensorBoard。在該章結束時,使用tensorflow.nn 模塊創建了CNN,用于分類CIFAR10數據集。
第7章將訓練過的模型部署到Web服務器上,以便讓互聯網用戶使用Web瀏覽器進行訪問。我們使用Flask微框架創建Web應用,使用HTML、CSS和JavaScript構建前端頁面來訪問Web服務器。HTML頁面發送帶有一張圖像的HTTP請求到服務器,服務器使用預測類別對請求進行響應。
第8章使用Kivy開源庫構建跨平臺應用。通過將Kivy鏈接到NumPy,我們可以構建數據科學應用,不作任何改變地在不同平臺上進行工作。這消除了對特定平臺自定義代碼的開銷。我們創建了一個Android應用,它讀取圖像并執行第5章中使用NumPy實現的CNN。
為了讓他人從所創建的項目中受益,我們可以將其在線發布。附錄A討論了如何打包Python項目,將它們發布到Python包索引(PyPI)倉庫。
在開始學習之前,讓我們先簡單了解《深度學習計算機視覺實戰》中使用的Python環境。
《深度學習計算機視覺實戰》中的所有代碼都使用Python實現。由于使用原生Python處理圖像的工作非常復雜,因此我們在各章中使用了多個庫幫助生成高效的實現。
首先,我們可以從www.python.org/downloads這個鏈接下載原生Python代碼。《深度學習計算機視覺實戰》使用Python 3(請安裝適用于你的系統的Python版本)。下一步是準備《深度學習計算機視覺實戰》需要的所有庫。我們不建議單獨安裝各個庫,而推薦使用Anaconda Python發行版(可以通過鏈接www.anaconda.com/download進行下載)。它支持Windows、Mac和Linux并打包了超過1400個的數據科學庫。我們可以從https://repo.anaconda. com/pkgs這個頁面訪問所有受支持的軟件包的列表。只要在計算機上安裝了Anaconda,所有支持的庫就都可以使用。這有助于快速準備好Python環境。
《深度學習計算機視覺實戰》所需的庫為NumPy、SciPy、Matplotlib、scikit-image、scikit-learn、TensorFlow、Flask、werkzeug、Jinja、pickle、Pillow和Kivy。除了Kivy外,Anaconda支持所有這些庫。在《深度學習計算機視覺實戰》的各個章節中,我們可以看到各個庫的函數。注意,此類庫很容易安裝。在安裝了原生Python后,可使用pip安裝程序下載并安裝庫,所基于的指令為pip install <lib-name>。我們僅需要輸入庫的名稱。有些安裝并不簡單,可能隨著系統的改變而改變。因此,我們無法涵蓋不同的安裝。出于這個原因,比起分別安裝各個庫,Anaconda是更好的選擇。讓我們繼續討論所需的庫。
Python支持許多內置的數據結構:列表、元組、字典、集合和字符串。但在數據科學應用中,沒有一種數據結構可提供靈活性。
這些數據結構支持同時使用不同的數據類型工作。相同的數據結構可能包含數字、字符、對象等。字符串是個例外,它只支持字符。此外,字符串和元組是不可變的,這意味著在創建后,我們不可能改變它們的值。使用字典保存圖像像素要求為每個像素添加鍵,但這會增大所保存數據的量。集合僅限于集合操作,而圖像不限于此類操作。
談到圖像,這是《深度學習計算機視覺實戰》的主要內容,列表是合適的數據結構。這是一種可變的數據類型,能夠存放矩陣。不過,使用列表會使過程變得復雜。由于不同的數值數據類型可以保存在相同的列表中,因此我們必須確定每一項都是某一特定類型的數值類型。為應用簡單的操作(如將一個數字加到圖像上),我們必須寫一個循環訪問每個元素,單獨地應用此種操作。在數據科學應用中,我們推薦使用工具讓操作變得簡單。在構建應用時,我們需要克服一些富有挑戰性的任務,而在編寫此類任務時,我們沒有必要增加另一個挑戰。
出于這種原因,我們使用了NumPy庫。它的基本作用是在Python語言中支持一種新的數據結構,即數組。使用NumPy數組比使用列表簡單。例如,在將圖像轉換為NumPy數組后,僅使用加法操作,我們就可以將某個數字添加到圖像中的每個元素上。許多其他的庫也有相應函數接收并返回NumPy數組。
雖然在NumPy數組內部支持某些操作,但這不意味著要應用這些操作。SciPy庫支持NumPy數組中的相同操作。它也支持使用scipy.ndimage子模塊處理n維NumPy數組(例如圖像)。對于有關圖像的更多高級操作,我們使用scikit-image庫。例如,使用此庫可以提取圖像特征。
在讀取圖像并應用一些操作后,我們使用Matplotlib顯示圖像。我們僅將其用于2D可視化,但是它也支持一些3D特征。
在讀取圖像、提取特征并進行可視化后,我們可以使用scikit-learn庫構建ML模型。它支持備用的不同類型的模型。只需要提供輸入、輸出及其參數,即可獲得已訓練的模型。
訓練完ML模型后,可使用pickle庫將其保存,供以后使用。pickle庫可以序列化和反序列化對象。此時,我們可構建和保存ML模型。然后,我們可以轉向使用TensorFlow構建和保存DL模型。這是最常使用的DL庫,它支持不同的API,可同時滿足專業人士和初學者的需求。TensorFlow用自己的方式保存已訓練的模型。
Flask是用于構建Web應用程序的微框架,我們使用它部署已訓練的模型。通過將已訓練的模型部署到Web服務器上,客戶端可以使用Web瀏覽器進行訪問。它們可以上傳測試圖像到服務器,接收類別標簽。Flask使用Jinja2模板引擎和WSGI構建應用。因此,我們必須安裝Jinja和werkzeug庫。
為構建可以在設備上運行的數據科學移動應用,我們要使用Kivy。這是支持Python代碼跨平臺運行的Python庫。在《深度學習計算機視覺實戰》中,我們使用Kivy構建適用于Android設備的豐富數據科學應用。在市面上,我們可以使用Kivy生成的APK,它與通常使用Android Studio創建的APK一模一樣。
Kivy使用python-for-android打包器,它允許添加所需的依賴包到Android應用程序中。由于scikit-image不支持python-for-android,因此我們使用Pillow讀取圖像,這個庫支持在Android設備上運行。
內容簡介:

主要內容
● 理解ANN和CNN的工作機制
● 使用Python從頭創建計算機視覺應用和CNN
● 使用TensorFlow從概念到生產學習深度學習項目
● 與Kivy配合使用NumPy構建跨平臺的數據科學應用
目錄:

第1章計算機視覺識別1
1.1圖像識別步驟2
1.2特征提取3
1.2.1顏色直方圖4
1.2.2GLCM9
1.2.3HOG14
1.2.4LBP28
1.3特征選擇和縮減30
1.3.1過濾器方法30
1.3.2包裝器方法31
1.3.3嵌入式方法32
1.3.4正則化33
第2章人工神經網絡35
2.1人工神經網絡簡介36
2.1.1線性模型是人工神經網絡的基礎36
2.1.2繪制人工神經網絡40
2.2調整學習率來訓練ANN43
2.2.1過濾器示例44
2.2.2學習率47
2.2.3測試網絡49
2.3使用向后傳播優化權重49
2.3.1無隱藏層神經網絡的向后傳播49
2.3.2權重更新公式52
2.3.3為什么向后傳播算法很重要53
2.3.4前向傳遞與后向傳遞53
2.3.5具有隱藏層的神經網絡的向后傳播59
2.4過擬合68
2.4.1基于回歸示例理解正則化70
2.4.2模型容量/復雜性72
2.4.3L1正則化74
2.5設計ANN76
2.5.1示例1:無隱藏層的ANN76
2.5.2示例2:具有單個隱藏層的ANN79
第3章使用具有工程化特征的人工神經網絡進行識別83
3.1Fruits360數據集特征挖掘83
3.1.1特征挖掘83
3.1.2特征縮減89
3.1.3使用ANN進行過濾91
3.2ANN實現93
3.3工程化特征的局限性99
3.4工程化特征并未終結100
第4章人工神經網絡的優化101
4.1優化簡介101
4.2GA104
4.2.1選擇最佳親本106
4.2.2變化算子107
4.2.3示例的Python實現109
4.3NSGA-II119
4.3.1NSGA-II步驟119
4.3.2支配度121
4.3.3擁擠距離126
4.3.4競賽選擇128
4.3.5交叉129
4.3.6突變129
4.4使用GA優化ANN130
第5章卷積神經網絡143
5.1從人工神經網絡到卷積神經網絡143
5.1.1深度學習背后的直覺144
5.1.2卷積的推導147
5.1.3設計CNN156
5.1.4池化操作159
5.1.5卷積操作示例160
5.1.6最大池化操作示例162
5.2使用NumPy從頭開始構建CNN163
5.2.1讀取輸入圖像163
5.2.2準備過濾器164
5.2.3卷積層165
5.2.4ReLU層170
5.2.5最大池化層171
5.2.6堆疊層172
5.2.7完整代碼174
第6章TensorFlow在圖像識別中的應用183
6.1TF簡介183
6.1.1張量184
6.1.2TFCore184
6.1.3數據流圖185
6.1.4使用TB的圖可視化195
6.1.5線性模型197
6.2構建FFNN203
6.2.1線性分類204
6.2.2非線性分類211
6.3使用CNN識別CIFAR10216
6.3.1準備訓練數據216
6.3.2構建CNN218
6.3.3訓練CNN222
6.3.4保存已訓練模型226
6.3.5構建和訓練CNN的完整代碼226
6.3.6準備測試數據236
6.3.7測試已訓練的CNN模型237
第7章部署預訓練模型239
7.1應用概述239
7.2Flask介紹240
7.2.1route()裝飾器241
7.2.2add_rule_url方法243
7.2.3變量規則243
7.2.4端點245
7.2.5HTML表單246
7.2.6上傳文件248
7.2.7Flask應用內的HTML250
7.2.8靜態文件254
7.3部署使用Fruits360數據集訓練過的模型256
7.4部署使用CIFAR10數據集訓練過的模型263
第8章跨平臺的數據科學應用277
8.1Kivy簡介278
8.1.1使用BoxLayout的基本應用278
8.1.2Kivy應用的生命周期279
8.1.3部件尺寸282
8.1.4網格布局284
8.1.5更多部件285
8.1.6部件樹287
8.1.7處理事件289
8.1.8KV語言291
8.2P4A295
8.2.1安裝Buildozer295
8.2.2準備buildozer.spec文件296
8.2.3使用Buildozer構建Android應用298
8.3Android上的圖像識別300
8.4Android上的CNN305
附錄A使用pip安裝程序安裝自制項目包313
序: