內容簡介
計算機視覺有多先進?開一開特斯拉就知道了。深度學習技術已在人臉識別、互動式仿真和醫學成像方面取得令人興奮的突破,但最讓人心潮澎湃的當屬自動駕駛技術。如今,自動駕駛的汽車已經能在高速路上暢意馳騁並對各種複雜路況做出靈活反應了。
計算機如何“理解”它所“看到”的東西?本書試圖將深度學習套用於計算機視覺以回答該問題。本書僅用高中代數知識闡明視覺直覺背後的概念。你將了解如何使用深度學習架構來構建視覺系統應用程式,以實現圖像生成和人臉識別功能。
主要內容
●圖像分類和目標檢測
●先進的深度學習架構
●遷移學習與生成對抗網路
●DeepDream和神經風格遷移
●視覺嵌入和圖像搜尋
圖書目錄
第Ⅰ部分 深度學習基礎
1 章 概述3
1.1 計算機視覺 4
1.1.1 視覺感知的定義 4
1.1.2 視覺系統 4
1.1.3 感知設備 6
1.1.4 解譯設備 7
1.2 CV 套用 8
1.2.1 圖像分類 9
1.2.2 目標檢測與定位10
1.2.3 生成藝術(風格遷移) 11
1.2.4 圖像生成11
1.2.5 人臉識別12
1.2.6 圖片推薦系統13
1.3 計算機視覺管道概覽 14
1.4 圖像輸入 15
1.4.1 圖像的函式表達16
1.4.2 計算機讀取圖像17
1.4.3 彩色圖像17
1.5 圖像處理 19
1.6 特徵提取 21
1.6.1 計算機視覺中特徵的定義22
1.6.2 有用特徵的定義23
1.6.3 手動與自動的特徵提取25
1.7 分類器學習算法 27
1.8 本章小結 28
第2 章 深度學習和神經網路 29
2.1 理解感知機 30
2.1.1 感知機的定義31
2.1.2 感知機的學習機制34
2.1.3 單層感知機的局限性35
2.2 多層感知機 36
2.2.1 多層感知機架構37
2.2.2 關於隱藏層38
2.2.3 隱藏層的設計38
2.2.4 本節內容拓展40
2.3 激活函式 41
2.3.1 線性轉移函式42
2.3.2 Heaviside 階躍函式
(二元分類器) 43
2.3.3 Sigmoid/logistic函式43
2.3.4 Softmax 函式46
2.3.5 雙_3恄黖衉J曲正切函式
2.5.1 誤差函式的定義55
2.5.2 誤差函式的意義55
2.5.3 誤差為正的必要性55
2.5.4 均方誤差損失函式56
2.5.5 交叉熵損失函式57
2.5.6 關於誤差和權重的補充說明58
2.6 最佳化算法 59
2.6.1 最佳化的定義59
2.6.2 批梯度下降62
2.6.3 隨機梯度下降67
2.6.4 小批梯度下降68
2.6.5 梯度下降總結68
2.7 反向傳播 69
2.7.1 反向傳播的定義70
2.7.2 反向傳播總結72
2.8 本章總結 73
第3 章 卷積神經網路75
3.1 使用MLP 進行圖像分類 76
3.1.1 輸入層76
3.1.2 隱藏層78
3.1.3 輸出層78
3.1.4 組合78
3.1.5 MLP 處理圖像的缺點80
3.2 CNN 架構 82
3.2.1 概述83
3.2.2 特徵提取詳解84
3.2.3 分類詳解85
3.3 CNN 的基本組件 85
3.3.1 卷積層86
3.3.2 池化層或下採樣92
3.3.3 全連線層96
3.4 使用CNN 進行圖像分類 98
3.4.1 構建模型體系架構98
3.4.2 參數(權重)的數量100
3.5 添加dropout 層以避免過擬合 101
3.5.1 過擬合定義101
3.5.2 dropout 層定義102
3.5.3 dropout 層的重要意義102
3.5.4 dropout 層在CNN架構中的位置103
3.6 彩色(3D)圖像的卷積 104
3.6.1 彩色圖像的卷積105
3.6.2 計算複雜度的變化107
3.7 練習項目:彩色圖像分類 109
3.8 本章總結 118
第4 章 構造DL 項目以及超參數調優119
4.1 定義性能指標 120
4.1.1 選擇評價模型的最佳指標120
4.1.2 混淆矩陣120
4.1.3 精確度和召回率121
4.1.4 F1 得分122
4.2 設計基準模型 122
4.3 為訓練準備數據 124
4.3.1 劃分數據集124
4.3.2 數據處理125
4.4 評估模型並解釋其性能 127
4.4.1 診斷過擬合和欠擬合127
4.4.2 繪製學習曲線129
4.4.3 練習項目:構建、訓練和評估網路129
4.5 網路改進和超參數調優 132
4.5.1 收集更多數據與超參數調優132
4.5.2 參數與超參數133
4.5.3 神經網路超參數133
4.5.4 網路架構134
4.6 學習和最佳化 135
4.6.1 學習率及其衰減策略135
4.6.2 找到最佳學習率的系統性方法138
4.6.3 學習率衰減和自適應學習138
4.6.4 小批大小139
4.7 最佳化算法 141
4.7.1 動量梯度下降142
4.7.2 Adam 142
4.7.3 訓練輪數和早停標準143
4.7.4 Early stopping144
4.8 正則化技術 144
4.8.1 L2 正則化145
4.8.2 Dropout 層146
4.8.3 數據增強146
4.9 批歸一化 147
4.9.1 協變數偏移問題148
4.9.2 神經網路中的協變數偏移148
4.9.3 批歸一化的工作原理149
4.9.4 批歸一化在keras 中的實現150
4.9.5 批歸一化回顧151
4.10 練習項目:實現高準確度的圖像分類 151
4.11 本章小結 157
第Ⅱ部分 圖像分類和檢測
第5 章 先進的CNN 架構 161
5.1 CNN 設計模式 162
5.2 LeNet-5 164
5.2.1 LeNet 架構164
5.2.2 LeNet-5 在Keras 中的實現165
5.2.3 設定學習超參數167
5.2.4 LeNet 在MNIST 數據集上的性能168
5.3 AlexNet 168
5.3.1 AlexNet 網路架構169
5.3.2 AlexNet 的新特性169
5.3.3 Keras 中的AlexNet實現171
5.3.4 設定學習超參數174
5.3.5 AlexNet 的性能174
5.4 VGGNet 175
5.4.1 VGGNet 新特性175
5.4.2 VGGNet 配置176
5.4.3 學習超參數179
5.4.4 VGGNet 性能179
5.5 Inception 和 GoogLeNet 179
5.5.1 Inception 新特性180
5.5.2 Inception 模組:Naive 版181
5.5.3 Inception 模組與維數約減182
5.5.4 Inception 體系架構184
5.5.5 GoogLeNet 的Keras實現185
5.5.6 學習參數190
5.5.7 Inception 在CIFAR數據集上的性能190
5.6 ResNet 191
5.6.1 ResNet 新特性191
5.6.2 殘差塊193
5.6.3 keras 中的ResNet實現195
5.6.4 學習超參數197
5.6.5 ResNet 在CIFAR數據集上的性能197
5.7 本章小結 198
第6 章 遷移學習199
6.1 遷移學習的必要性 200
6.2 遷移學習的定義 201
6.3 遷移學習的工作原理 207
6.3.1 神經網路如何學習特徵208
6.3.2 網路後期提取的特徵的可遷移性210
6.4 遷移學習方法 210
6.4.1 使用預訓練網路作為分類器210
6.4.2 使用預訓練網路作為特徵提取器212
6.4.3 微調213
6.5 選擇合適的遷移學習方法 215
6.5.1 場景1:目標數據集較小且與源數據集相似215
6.5.2 場景2:目標數據集較大且與源數據集相似216
6.5.3 場景3:目標數據集較小且與源數據集不同216
6.5.4 場景4:目標數據集較大且與源數據集不同216
6.5.5 遷移學習場景總結216
6.6 開源數據集 217
6.6.1 MNIST 217
6.6.2 Fashion-MNIST 218
6.6.3 CIFAR 218
6.6.4 ImageNet 219
6.6.5 MS COCO 221
6.6.6 Google Open Images222
6.6.7 Kaggle222
6.7 項目1:預訓練網路作為
特徵提取器 222
6.8 項目2:微調 228
6.9 本章小結 235
第7 章 使用R-CNN、SSD 和YOLO進行目標檢測 237
7.1 目標檢測的通用框架 238
7.1.1 候選區域239
7.1.2 網路預測240
7.1.3 非極大值抑制(NMS) 241
7.1.4 目標檢測器的評價指標241
7.2 R-CNN 244
7.2.1 R-CNN 244
7.2.2 Fast R-CNN 248
7.2.3 Faster R-CNN 250
7.2.4 R-CNN 家族總結256
7.3 SSD (Single-shot detector) 259
7.3.1 SSD 架構總覽259
7.3.2 基礎網路261
7.3.3 多尺度特徵層263
7.3.4 NMS266
7.4 YOLO (you only lookonce) (320) 267
7.4.1 YOLO v3 的工作機制268
7.4.2 YOLOv3 架構270
7.5 項目:在自動駕駛中套用SSD 網路 272
7.5.1 步驟1:構建模型274
7.5.2 步驟2:模型配置275
7.5.3 步驟3:創建模型276
7.5.4 步驟3:載入數據276
7.5.5 步驟5:訓練模型278
7.5.6 步驟6:可視化損失279
7.5.7 步驟7:預測280
7.6 本章小結 281
第Ⅲ部分 生成模型與視覺嵌入
第8 章 生成對抗網路285
8.1 GAN 架構 286
8.1.1 Deep convolutional
GANs(DCGANs) 288
8.1.2 鑑別器模型288
8.1.3 生成器模型290
8.1.4 訓練GAN 293
8.1.5 GAN 極小極大值函式296
8.2 評估GAN 模型 297
8.2.1 Inception score298
8.2.2 Fréchet inception distance
(FID)298
8.2.3 評估方案選擇299
8.3 GAN 的主流套用 299
8.3.1 文本生成圖像(Text-tophotosynthesis)299
8.3.2 圖像翻譯 (Pix2Pix GAN) 300
8.3.3 圖像超解析度
GAN(SRGAN)301
8.3.4 準備好動手了嗎302
8.4 練習項目:構建自己的
GAN 302
8.5 本章小結 311
第9 章 DeepDream 和神經風格遷移 313
9.1 打開CNN 的黑盒 314
9.1.1 CNN 工作原理回顧314
9.1.2 CNN 特徵可視化315
9.1.3 特徵可視化工具的實現318
9.2 DeepDream 321
9.2.1 DeepDream 算法的工作原理322
9.2.2 DeepDream 的Keras實現324
9.3 神經風格遷移 327
9.3.1 內容損失329
9.3.2 風格損失(style loss) 330
9.3.3 總變分損失(total variance loss)332
9.3.4 網路訓練332
9.4 本章小結 333
第10 章 視覺嵌入335
10.1 視覺嵌入的套用 336
10.1.1 人臉識別337
10.1.2 圖片推薦系統337
10.1.3 目標重識別系統339
10.2 學習嵌入 340
10.3 損失函式 341
10.3.1 問題建立和形式化342
10.3.2 交差熵損失342
10.3.3 對比損失343
10.3.4 三元組損失344
10.3.5 損失的簡單實現和運行分析345
10.4 挖掘信息數據 347
10.4.1 數據載入器347
10.4.2 信息型數據挖掘:尋找
有用的三元組349
10.4.3 Batch All(BA)350
10.4.4 Batch Hard(BH) 351
10.4.5 batch weighted(BW)353
10.4.6 Batch Sample(BS)354
10.5 練習項目:訓練嵌入網路 355
10.5.1 時尚圈:查找相似的衣服356
10.5.2 車輛重識別356
10.5.3 實現357
10.5.4 測試訓練的模型358
10.6 突破準確度的限制 362
10.7 本章小結 363
參考文獻 365
附錄A 369
A.1 下載代碼庫 369
A.2 安裝Anaconda 369
A.3 設定DL 環境 370
A.3.1 手動設定你的開發環境370
A.3.2 使用本書的repo 中的conda 環境371
A.3.3 保存和載入環境372
A.4 設定AWS EC2 環境 372
A.4.1 創建AWS 賬號372
A.4.2 遠程連線到此實例373
A.4.3 運行Jupyter
Notebook374