深入理解計算機視覺:在邊緣端構建高效的目標檢測應用
定 價:149 元
- 作者:張晨然
- 出版時間:2023/6/1
- ISBN:9787121455940
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP302.7
- 頁碼:500
- 紙張:
- 版次:01
- 開本:16開
本書按實戰(zhàn)項目研發(fā)的先后順序,介紹了目標檢測神經(jīng)網(wǎng)絡從研發(fā)到運營的全生命周期。首先介紹了目標檢測場景下的圖片標注方法和數(shù)據(jù)格式,以及與之密切相關的特征融合網(wǎng)絡和預測網(wǎng)絡;介紹了數(shù)據(jù)"后處理”所涉及的NMS算法及其變種,在此基礎上,讀者只需結合各式各樣的骨干網(wǎng)絡就可以搭建完整的一階段目標檢測神經(jīng)網(wǎng)絡模型。接下來介紹了神經(jīng)網(wǎng)絡的動態(tài)模式和靜態(tài)模式兩種訓練方法,以及訓練過程中的數(shù)據(jù)監(jiān)控和異常處理。最后以亞馬遜云和谷歌Coral開發(fā)板為例,介紹了云端部署和邊緣端部署神經(jīng)網(wǎng)絡的兩種部署方法。其中,對于邊緣端部署,本書還詳細介紹了神經(jīng)網(wǎng)絡量化模型的基礎原理和模型編譯邏輯,這對將神經(jīng)網(wǎng)絡轉化為可獨立交付的產(chǎn)品至關重要。 本書還結合智慧交通、智慧后勤、自動駕駛等項目,介紹了計算機視覺數(shù)據(jù)增強技術和神經(jīng)網(wǎng)絡性能評估原理,以及邊緣計算網(wǎng)關、邊緣計算系統(tǒng)、自動駕駛數(shù)據(jù)的計算原理和PointNet++等多個三維目標檢測神經(jīng)網(wǎng)絡,幫助讀者快速將計算機視覺技術運用到實際生產(chǎn)中。
作者本科畢業(yè)于天津大學通信工程專業(yè),碩士研究生階段就讀于廈門大學,主攻嵌入式系統(tǒng)和數(shù)字信號底層算法,具備扎實的理論基礎。作者先后就職于中國電信集團公司和福建省電子信息(集團)有限責任公司,目前擔任福建省人工智能學會的理事和企業(yè)工作委員會的主任,同時也擔任谷歌開發(fā)者社區(qū)、亞馬遜開發(fā)者生態(tài)的福州區(qū)域負責人,長期從事計算機視覺和自然語言基礎技術的研究,積累了豐富的人工智能項目經(jīng)驗,致力于推動深度學習在交通、工業(yè)、民生、建筑等領域的應用落地。作者于2017年獲得高級工程師職稱,擁有多項發(fā)明專利。
目錄
第1篇 一階段目標檢測神經(jīng)網(wǎng)絡的結構設計
第1章 目標檢測的競賽和數(shù)據(jù)集 2
1.1 計算機視覺坐標系的約定和概念 2
1.1.1 圖像的坐標系約定 2
1.1.2 矩形框的描述方法約定 3
1.2 PASCAL VOC競賽和數(shù)據(jù)集 6
1.2.1 PASCAL VOC競賽任務和數(shù)據(jù)集簡介 6
1.2.2 PASCAL VOC2007數(shù)據(jù)集探索 8
1.3 MS COCO挑戰(zhàn)賽和數(shù)據(jù)集 14
1.3.1 MS COCO挑戰(zhàn)賽的競賽任務 14
1.3.2 MS COCO數(shù)據(jù)集簡介 17
1.4 目標檢測標注的解析和統(tǒng)計 18
1.4.1 XML文件的格式 18
1.4.2 XML文件解析和數(shù)據(jù)均衡性統(tǒng)計 20
第2章 目標檢測神經(jīng)網(wǎng)絡綜述 24
2.1 幾個著名的目標檢測神經(jīng)網(wǎng)絡 24
2.1.1 R-CNN家族神經(jīng)網(wǎng)絡簡介 25
2.1.2 YOLO和SSD神經(jīng)網(wǎng)絡簡介 28
2.1.3 CenterNet神經(jīng)網(wǎng)絡簡介 30
2.1.4 U-Net神經(jīng)網(wǎng)絡簡介 31
2.2 目標檢測神經(jīng)網(wǎng)絡分類和高階API資源 32
2.3 矩形框的交并比評價指標和實現(xiàn) 34
第3章 一階段目標檢測神經(jīng)網(wǎng)絡的特征融合和中段網(wǎng)絡 40
3.1 一階段目標檢測神經(jīng)網(wǎng)絡的整體結構 40
3.2 一階段目標檢測神經(jīng)網(wǎng)絡的若干中段網(wǎng)絡介紹 41
3.2.1 單向融合的中段網(wǎng)絡 41
3.2.2 簡單雙向融合的中段網(wǎng)絡 43
3.2.3 復雜雙向融合的中段網(wǎng)絡 45
3.3 不同融合方案中段網(wǎng)絡的關系和應用 46
3.4 YOLO的多尺度特征融合中段網(wǎng)絡案例 47
3.4.1 YOLOV3的中段網(wǎng)絡及實現(xiàn) 48
3.4.2 YOLOV4的中段網(wǎng)絡PANet及實現(xiàn) 52
3.4.3 YOLOV3-tiny和YOLOV4-tiny版本的中段網(wǎng)絡及實現(xiàn) 58
3.5 神經(jīng)網(wǎng)絡輸出的解碼 62
3.5.1 融合特征圖的幾何含義 62
3.5.2 矩形框中心點坐標的解碼 65
3.5.3 矩形框?qū)挾群透叨鹊慕獯a 67
3.5.4 前背景概率和分類概率的解碼 69
3.5.5 矩形框角點坐標和解碼函數(shù)整體輸出 70
第4章 一階段目標檢測神經(jīng)網(wǎng)絡典型案例——YOLO解析 73
4.1 YOLO家族目標檢測神經(jīng)網(wǎng)絡簡介 73
4.2 先驗錨框和YOLO神經(jīng)網(wǎng)絡的檢測思路 74
4.2.1 用人為設定方式找到的先驗錨框 74
4.2.2 用聚類回歸方式找到的先驗錨框 76
4.2.3 YOLO的先驗錨框編號 79
4.2.4 YOLO的XYSCALE和縮放比參數(shù) 81
4.3 建立YOLO神經(jīng)網(wǎng)絡 82
4.3.1 根據(jù)選擇確定YOLO神經(jīng)網(wǎng)絡參數(shù) 83
4.3.2 建立骨干網(wǎng)絡、中段網(wǎng)絡和預測網(wǎng)絡 84
4.3.3 加上解碼網(wǎng)絡后建立完整的YOLO模型 86
4.4 YOLO神經(jīng)網(wǎng)絡的遷移學習和權重加載 89
4.4.1 骨干網(wǎng)絡關鍵層的起止編號 89
4.4.2 中段網(wǎng)絡和預測網(wǎng)絡關鍵層的起止編號 93
4.4.3 YOLO模型的權重加載 100
4.5 原版YOLO模型的預測 107
4.5.1 原版YOLO模型的建立和參數(shù)加載 107
4.5.2 神經(jīng)網(wǎng)絡的輸入/輸出數(shù)據(jù)重組 108
4.6 NMS算法的原理和預測結果可視化 111
4.6.1 傳統(tǒng)NMS算法原理 112
4.6.2 NMS算法的變種 116
4.6.3 預測結果的篩選和可視化 121
4.7 YOLO模型的多個衍生變種簡介 124
4.8 YOLO模型的發(fā)展與展望 127
第2篇 YOLO神經(jīng)網(wǎng)絡的損失函數(shù)和訓練
第5章 將數(shù)據(jù)資源制作成標準TFRecord數(shù)據(jù)集文件 130
5.1 數(shù)據(jù)資源的加載 130
5.2 數(shù)據(jù)資源的解析和提取 135
5.3 TFRecord數(shù)據(jù)集文件的制作 139
5.4 單樣本的example對象制作 139
5.5 遍歷全部樣本制作完整數(shù)據(jù)集 144
5.6 從數(shù)據(jù)集提取樣本進行核對 145
第6章 數(shù)據(jù)集的后續(xù)處理 150
6.1 數(shù)據(jù)集的加載和打包 150
6.1.1 數(shù)據(jù)集的加載和矩陣化 150
6.1.2 圖像矩陣尺寸的標準化 153
6.1.3 真實矩形框標注矩陣尺寸的標準化 158
6.1.4 數(shù)據(jù)集的打包處理 159
6.2 將原始數(shù)據(jù)集打包為可計算數(shù)據(jù)集 163
6.2.1 計算真實矩形框與先驗錨框的匹配度排名 164
6.2.2 找到真實矩形框所對應的網(wǎng)格下的先驗錨框 169
6.2.3 可計算數(shù)據(jù)集測試 177
第7章 一階段目標檢測的損失函數(shù)的設計和實現(xiàn) 181
7.1 損失函數(shù)框架和輸入數(shù)據(jù)的合理性判別 182
7.2 真實數(shù)據(jù)和預測數(shù)據(jù)的對應和分解 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 總誤差的合并和數(shù)值合理性確認 213
第8章 YOLO神經(jīng)網(wǎng)絡的訓練 217
8.1 數(shù)據(jù)集和模型準備 217
8.1.1 參數(shù)配置 217
8.1.2 數(shù)據(jù)集預處理 220
8.1.3 模型參數(shù)加載和凍結 223
8.2 動態(tài)模式訓練 225
8.2.1 監(jiān)控指標的設計和日志存儲 225
8.2.2 動態(tài)模式下神經(jīng)網(wǎng)絡的訓練和調(diào)試 230
8.3 訓練中非法數(shù)值的監(jiān)控和調(diào)試 237
8.3.1 發(fā)現(xiàn)和監(jiān)控非法數(shù)值計算結果 237
8.3.2 計算結果出現(xiàn)非法數(shù)值的原因和對策 240
8.4 靜態(tài)模式訓練和TensorBoard監(jiān)控 244
第3篇 目標檢測神經(jīng)網(wǎng)絡的云端和邊緣端部署
第9章 一階段目標檢測神經(jīng)網(wǎng)絡的云端訓練和部署 250
9.1 一階段目標檢測神經(jīng)網(wǎng)絡的推理模型設計 250
9.1.1 一階段目標檢測神經(jīng)網(wǎng)絡的推理形態(tài) 250
9.1.2 推理場景下的數(shù)據(jù)重組網(wǎng)絡 251
9.1.3 構造推理場景下的YOLO模型函數(shù) 254
9.1.4 構造和測試YOLO推理模型 255
9.2 目標檢測推理模型的云端部署 256
9.2.1 亞馬遜EC2云計算實例選型 257
9.2.2 使用云端服務器部署模型并響應推理請求 257
9.3 在亞馬遜SageMakerStudio上訓練云計算模型 259
第10章 神經(jīng)網(wǎng)絡的INT8全整數(shù)量化原理 262
10.1 神經(jīng)網(wǎng)絡量化模型的基本概念 262
10.1.1 神經(jīng)網(wǎng)絡量化模型速覽和可視化 262
10.1.2 浮點數(shù)值的量化存儲和計算原理 268
10.2 神經(jīng)網(wǎng)絡量化模型的制作和分析 273
10.2.1 算子的映射和合并 273
10.2.2 量化參數(shù)搜索和代表數(shù)據(jù)集 276
10.2.3 TFLite量化模型的算子和張量分析 279
10.3 量化性能分析和量化模型的逐層調(diào)試 289
10.3.1 量化信噪比分析原理 289
10.3.2 量化模型的單層誤差調(diào)試 294
10.3.3 量化模型的誤差累積調(diào)試 296
10.4 不支持算子的替換技巧 300
10.4.1 大動態(tài)范圍非線性算子替換原理 301
10.4.2 大動態(tài)范圍非線性算子替換效果 303
第11章 以YOLO和Edge TPU為例的邊緣計算實戰(zhàn) 305
11.1 TensorFlow模型的量化 307
11.1.1 量化感知訓練獲得INT8整型模型 308
11.1.2 訓練后量化獲得INT8整型模型 313
11.2 神經(jīng)網(wǎng)絡模型的編譯 315
11.2.1 模型編譯的工作原理 315
11.2.2 在Edge TPU上部署模型的注意事項 318
11.3 YOLO目標檢測模型的量化和編譯 321
11.3.1 YOLO變種版本選擇和骨干網(wǎng)絡修改 321
11.3.2 針對硬件限制進行解碼網(wǎng)絡的修改 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篇 個性化數(shù)據(jù)增強和目標檢測神經(jīng)網(wǎng)絡性能測試
第12章 個性化目標檢測數(shù)據(jù)集處理 346
12.1 農(nóng)村公路占道數(shù)據(jù)的目標檢測應用 346
12.1.1 項目數(shù)據(jù)背景 346
12.1.2 數(shù)據(jù)的預處理 347
12.2 數(shù)據(jù)的增強 350
12.2.1 數(shù)據(jù)增強技術的概念和效果 350
12.2.2 基于空間變換的數(shù)據(jù)增強方法 351
12.2.3 基于顏色空間的數(shù)據(jù)增強方法 354
12.2.4 其他圖像數(shù)據(jù)的增強手法 357
12.2.5 圖像數(shù)據(jù)集的增強工具和探索工具 360
12.3 使用Albumentations進行數(shù)據(jù)增強 361
12.3.1 Albumentations的安裝和使用 361
12.3.2 幾何數(shù)據(jù)增強管道的配置 362
12.3.3 使用數(shù)據(jù)管道處理并保存數(shù)據(jù) 364
12.3.4 像素數(shù)據(jù)增強管道的配置 366
12.3.5 增強數(shù)據(jù)集的運用 367
第13章 模型性能的定量測試和決策閾值選擇 368
13.1 神經(jīng)網(wǎng)絡性能量化的基本概念 368
13.1.1 神經(jīng)網(wǎng)絡預測的混淆矩陣 368
13.1.2 神經(jīng)網(wǎng)絡量化評估和P-R曲線 369
13.1.3 多分類目標檢測場景和平均精確率均值 371
13.1.4 F分數(shù)評估方法 372
13.2 餐盤識別神經(jīng)網(wǎng)絡性能測試案例 373
13.2.1 項目背景 373
13.2.2 提取全部真實數(shù)據(jù)和預測結果 375
13.2.3 模擬不同決策閾值下的精確率和召回率 378
第14章 使用邊緣計算網(wǎng)關進行多路攝像頭目標檢測 385
14.1 邊緣計算網(wǎng)關的整體結構 385
14.1.1 核心TPU組件 385
14.1.2 計算卡和模組 386
14.1.3 下位機的操作系統(tǒng) 387
14.1.4 下位機的開發(fā)環(huán)境簡介 388
14.2 開發(fā)環(huán)境準備 392
14.2.1 上位機安裝Docker 392
14.2.2 上位機裝載鏡像和SDK開發(fā)包 393
14.2.3 神經(jīng)網(wǎng)絡工具鏈和主要用途 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 邊緣端全整數(shù)量化模型部署 410
14.4.1 在上位機Docker內(nèi)制作代表數(shù)據(jù)集 410
14.4.2 在上位機Docker內(nèi)生成fp32umodel模型文件 412
14.4.3 手動增加fp32umodel模型文件的輸入層映射算子 414
14.4.4 對fp32umodel模型文件進行優(yōu)化 415
14.4.5 在上位機Docker內(nèi)將fp32umodel模型文件編譯為int8umodel模型文件 416
14.4.6 umodel模型文件的調(diào)試技巧 418
14.5 模型的編譯和部署 419
14.5.1 上位機將int8umodel模型文件編譯為bmodel模型文件 419
14.5.2 全整數(shù)量化int8bmodel模型文件的邊緣端推導和測試 422
14.5.3 編譯模型在邊緣計算網(wǎng)關上的性能測試 423
第15章 邊緣計算開發(fā)系統(tǒng)和RK3588 427
15.1 RK3588邊緣推理開發(fā)系統(tǒng)結構 427
15.1.1 開發(fā)板和核心芯片架構 427
15.1.2 開發(fā)板操作系統(tǒng)和調(diào)試環(huán)境 429
15.2 開發(fā)工具鏈和神經(jīng)網(wǎng)絡模型部署 431
15.2.1 上位機開發(fā)環(huán)境配置 431
15.2.2 上位機的模型轉換 433
15.2.3 下位機使用編譯模型進行推理 439
15.2.4 RK3588的算子調(diào)試技巧 443
第5篇 三維計算機視覺與自動駕駛
第16章 三維目標檢測和自動駕駛 448
16.1 自動駕駛數(shù)據(jù)集簡介 448
16.2 KITTI數(shù)據(jù)集計算原理 450
16.3 自動駕駛的點云特征提取 461
附錄A 官方代碼引用說明 469
附錄B 本書運行環(huán)境搭建說明 471
附錄C TensorFlow矩陣基本操作 473
參考文獻 474