深入理解電腦視覺:在邊緣端構建高效的目標檢測應用

張晨然

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

商品描述

本書按實戰項目研發的先後順序,介紹了目標檢測神經網絡從研發到運營的全生命周期。首先介紹了目標檢測場景下的圖片標註方法和數據格式,以及與之密切相關的特徵融合網絡和預測網絡;介紹了數據"後處理”所涉及的NMS算法及其變種,在此基礎上,讀者只需結合各式各樣的骨乾網絡就可以搭建完整的一階段目標檢測神經網絡模型。接下來介紹了神經網絡的動態模式和靜態模式兩種訓練方法,以及訓練過程中的數據監控和異常處理。最後以亞馬遜雲和谷歌Coral開發板為例,介紹了雲端部署和邊緣端部署神經網絡的兩種部署方法。其中,對於邊緣端部署,本書還詳細介紹了神經網絡量化模型的基礎原理和模型編譯邏輯,這對將神經網絡轉化為可獨立交付的產品至關重要。 本書還結合智慧交通、智慧後勤、自動駕駛等項目,介紹了電腦視覺數據增強技術和神經網絡性能評估原理,以及邊緣計算網關、邊緣計算系統、自動駕駛數據的計算原理和PointNet++等多個三維目標檢測神經網絡,幫助讀者快速將電腦視覺技術運用到實際生產中。

目錄大綱

目錄

