深入理解電腦視覺:關鍵算法解析與深度神經網絡設計

張晨然

  • 出版商: 電子工業
  • 出版日期: 2023-04-01
  • 售價: $834
  • 貴賓價: 9.5$792
  • 語言: 簡體中文
  • 頁數: 432
  • ISBN: 7121452588
  • ISBN-13: 9787121452581
  • 相關分類: Computer Vision
  • 立即出貨

買這商品的人也買了...

商品描述

本書對二維、三維目標檢測技術涉及的骨乾網絡及入門必備的電腦視覺算法進行全面的介紹。本書由淺入深地介紹了MNIST、ImageNet、CIFAR、波士頓房產、ModelNet等經典二維、三維數據集和相關國際賽事,還介紹了TensorFlow中的二維捲積層、全連接層、激活層、池化層、批次歸一化層、隨機失活層的算法和梯度下降原理,AlexNet、VGG、ResNet、DarkNet、CSP-DarkNet等經典骨乾網絡的設計原理,以及PointNet、GCN等三維電腦視覺神經網絡。此外,本書通過設計巧妙且具體的案例,讓讀者穩步建立扎實的編程能力,包括數據集的製作和解析、神經網絡模型設計能力和開銷估算、損失函數的設計、神經網絡的動態模式和靜態模式的訓練方法和過程控制、神經網絡的邊緣計算模型量化、神經網絡的雲計算部署。完成本書的學習,讀者可以繼續閱讀與本書緊密銜接的《深入理解電腦視覺:在邊緣端構建高效的目標檢測系統》,將所學的電腦視覺基礎知識運用到目標檢測的神經網絡設計中,對邊緣計算環境下的神經網絡進行游刃有餘的調整。

目錄大綱

目錄

第1篇 電腦視覺開發環境的搭建 1
第1章 Python編程環境 2
1.1 Python語言簡介 2
1.2 Python腳本的運行方式 3
1.3 Anaconda虛擬環境管理器 3
1.4 使用Anaconda建立虛擬環境 5
第2章 搭建三層的圖像分類神經網絡 7
2.1 下載數據集 7
2.2 探索數據集 8
2.3 構建、編譯和訓練神經網絡 9
2.4 使用神經網絡進行批量預測 12
2.5 將預測結果可視化 13
第2篇 電腦視覺模型從實驗室到生產環境的部署 15
第3章 圖片數據集的處理 16
3.1 數據集的預處理 16
3.1.1 下載和查看數據集 16
3.1.2 準備花卉類別名稱和類別序號的對應關系 17
3.1.3 準備花卉圖片和類別名稱的對應關系 18

3.2 數據集的製作 20
3.2.1 擬寫入數據集的數據 20
3.2.2 TFRecord格式的數據集 21
3.2.3 單個樣本的生成函數 24
3.2.4 批量生成樣本並寫入TFRecord文件 26
3.3 數據集的讀取和驗證 27
3.3.1 解析單個樣本 27
3.3.2 製作函數批量解析樣本 30
3.4 數據管道的優化處理 31
第4章 遷移學習和神經網絡的設計 35
4.1 遷移學習的概念和花卉分類應用 35
4.2 下載MobileNet 36
4.3 設置MobileNet 38
4.4 測試MobileNet的特徵提取輸入和輸出 39
第5章 損失函數的基礎原理 42
5.1 回歸場景下常用的損失函數 42
5.2 回歸場景下的損失函數實戰 44
5.3 分類場景下的損失函數 47
5.3.1 概率、幾率、對數幾率的概念 47
5.3.2 對數幾率和概率的相互轉換 49
5.3.3 多標簽與單標簽分類問題 51
5.3.4 單標簽分類問題和交叉熵算法原理 52
5.3.5 交叉熵損失函數 54
5.4 自定義損失函數 56
第6章 神經網絡的編譯和訓練 58
6.1 神經網絡的編譯 58
6.2 神經網絡的訓練 59
6.2.1 神經網絡訓練的基本概念 59
6.2.2 神經網絡訓練的常用回調機制 60
6.2.3 訓練的返回和過擬合的觀測 62

