深度學習進階:卷積神經網絡和對象檢測
內容描述
本書包含卷積神經網絡的核心算法的複雜細節和精妙內容。
在本書中,你能學到有關使用Keras和TensorFlow實現CNN和對象檢測的高級主題。
在學習的過程中,你會看到CNN中的基本操作,例如卷積和池化,然後學習更高級架構,例如初始網絡、ResNet等。
在學習理論主題的同時,你將學到很多Keras的高效應用技巧,包括如何使用自定義回調類自定義Keras中的日誌、
Eager Execution的概念以及如何在模型中使用它。
最後,本書將研究對象檢測的工作原理,並使用Keras和TensorFlow構建YOLO算法的完整實現。
學習完本書時,你將會使用Keras實現各種模型,並學到許多高級技巧,使你的技能更上一層樓。
本書包含以下內容卷積神經網絡和對象檢測的工作原理。
如何將權重和模型保存到磁盤上。
如何暫停訓練並重新啟動。
如何在代碼中使用硬件加速(GPU)。
如何使用Dataset TensorFlow抽象、使用預訓練的模型和進行遷移學習。
如何在預訓練的網絡中刪除和添加層,以使其適應特定項目。
如何將經過預訓練的模型(例如Alexnet和VGG16)應用於新數據集。
目錄大綱
目錄
前言
致謝
第1章簡介和設置開發環境1
1.1 GitHub存儲庫和配套網站2
1.2必備的數學知識3
1.3 Python開發環境3
1.3.1 Google Colab 4
1.3.2 Anaconda 6
1.3.3 Docker映像14
1.3. 4你選擇哪個選項18
第2章TensorFlow:高級主題20
2.1 Eager Execution簡介21
2.1.1啟用Eager Execution 21
2.1.2 Eager Execution多項式擬合22
2.1.3應用Eager Execution的MNIST數據分類26
2.2 TensorFlow和Numpy兼容性30
2.3硬件加速30
2.3.1檢測GPU的可用性30
2.3.2設備名稱31
2.3.3顯式設備使用32
2.3.4 GPU加速器演示:矩陣乘法33
2.3.5 MNIST示例上的GPU加速效果34
2.4僅特定層訓練36
2.4.1僅特定層訓練示例37
2.4.2層移除40
2.5 Keras回調函數42
2.5.1自定義回調類42
2.5.2自定義回調類示例44
2.6模型存儲與加載47
2.6.1手動保存權重52
2.6.2保存整個模型53
2.7數據集抽像類53
2.7.1遍歷數據集55
2.7.2簡單批處理56
2.7.3使用MNIST數據集進行簡單批處理57
2.7.4在Eager Execution模式下使用tf.data.Dataset 60
2.8本章小結60
第3章卷積神經網絡的基礎61
3.1核和過濾器61
3.2卷積62
3.3卷積示例71
3.4池化77
3.5 CNN的構建基塊81
3.5.1卷積層82
3.5.2池化層83
3.5.3疊加層84
3.6 CNN的權重數量84
3.6.1卷積層84
3.6.2池化層85
3.6.3稠密層85
3.7 CNN的示例:MNIST數據集85
3.8 CNN學習的可視化89
3.8.1 keras.backend.function()簡介89
3.8.2核的作用效果91
3.8.3最大池化的作用效果93
第4章高級CNN與遷移學習95
4.1多通道卷積95
4.2初始網絡的歷史和基礎98
4.2.1初始模塊:初始版本99
4.2.2初始模塊中的參數數量100
4.2.3具有降維功能的初始模塊100
4.3多種成本函數:GoogLeNet 102
4.4 Keras中的初始模塊示例103
4.5偏離:Keras中的自定義損失106
4.6如何使用預先訓練過的網絡108
4.7遷移學習簡介111
4.8貓狗問題114
4.8.1遷移學習的經典方法114
4.8.2遷移學習實驗120
第5章成本函數與風格轉換123
5.1神經網絡模型的構成123
5.1. 1訓練被視為優化問題124
5.1.2具體示例:線性回歸125
5.2成本函數126
5.2.1數學符號126
5.2.2典型成本函數127
5.3神經風格轉換134
5.3.1神經風格轉換背後的數學原理135
5.3.2 Keras中的圖像風格轉換示例139
5.3.3使用神經風格轉換生成剪影145
5.3.4 masking 146
第6章對象分類簡介148
6.1什麼是對象定位148
6.1.1重要的可用數據集150
6.1.2交並比152
6.2一種簡單的對象定位方法:滑動窗口法153
6.3分類和定位159
6.4基於區域的捲積神經網絡161
6.5快速R-CNN 164
6.6更快的R-CNN 165
第7章對象定位:基於Python的實現167
7.1 YOLO方法167
7.1.1 YOLO工作機制168
7.1.2 YOLOv2 170
7.1.3 YOLOv3 171
7.1.4非極大值抑制171
7.1.5損失函數172
7.2 YOLO在Python和OpenCV中的實現173
7.2.1 YOLO的Darknet實現173
7.2.2應用Darknet測試對象檢測175
7.3為特定圖像訓練YOLO模型180
7.4本章小結181
第8章組織學組織分類183
8.1數據分析和準備184
8.2建立模型192
8.3數據增強201
8.3.1水平和垂直移動202
8.3.2垂直翻轉圖像203
8.3.3隨機旋轉圖像204
8.3.4圖像縮放205
8.3.5綜合操作206
8.4帶有數據增強的VGG16 206
8.4.1 fit ()函數207
8.4.2 fit_generator()函數207
8.4.3 train_on_batch()函數208
8.4.4訓練網絡208
8.5現在好好享受209
作者介紹
李亞楠
1989年生,漢族,河南商丘人,2017年畢業於浙江師範大學,獲計算機科學與技術專業碩士學位。
現任職於廣東科技學院,講師。
2019年5月參加在浙江大學舉辦的“2019年全國高校深度學習師資培訓班”,並順利結業。
主要研究方向為粗糙集、數據挖掘和深度學習。