第1篇 一階段目標檢測神經網絡的結構設計
第1章 目標檢測的競賽和數據集 2
1.1 電腦視覺坐標系的約定和概念 2
1.1.1 圖像的坐標系約定 2
1.1.2 矩形框的描述方法約定 3
1.2 PASCAL VOC競賽和數據集 6
1.2.1 PASCAL VOC競賽任務和數據集簡介 6
1.2.2 PASCAL VOC2007數據集探索 8
1.3 MS COCO挑戰賽和數據集 14
1.3.1 MS COCO挑戰賽的競賽任務 14
1.3.2 MS COCO數據集簡介 17
1.4 目標檢測標註的解析和統計 18
1.4.1 XML文件的格式 18
1.4.2 XML文件解析和數據均衡性統計 20
第2章 目標檢測神經網絡綜述 24
2.1 幾個著名的目標檢測神經網絡 24
2.1.1 R-CNN家族神經網絡簡介 25
2.1.2 YOLO和SSD神經網絡簡介 28
2.1.3 CenterNet神經網絡簡介 30
2.1.4 U-Net神經網絡簡介 31
2.2 目標檢測神經網絡分類和高階API資源 32
2.3 矩形框的交並比評價指標和實現 34
第3章 一階段目標檢測神經網絡的特徵融合和中段網絡 40
3.1 一階段目標檢測神經網絡的整體結構 40
3.2 一階段目標檢測神經網絡的若乾中段網絡介紹 41
3.2.1 單向融合的中段網絡 41
3.2.2 簡單雙向融合的中段網絡 43
3.2.3 復雜雙向融合的中段網絡 45
3.3 不同融合方案中段網絡的關系和應用 46
3.4 YOLO的多尺度特徵融合中段網絡案例 47
3.4.1 YOLOV3的中段網絡及實現 48
3.4.2 YOLOV4的中段網絡PANet及實現 52
3.4.3 YOLOV3-tiny和YOLOV4-tiny版本的中段網絡及實現 58
3.5 神經網絡輸出的解碼 62
3.5.1 融合特徵圖的幾何含義 62
3.5.2 矩形框中心點坐標的解碼 65
3.5.3 矩形框寬度和高度的解碼 67
3.5.4 前背景概率和分類概率的解碼 69
3.5.5 矩形框角點坐標和解碼函數整體輸出 70
第4章 一階段目標檢測神經網絡典型案例——YOLO解析 73
4.1 YOLO家族目標檢測神經網絡簡介 73
4.2 先驗錨框和YOLO神經網絡的檢測思路 74
4.2.1 用人為設定方式找到的先驗錨框 74
4.2.2 用聚類回歸方式找到的先驗錨框 76
4.2.3 YOLO的先驗錨框編號 79
4.2.4 YOLO的XYSCALE和縮放比參數 81
4.3 建立YOLO神經網絡 82
4.3.1 根據選擇確定YOLO神經網絡參數 83
4.3.2 建立骨乾網絡、中段網絡和預測網絡 84
4.3.3 加上解碼網絡後建立完整的YOLO模型 86
4.4 YOLO神經網絡的遷移學習和權重加載 89
4.4.1 骨乾網絡關鍵層的起止編號 89
4.4.2 中段網絡和預測網絡關鍵層的起止編號 93
4.4.3 YOLO模型的權重加載 100
4.5 原版YOLO模型的預測 107
4.5.1 原版YOLO模型的建立和參數加載 107
4.5.2 神經網絡的輸入/輸出數據重組 108
4.6 NMS算法的原理和預測結果可視化 111
4.6.1 傳統NMS算法原理 112
4.6.2 NMS算法的變種 116
4.6.3 預測結果的篩選和可視化 121
4.7 YOLO模型的多個衍生變種簡介 124
4.8 YOLO模型的發展與展望 127
第2篇 YOLO神經網絡的損失函數和訓練
第5章 將數據資源製作成標準TFRecord數據集文件 130
5.1 數據資源的加載 130
5.2 數據資源的解析和提取 135
5.3 TFRecord數據集文件的製作 139
5.4 單樣本的example對象製作 139
5.5 遍歷全部樣本製作完整數據集 144
5.6 從數據集提取樣本進行核對 145
第6章 數據集的後續處理 150
6.1 數據集的加載和打包 150
6.1.1 數據集的加載和矩陣化 150
6.1.2 圖像矩陣尺寸的標準化 153
6.1.3 真實矩形框標註矩陣尺寸的標準化 158
6.1.4 數據集的打包處理 159
6.2 將原始數據集打包為可計算數據集 163
6.2.1 計算真實矩形框與先驗錨框的匹配度排名 164
6.2.2 找到真實矩形框所對應的網格下的先驗錨框 169
6.2.3 可計算數據集測試 177
第7章 一階段目標檢測的損失函數的設計和實現 181
7.1 損失函數框架和輸入數據的合理性判別 182
7.2 真實數據和預測數據的對應和分解 184
7.3 預測矩形框的前背景歸類和權重分配 188
7.4 預測矩形框的誤差度量 192
7.4.1 用中心點表示的位置誤差 192
7.4.2 用寬度和高度表示的位置誤差 192
7.4.3 用通用交並比表示的矩形框誤差 194
7.4.4 用距離交並比表示的矩形框誤差 198
7.4.5 用完整交並比表示的矩形框誤差 200
7.4.6 用交並比量化矩形框預測誤差的實踐 206
7.5 前景和背景的預測誤差 208
7.5.1 前景誤差和背景誤差的定義 208
7.5.2 樣本均衡原理和Focal-Loss應用 209
7.6 分類預測誤差 212
7.7 總誤差的合並和數值合理性確認 213
第8章 YOLO神經網絡的訓練 217
8.1 數據集和模型準備 217
8.1.1 參數配置 217
8.1.2 數據集預處理 220
8.1.3 模型參數加載和凍結 223
8.2 動態模式訓練 225
8.2.1 監控指標的設計和日誌存儲 225
8.2.2 動態模式下神經網絡的訓練和調試 230
8.3 訓練中非法數值的監控和調試 237
8.3.1 發現和監控非法數值計算結果 237
8.3.2 計算結果出現非法數值的原因和對策 240
8.4 靜態模式訓練和TensorBoard監控 244
第3篇 目標檢測神經網絡的雲端和邊緣端部署
第9章 一階段目標檢測神經網絡的雲端訓練和部署 250
9.1 一階段目標檢測神經網絡的推理模型設計 250
9.1.1 一階段目標檢測神經網絡的推理形態 250
9.1.2 推理場景下的數據重組網絡 251
9.1.3 構造推理場景下的YOLO模型函數 254
9.1.4 構造和測試YOLO推理模型 255
9.2 目標檢測推理模型的雲端部署 256
9.2.1 亞馬遜EC2雲計算實例選型 257
9.2.2 使用雲端服務器部署模型並響應推理請求 257
9.3 在亞馬遜SageMakerStudio上訓練雲計算模型 259
第10章 神經網絡的INT8全整數量化原理 262
10.1 神經網絡量化模型的基本概念 262
10.1.1 神經網絡量化模型速覽和可視化 262
10.1.2 浮點數值的量化存儲和計算原理 268
10.2 神經網絡量化模型的製作和分析 273
10.2.1 算子的映射和合並 273
10.2.2 量化參數搜索和代表數據集 276
10.2.3 TFLite量化模型的算子和張量分析 279
10.3 量化性能分析和量化模型的逐層調試 289
10.3.1 量化信噪比分析原理 289
10.3.2 量化模型的單層誤差調試 294
10.3.3 量化模型的誤差累積調試 296
10.4 不支持算子的替換技巧 300
10.4.1 大動態範圍非線性算子替換原理 301
10.4.2 大動態範圍非線性算子替換效果 303
第11章 以YOLO和Edge TPU為例的邊緣計算實戰 305
11.1 TensorFlow模型的量化 307
11.1.1 量化感知訓練獲得INT8整型模型 308
11.1.2 訓練後量化獲得INT8整型模型 313
11.2 神經網絡模型的編譯 315
11.2.1 模型編譯的工作原理 315
11.2.2 在Edge TPU上部署模型的註意事項 318
11.3 YOLO目標檢測模型的量化和編譯 321
11.3.1 YOLO變種版本選擇和骨乾網絡修改 321
11.3.2 針對硬件限制進行解碼網絡的修改 322
11.3.3 預測矩陣的匯總重組 325
11.3.4 YOLO推理模型的建立 327
11.3.5 YOLO模型的量化 329
11.3.6 量化模型的測試和信噪比分析 331
11.4 YOLO量化模型的編譯和邊緣端部署 337
11.4.1 量化模型轉換為編譯模型 337
11.4.2 編寫邊緣端編譯模型推理代碼 341
第4篇 個性化數據增強和目標檢測神經網絡性能測試
第12章 個性化目標檢測數據集處理 346
12.1 農村公路占道數據的目標檢測應用 346
12.1.1 項目數據背景 346
12.1.2 數據的預處理 347
12.2 數據的增強 350
12.2.1 數據增強技術的概念和效果 350
12.2.2 基於空間變換的數據增強方法 351
12.2.3 基於顏色空間的數據增強方法 354
12.2.4 其他圖像數據的增強手法 357
12.2.5 圖像數據集的增強工具和探索工具 360
12.3 使用Albumentations進行數據增強 361
12.3.1 Albumentations的安裝和使用 361
12.3.2 幾何數據增強管道的配置 362
12.3.3 使用數據管道處理並保存數據 364
12.3.4 像素數據增強管道的配置 366
12.3.5 增強數據集的運用 367
第13章 模型性能的定量測試和決策閾值選擇 368
13.1 神經網絡性能量化的基本概念 368
13.1.1 神經網絡預測的混淆矩陣 368
13.1.2 神經網絡量化評估和P-R曲線 369
13.1.3 多分類目標檢測場景和平均精確率均值 371
13.1.4 F分數評估方法 372
13.2 餐盤識別神經網絡性能測試案例 373
13.2.1 項目背景 373
13.2.2 提取全部真實數據和預測結果 375
13.2.3 模擬不同決策閾值下的精確率和召回率 378
第14章 使用邊緣計算網關進行多路攝像頭目標檢測 385
14.1 邊緣計算網關的整體結構 385
14.1.1 核心TPU組件 385
14.1.2 計算卡和模組 386
14.1.3 下位機的操作系統 387
14.1.4 下位機的開發環境簡介 388
14.2 開發環境準備 392
14.2.1 上位機安裝Docker 392
14.2.2 上位機裝載鏡像和SDK開發包 393
14.2.3 神經網絡工具鏈和主要用途 397
14.2.4 針對TensorFlow模型的編譯方法 398
14.3 浮點32位模型部署的全流程 399
14.3.1 訓練主機將Keras模型轉換為單pb模型文件 399
14.3.2 上位機將單pb模型文件編譯為bmodel模型文件 400
14.3.3 下位機讀取和探索bmodel模型文件 402
14.3.4 下位機使用bmodel模型文件進行推理 406
14.4 邊緣端全整數量化模型部署 410
14.4.1 在上位機Docker內製作代表數據集 410
14.4.2 在上位機Docker內生成fp32umodel模型文件 412
14.4.3 手動增加fp32umodel模型文件的輸入層映射算子 414
14.4.4 對fp32umodel模型文件進行優化 415
14.4.5 在上位機Docker內將fp32umodel模型文件編譯為int8umodel模型文件 416
14.4.6 umodel模型文件的調試技巧 418
14.5 模型的編譯和部署 419
14.5.1 上位機將int8umodel模型文件編譯為bmodel模型文件 419
14.5.2 全整數量化int8bmodel模型文件的邊緣端推導和測試 422
14.5.3 編譯模型在邊緣計算網關上的性能測試 423
第15章 邊緣計算開發系統和RK3588 427
15.1 RK3588邊緣推理開發系統結構 427
15.1.1 開發板和核心芯片架構 427
15.1.2 開發板操作系統和調試環境 429
15.2 開發工具鏈和神經網絡模型部署 431
15.2.1 上位機開發環境配置 431
15.2.2 上位機的模型轉換 433
15.2.3 下位機使用編譯模型進行推理 439
15.2.4 RK3588的算子調試技巧 443
第5篇 三維電腦視覺與自動駕駛
第16章 三維目標檢測和自動駕駛 448
16.1 自動駕駛數據集簡介 448
16.2 KITTI數據集計算原理 450
16.3 自動駕駛的點雲特徵提取 461
附錄A 官方代碼引用說明 469
附錄B 本書運行環境搭建說明 471
附錄C TensorFlow矩陣基本操作 473
參考文獻 474