6.3 神經網絡的保存 65
6.3.1 神經網絡保存的格式和命令 65
6.3.2 神經網絡的性能測試和推理 72
第7章 TensorFlow模型的部署方式 74
7.1 以Edge TPU為例進行邊緣端模型部署 75
7.1.1 將模型轉換為TFLite格式 75
7.1.2 針對邊緣硬件編譯模型 77
7.1.3 模擬邊緣端推理 79
7.1.4 配置邊緣計算開發板Edge TPU 81
7.1.5 編寫邊緣端推理代碼 85
7.1.6 將推理代碼下載到開發板並運行 87
7.2 在服務器端部署模型 89
7.2.1 TensorFlow Serving的安裝和使用 89
7.2.2 網絡推理請求和響應實戰 92
第3篇 神經網絡的數學原理和TensorFlow計算框架 95
第8章 神經網絡訓練的數學原理和優化器 96
8.1 損失函數和神經網絡訓練的本質 96
8.1.1 神經網絡函數的數學抽象 96
8.1.2 計算損失函數極值的數學抽象 97
8.2 使用符號微分法獲得損失值的全局最小值 98
8.3 使用局部梯度下降法不斷靠近損失函數的最小值 105
8.3.1 局部梯度下降法的原理和TensorFlow的優化器 105
8.3.2 自動微分法的原理及自定義梯度 110
8.3.3 使用自動微分法和局部梯度下降法訓練波士頓房產數據模型 115
第9章 神經網絡的編程範式和靜態圖轉化機制 122
9.1 計算圖和編程範式 122
9.2 靜態圖轉化機制AutoGraph和裝飾器@tf.function 126
9.3 TensorFlow神經網絡模型的類繼承關系 131
9.3.1 TensorFlow的低階API和Keras的高階API 131
9.3.2 Keras的基礎模型類和基礎層類 132
9.4 使用Keras的高階API構建模型並進行可視化 136
9.4.1 使用序列方式構建模型 138
9.4.2 使用函數方式構建模型 139
9.4.3 使用繼承子類方式構建模型 140
9.4.4 提取模型對應的類名稱 143
第4篇 神經網絡層的算法原理和訓練過程控制 144
第10章 神經網絡層的原理和資源開銷 145
10.1 全連接層的原理和資源開銷 145
10.1.1 全連接層的原理 145
10.1.2 全連接層的資源開銷 145
10.1.3 TensorFlow全連接層的API 147
10.2 激活函數的原理和代碼實現 148
10.2.1 激活函數的原理 148
10.2.2 激活函數的代碼實現 149
10.3 二維捲積的原理和資源開銷 150
10.3.1 二維捲積的原理 150
10.3.2 二維捲積的資源開銷 154
10.3.3 TensorFlow二維捲積層的API 155
10.3.4 二維捲積層的配置方式 157
10.4 池化層的原理和實戰 158
10.5 二維捲積層和池化層的感受野 161
10.6 隨機失活算法和默認推理狀態 162
10.7 批次歸一化算法 163
10.7.1 內部協變量漂移和輸入數據重分佈 164
10.7.2 訓練階段的BN算法 170
10.7.3 推理階段的BN算法 173
10.7.4 在神經網絡模型內使用BN層 175
10.8 製作神經網絡的資源開銷函數 177
10.8.1 整體框架 177
10.8.2 二維捲積層的資源開銷算法 178
10.8.3 全連接層的資源開銷算法 179
10.8.4 BN層的資源開銷算法 180
10.8.5 其他成員函數 180
第11章 使用計算加速硬件加快神經網絡的訓練 183
11.1 人工智能的數據類型和運算能力 183
11.2 人工智能計算中的數據類型匹配 185
11.3 人工智能硬件的運算能力評估 187
11.4 安裝GPU版本的TensorFlow計算框架 192
11.5 使用捲積層和全連接層構建經典神經網絡LeNet 196
11.5.1 MNIST手寫數字數據集 197
11.5.2 使用貫序方式建立極簡神經網絡LeNet 200
11.5.3 使用fit方法在MNIST手寫數字數據集上訓練LeNet5 205
11.5.4 使用eager方法在MNIST手寫數字數據集上訓練LeNet5 208
第12章 自定義fit方法和回調機制 214
12.1 fit方法的執行機制和自定義fit方法 214
12.2 fit方法的回調機制和自定義回調函數 217
12.3 TensorFlow的高階回調函數 222
12.3.1 早期停止回調函數與過擬合 222
12.3.2 檢查點保存回調函數 224
12.3.3 檢查點管理器和快速自定義回調函數 225
12.3.4 其他高階回調函數類 228
12.4 訓練過程監控和回調函數 229
12.4.1 TensorBoard和日誌文件的原理和接口 230
12.4.2 TensorBoard的可視化查看 232
12.4.3 eager方法下使用tf.summary存儲日誌 235
12.4.4 fit方法下的TensorBoard日誌存儲回調函數 238

