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