本書主要介紹基于視覺的YOLO框架的技術(shù)原理和代碼實(shí)現(xiàn),并講解目標(biāo)檢測領(lǐng)域中的諸多基礎(chǔ)概念和基本原理,在YOLO框架的基礎(chǔ)上介紹流行目標(biāo)檢測框架。本書分為4個部分,共13章。第1部分介紹目標(biāo)檢測領(lǐng)域的發(fā)展簡史、主流的目標(biāo)檢測框架和該領(lǐng)域常用的數(shù)據(jù)集。第2部分詳細(xì)講解從YOLOv1到Y(jié)OLOv4這四代YOLO框架的網(wǎng)絡(luò)結(jié)構(gòu)、檢測原理和訓(xùn)練策略,以及搭建和訓(xùn)練的YOLO框架的代碼實(shí)現(xiàn)。第3部分介紹兩個較新的YOLO框架——YOLOX和YOLOv7,著重講解其設(shè)計理念、網(wǎng)絡(luò)結(jié)構(gòu)和檢測原理。第4部分介紹DETR、YOLOF和FCOS在內(nèi)的流行目標(biāo)檢測框架和相應(yīng)的代碼實(shí)現(xiàn)。本書側(cè)重目標(biāo)檢測的基礎(chǔ)知識,包含豐富的實(shí)踐內(nèi)容,是目標(biāo)檢測領(lǐng)域的入門書,適合對目標(biāo)檢測領(lǐng)域感興趣的初學(xué)者、算法工程師、軟件工程師等人員學(xué)習(xí)和閱讀。
1. 全面:涵蓋6個常用目標(biāo)檢測框架(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOX、YOLOv7)的發(fā)展?fàn)顩r、技術(shù)原理和代碼實(shí)現(xiàn)。
2. 流行:涵蓋3個流行目標(biāo)檢測框架(DETR、YOLOF 和 FCOS)的網(wǎng)絡(luò)結(jié)構(gòu)、技術(shù)原理和代碼實(shí)現(xiàn)。
3. 復(fù)現(xiàn):每個代碼實(shí)現(xiàn)章節(jié)均配備完整的YOLO項(xiàng)目代碼,幫助讀者輕松復(fù)現(xiàn)、優(yōu)化和調(diào)試項(xiàng)目代碼。
4. 豐富:附贈豐富的目標(biāo)檢測項(xiàng)目代碼和全書彩圖文件,幫助讀者更直觀地理解YOLO目標(biāo)檢測。
楊建華,哈爾濱工業(yè)大學(xué)在讀博士,主要研究方向?yàn)榛谝曈X的目標(biāo)檢測與人體時空行為分析,長期耕耘于多個知乎專欄(知乎ID:Kissrabbit)。
李瑞峰,哈爾濱工業(yè)大學(xué)教授、機(jī)器人研究所副所長,中國人工智能學(xué)會智能機(jī)器人專業(yè)委員會秘書長,黑龍江省機(jī)器人學(xué)會理事長。
目 錄
第 1部分 背景知識
第 1章 目標(biāo)檢測架構(gòu)淺析 2
1.1 目標(biāo)檢測發(fā)展簡史 2
1.2 目標(biāo)檢測網(wǎng)絡(luò)框架概述 5
1.3 目標(biāo)檢測網(wǎng)絡(luò)框架淺析 5
1.3.1 主干網(wǎng)絡(luò) 5
1.3.2 頸部網(wǎng)絡(luò) 7
1.3.3 檢測頭 9
1.4 小結(jié) 10
第 2章 常用的數(shù)據(jù)集 11
2.1 PASCAL VOC 數(shù)據(jù)集 11
2.2 MS COCO 數(shù)據(jù)集 12
2.3 小結(jié) 14
第 2部分 學(xué)習(xí)YOLO框架
第3章 YOLOv1 16
3.1 YOLOv1 的網(wǎng)絡(luò)結(jié)構(gòu) 16
3.2 YOLOv1 的檢測原理 18
3.3 YOLOv1 的制作訓(xùn)練正樣本的方法 21
3.3.1 邊界框的位置參數(shù) tx、ty、w、h 21
3.3.2 邊界框的置信度 23
3.3.3 類別置信度 26
3.4 YOLOv1 的損失函數(shù) 26
3.5 YOLOv1 的前向推理 27
3.6 小結(jié) 29
第4章 搭建YOLOv1網(wǎng)絡(luò) 30
4.1 改進(jìn) YOLOv1 30
4.1.1 改進(jìn)主干網(wǎng)絡(luò) 31
4.1.2 添加一個頸部網(wǎng)絡(luò) 32
4.1.3 修改檢測頭 33
4.1.4 修改預(yù)測層 35
4.1.5 修改損失函數(shù) 37
4.2 搭建 YOLOv1 網(wǎng)絡(luò) 37
4.2.1 搭建主干網(wǎng)絡(luò) 39
4.2.2 搭建頸部網(wǎng)絡(luò) 41
4.2.3 搭建檢測頭 41
4.2.4 YOLOv1 前向推理 41
4.3 YOLOv1 的后處理 44
4.3.1 求解預(yù)測邊界框的坐標(biāo) 44
4.3.2 后處理 46
4.4 小結(jié) 48
第5章 訓(xùn)練YOLOv1網(wǎng)絡(luò) 49
5.1 讀取 VOC 數(shù)據(jù) 49
5.2 數(shù)據(jù)預(yù)處理 56
5.2.1 基礎(chǔ)變換 56
5.2.2 數(shù)據(jù)增強(qiáng) 59
5.3 制作訓(xùn)練正樣本 61
5.4 計算訓(xùn)練損失 64
5.5 開始訓(xùn)練 YOLOv1 67
5.6 可視化檢測結(jié)果 74
5.7 使用 COCO 數(shù)據(jù)集 ( 選讀 ) 75
5.8 小結(jié) 76
第6章 YOLOv2 77
6.1 YOLOv2 詳解 77
6.1.1 引入批歸一化層 78
6.1.2 高分辨率主干網(wǎng)絡(luò) 78
6.1.3 先驗(yàn)框機(jī)制 79
6.1.4 全卷積網(wǎng)絡(luò)與先驗(yàn)框機(jī)制 80
6.1.5 使用新的主干網(wǎng)絡(luò) 81
6.1.6 基于 k 均值聚類算法的先驗(yàn)框聚類 82
6.1.7 融合高分辨率特征圖 84
6.1.8 多尺度訓(xùn)練策略 85
6.2 搭建 YOLOv2 網(wǎng)絡(luò) 87
6.2.1 搭建 DarkNet-19 網(wǎng)絡(luò) 87
6.2.2 先驗(yàn)框 91
6.2.3 搭建預(yù)測層 92
6.2.4 YOLOv2 的前向推理 92
6.3 基于 k 均值聚類算法的先驗(yàn)框聚類 95
6.4 基于先驗(yàn)框機(jī)制的正樣本制作方法 96
6.4.1 基于先驗(yàn)框的正樣本匹配策略 96
6.4.2 正樣本匹配的代碼 97
6.5 損失函數(shù) 103
6.6 訓(xùn)練 YOLOv2 網(wǎng)絡(luò) 105
6.7 可視化檢測結(jié)果與計算 mAP 105
6.8 使用 COCO 數(shù)據(jù)集(選讀) 106
6.9 小結(jié) 108
第7章 YOLOv3 110
7.1 YOLOv3 解讀 110
7.1.1 更好的主干網(wǎng)絡(luò) : DarkNet-53 111
7.1.2 多級檢測與特征金字塔 112
7.1.3 修改損失函數(shù) 116
7.2 搭建 YOLOv3 網(wǎng)絡(luò) 118
7.2.1 搭建 DarkNet-53 網(wǎng)絡(luò) 118
7.2.2 搭建頸部網(wǎng)絡(luò) 121
7.2.3 搭建解耦檢測頭 123
7.2.4 多尺度的先驗(yàn)框 125
7.2.5 YOLOv3 的前向推理 127
7.3 正樣本匹配策略 130
7.4 損失函數(shù) 133
7.5 數(shù)據(jù)預(yù)處理 133
7.5.1 保留長寬比的 resize 操作 133
7.5.2 馬賽克增強(qiáng) 136
7.5.3 混合增強(qiáng) 138
7.6 訓(xùn)練 YOLOv3 140
7.7 測試 YOLOv3 140
7.8 小結(jié) 142
第8章 YOLOv4 143
8.1 YOLOv4 解讀 144
8.1.1 新的主干網(wǎng)絡(luò):CSPDarkNet-53 網(wǎng)絡(luò) 144
8.1.2 新的特征金字塔網(wǎng)絡(luò):PaFPN 146
8.1.3 新的數(shù)據(jù)增強(qiáng):馬賽克增強(qiáng) 147
8.1.4 改進(jìn)邊界框的解算公式 148
8.1.5 multi anchor 策略 149
8.1.6 改進(jìn)邊界框的回歸損失函數(shù) 149
8.2 搭建 YOLOv4 網(wǎng)絡(luò) 150
8.2.1 搭建 CSPDarkNet-53 網(wǎng)絡(luò) 151
8.2.2 搭建基于 CSP 結(jié)構(gòu)的 SPP 模塊 153
8.2.3 搭建 PaFPN 結(jié)構(gòu) 155
8.3 制作訓(xùn)練正樣本 157
8.4 測試 YOLOv4 159
8.5 小結(jié) 161
第3部分 最新的YOLO框架
第9章 YOLOX 164
9.1 解讀 YOLOX 166
9.1.1 baseline 的選擇:YOLOv3 166
9.1.2 訓(xùn)練 baseline 模型 166
9.1.3 改進(jìn)一:解耦檢測頭 167
9.1.4 改進(jìn)二:更強(qiáng)大的數(shù)據(jù)增強(qiáng) 168
9.1.5 改進(jìn)三:anchor-free 機(jī)制 169
9.1.6 改進(jìn)四:多正樣本 169
9.1.7 改進(jìn)五:SimOTA 169
9.2 搭建 YOLOX 網(wǎng)絡(luò) 173
9.2.1 搭建 CSPDarkNet-53 網(wǎng)絡(luò) 173
9.2.2 搭建 PaFPN 結(jié)構(gòu) 175
9.3 YOLOX 的標(biāo)簽匹配:SimOTA 178
9.4 YOLOX 風(fēng)格的混合增強(qiáng) 182
9.5 測試 YOLOX 185
9.6 小結(jié) 187
第 10章 YOLOv7 188
10.1 YOLOv7 的主干網(wǎng)絡(luò) 189
10.2 YOLOv7 的特征金字塔網(wǎng)絡(luò) 195
10.3 測試 YOLOv7 199
10.4 小結(jié) 200
第4部分 其他流行的目標(biāo)檢測框架
第 11章 DETR 204
11.1 解讀 DETR 205
11.1.1 主干網(wǎng)絡(luò) 205
11.1.2 Transformer 的編碼器 208
11.1.3 Transformer 的解碼器 211
11.2 實(shí)現(xiàn) DETR 217
11.2.1 DETR 網(wǎng)絡(luò) 217
11.2.2 數(shù)據(jù)預(yù)處理 221
11.2.3 正樣本匹配 : Hungarian Matcher 222
11.2.4 損失函數(shù) 225
11.3 測試 DETR 檢測器 228
11.4 小結(jié) 228
第 12章 YOLOF 230
12.1 YOLOF 解讀 232
12.1.1 YOLOF 的網(wǎng)絡(luò)結(jié)構(gòu) 232
12.1.2 新的正樣本匹配規(guī)則:Uniform Matcher 234
12.1.3 與其他先進(jìn)工作的對比 236
12.2 搭建 YOLOF 237
12.2.1 搭建主干網(wǎng)絡(luò) 238
12.2.2 搭建 DilatedEncoder 模塊 241
12.2.3 搭建解碼器模塊 242
12.2.4 數(shù)據(jù)預(yù)處理 244
12.2.5 正樣本匹配 : Uniform Matcher 246
12.2.6 損失函數(shù) 248
12.3 訓(xùn)練 YOLOF 檢測器 250
12.4 測試 YOLOF 檢測器 250
12.5 計算 mAP 251
12.6 小結(jié) 251
第 13章 FCOS 252
13.1 FCOS 解讀 253
13.1.1 FCOS 網(wǎng)絡(luò)結(jié)構(gòu) 253
13.1.2 正樣本匹配策略 255
13.1.3 損失函數(shù) 258
13.2 搭建 FCOS 258
13.2.1 搭建主干網(wǎng)絡(luò) 259
13.2.2 正樣本匹配 262
13.3 測試 FCOS 檢測器 266
13.4 小結(jié) 267
參考文獻(xiàn) 268
后記 272