第5篇 目標檢測中的骨乾網絡 244
第13章 經典骨乾網絡AlexNet的原理解析 245
13.1 整體結構和數據增強 245
13.2 負責特徵提取的第一、二層捲積層 246
13.3 負責特徵提取的第三、四、五層捲積層 248
13.4 負責特徵線性組合的第六、七、八層 251
13.5 使用繼承子類方式建立的AlexNet神經網絡 252
13.6 AlexNet的資源開銷 256
第14章 經典小核捲積神經網絡VGG的原理解析 259
14.1 VGG的宏觀結構和微觀特點 259
14.2 VGG16的第一、二個捲積塊結構 261
14.3 VGG16的第三、四、五個捲積塊結構 264
14.4 VGG五個捲積塊的代碼實現 267
14.5 VGG小核捲積技巧下的資源開銷 269
14.6 VGG預訓練模型的加載和下游網絡 272
第15章 經典殘差神經網絡ResNet的原理解析 276
15.1 殘差連接的原理和結構 277
15.2 瓶頸殘差模塊堆疊的輸入和輸出函數關系 279
15.3 瓶頸殘差模塊的輸入和輸出函數關系 283
15.4 堆疊函數關系和通用的ResNet網絡結構 289
15.5 ResNet50 V2模型的案例解析 293
15.6 ResNet的資源開銷評估 297
15.7 ResNet的遷移學習和權重參數加載 299
第16章 多尺度特徵提取的神經網絡DarkNet 302
16.1 DarkNet的基本處理單元 302
16.1.1 DarkNet的專用捲積塊DarknetConv 303
16.1.2 DarkNet的殘差模塊DarknetResidual 305

16.2 YOLO V3的骨乾網絡DarkNet53 307
16.2.1 YOLO V3的殘差模塊堆疊 307
16.2.2 DarkNet53的整體結構和代碼實現 313
16.2.3 DarkNet53的資源開銷 315
16.3 YOLO V3簡版模型的骨乾網絡DarkNet53-tiny 316
16.3.1 DarkNet53-tiny的整體結構和代碼 316
16.3.2 DarkNet53-tiny的測試和資源開銷 318
16.4 YOLO V4的骨乾網絡CSP-DarkNet 319
16.4.1 殘差模塊堆疊結構 319
16.4.2 五個殘差模塊堆疊結構的代碼實現 321
16.4.3 空間金字塔池化結構 325
16.4.4 CSP-DarkNet的整體結構和代碼實現 328
16.4.5 CSP-DarkNet的測試和資源開銷 330
16.5 YOLO V4簡版模型的骨乾網絡CSP-DarkNet-tiny 331
16.5.1 矩陣切片自定義層的算法和保存規範 331
16.5.2 簡版殘差模塊和簡版殘差模塊堆疊 332
16.5.3 CSP-DarkNet-tiny的整體結構和代碼 336
16.5.4 CSP-DarkNet-tiny的測試和資源開銷 337
第17章 骨乾網絡預訓練和大型圖像數據集ImageNet 339
17.1 ImageNet數據集和ILSVRC競賽 339
17.1.1 單標簽圖像分類任務 340
17.1.2 單標簽分類和定位任務 342
17.1.3 細顆粒度分類任務 345
17.1.4 目標檢測任務 346
17.1.5 其他競賽任務 346
17.2 CIFAR數據集 347
17.3 加載骨乾網絡預訓練權重進行遷移學習 351
17.3.1 快速創建LeNet和AlexNet並進行開銷分析 352
17.3.2 使用高階API快速構建VGG、ResNet、MobileNet 354

17.4 加載骨乾網絡DarkNet的預訓練權重 361
17.4.1 讀取和解析YOLO的官方權重 361
17.4.2 設計DarkNet骨乾網絡並加載轉換後的權重 366
17.5 使用圖像分類任務測試骨乾網絡權重的性能 368
第6篇 三維電腦視覺入門和實戰 371
第18章 三維電腦視覺的數據表達和主要任務 372
18.1 三維電腦視覺的數據表達 372
18.2 三維電腦視覺數據集 374
18.3 三維電腦視覺的主要任務 376
18.4 三維感知任務實戰 381
第19章 圖捲積神經網絡入門和實戰 389
19.1 圖計算的基本概念 389
19.2 圖捲積神經網絡 391
19.3 圖捲積神經網絡實戰 395
附錄A 官方代碼引用說明 403
附錄B 運行環境搭建說明 404
附錄C TensorFlow的基本矩陣操作 406
參考文獻 407