本书主要介绍基于视觉的YOLO框架的技术原理和代码实现,并讲解目标检测领域中的诸多基础概念和基本原理,在YOLO框架的基础上介绍流行目标检测框架。本书分为4个部分,共13章。第1部分介绍目标检测领域的发展简史、主流的目标检测框架和该领域常用的数据集。第2部分详细讲解从YOLOv1到YOLOv4这四代YOLO框架的网络结构、检测原理和训练策略,以及搭建和训练的YOLO框架的代码实现。第3部分介绍两个较新的YOLO框架——YOLOX和YOLOv7,着重讲解其设计理念、网络结构和检测原理。第4部分介绍DETR、YOLOF和FCOS在内的流行目标检测框架和相应的代码实现。本书侧重目标检测的基础知识,包含丰富的实践内容,是目标检测领域的入门书,适合对目标检测领域感兴趣的初学者、算法工程师、软件工程师等人员学习和阅读。
1. 全面:涵盖6个常用目标检测框架(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOX、YOLOv7)的发展状况、技术原理和代码实现。
2. 流行:涵盖3个流行目标检测框架(DETR、YOLOF 和 FCOS)的网络结构、技术原理和代码实现。
3. 复现:每个代码实现章节均配备完整的YOLO项目代码,帮助读者轻松复现、优化和调试项目代码。
4. 丰富:附赠丰富的目标检测项目代码和全书彩图文件,帮助读者更直观地理解YOLO目标检测。
杨建华,哈尔滨工业大学在读博士,主要研究方向为基于视觉的目标检测与人体时空行为分析,长期耕耘于多个知乎专栏(知乎ID:Kissrabbit)。
李瑞峰,哈尔滨工业大学教授、机器人研究所副所长,中国人工智能学会智能机器人专业委员会秘书长,黑龙江省机器人学会理事长。
目 录
第 1部分 背景知识
第 1章 目标检测架构浅析 2
1.1 目标检测发展简史 2
1.2 目标检测网络框架概述 5
1.3 目标检测网络框架浅析 5
1.3.1 主干网络 5
1.3.2 颈部网络 7
1.3.3 检测头 9
1.4 小结 10
第 2章 常用的数据集 11
2.1 PASCAL VOC 数据集 11
2.2 MS COCO 数据集 12
2.3 小结 14
第 2部分 学习YOLO框架
第3章 YOLOv1 16
3.1 YOLOv1 的网络结构 16
3.2 YOLOv1 的检测原理 18
3.3 YOLOv1 的制作训练正样本的方法 21
3.3.1 边界框的位置参数 tx、ty、w、h 21
3.3.2 边界框的置信度 23
3.3.3 类别置信度 26
3.4 YOLOv1 的损失函数 26
3.5 YOLOv1 的前向推理 27
3.6 小结 29
第4章 搭建YOLOv1网络 30
4.1 改进 YOLOv1 30
4.1.1 改进主干网络 31
4.1.2 添加一个颈部网络 32
4.1.3 修改检测头 33
4.1.4 修改预测层 35
4.1.5 修改损失函数 37
4.2 搭建 YOLOv1 网络 37
4.2.1 搭建主干网络 39
4.2.2 搭建颈部网络 41
4.2.3 搭建检测头 41
4.2.4 YOLOv1 前向推理 41
4.3 YOLOv1 的后处理 44
4.3.1 求解预测边界框的坐标 44
4.3.2 后处理 46
4.4 小结 48
第5章 训练YOLOv1网络 49
5.1 读取 VOC 数据 49
5.2 数据预处理 56
5.2.1 基础变换 56
5.2.2 数据增强 59
5.3 制作训练正样本 61
5.4 计算训练损失 64
5.5 开始训练 YOLOv1 67
5.6 可视化检测结果 74
5.7 使用 COCO 数据集 ( 选读 ) 75
5.8 小结 76
第6章 YOLOv2 77
6.1 YOLOv2 详解 77
6.1.1 引入批归一化层 78
6.1.2 高分辨率主干网络 78
6.1.3 先验框机制 79
6.1.4 全卷积网络与先验框机制 80
6.1.5 使用新的主干网络 81
6.1.6 基于 k 均值聚类算法的先验框聚类 82
6.1.7 融合高分辨率特征图 84
6.1.8 多尺度训练策略 85
6.2 搭建 YOLOv2 网络 87
6.2.1 搭建 DarkNet-19 网络 87
6.2.2 先验框 91
6.2.3 搭建预测层 92
6.2.4 YOLOv2 的前向推理 92
6.3 基于 k 均值聚类算法的先验框聚类 95
6.4 基于先验框机制的正样本制作方法 96
6.4.1 基于先验框的正样本匹配策略 96
6.4.2 正样本匹配的代码 97
6.5 损失函数 103
6.6 训练 YOLOv2 网络 105
6.7 可视化检测结果与计算 mAP 105
6.8 使用 COCO 数据集(选读) 106
6.9 小结 108
第7章 YOLOv3 110
7.1 YOLOv3 解读 110
7.1.1 更好的主干网络 : DarkNet-53 111
7.1.2 多级检测与特征金字塔 112
7.1.3 修改损失函数 116
7.2 搭建 YOLOv3 网络 118
7.2.1 搭建 DarkNet-53 网络 118
7.2.2 搭建颈部网络 121
7.2.3 搭建解耦检测头 123
7.2.4 多尺度的先验框 125
7.2.5 YOLOv3 的前向推理 127
7.3 正样本匹配策略 130
7.4 损失函数 133
7.5 数据预处理 133
7.5.1 保留长宽比的 resize 操作 133
7.5.2 马赛克增强 136
7.5.3 混合增强 138
7.6 训练 YOLOv3 140
7.7 测试 YOLOv3 140
7.8 小结 142
第8章 YOLOv4 143
8.1 YOLOv4 解读 144
8.1.1 新的主干网络:CSPDarkNet-53 网络 144
8.1.2 新的特征金字塔网络:PaFPN 146
8.1.3 新的数据增强:马赛克增强 147
8.1.4 改进边界框的解算公式 148
8.1.5 multi anchor 策略 149
8.1.6 改进边界框的回归损失函数 149
8.2 搭建 YOLOv4 网络 150
8.2.1 搭建 CSPDarkNet-53 网络 151
8.2.2 搭建基于 CSP 结构的 SPP 模块 153
8.2.3 搭建 PaFPN 结构 155
8.3 制作训练正样本 157
8.4 测试 YOLOv4 159
8.5 小结 161
第3部分 最新的YOLO框架
第9章 YOLOX 164
9.1 解读 YOLOX 166
9.1.1 baseline 的选择:YOLOv3 166
9.1.2 训练 baseline 模型 166
9.1.3 改进一:解耦检测头 167
9.1.4 改进二:更强大的数据增强 168
9.1.5 改进三:anchor-free 机制 169
9.1.6 改进四:多正样本 169
9.1.7 改进五:SimOTA 169
9.2 搭建 YOLOX 网络 173
9.2.1 搭建 CSPDarkNet-53 网络 173
9.2.2 搭建 PaFPN 结构 175
9.3 YOLOX 的标签匹配:SimOTA 178
9.4 YOLOX 风格的混合增强 182
9.5 测试 YOLOX 185
9.6 小结 187
第 10章 YOLOv7 188
10.1 YOLOv7 的主干网络 189
10.2 YOLOv7 的特征金字塔网络 195
10.3 测试 YOLOv7 199
10.4 小结 200
第4部分 其他流行的目标检测框架
第 11章 DETR 204
11.1 解读 DETR 205
11.1.1 主干网络 205
11.1.2 Transformer 的编码器 208
11.1.3 Transformer 的解码器 211
11.2 实现 DETR 217
11.2.1 DETR 网络 217
11.2.2 数据预处理 221
11.2.3 正样本匹配 : Hungarian Matcher 222
11.2.4 损失函数 225
11.3 测试 DETR 检测器 228
11.4 小结 228
第 12章 YOLOF 230
12.1 YOLOF 解读 232
12.1.1 YOLOF 的网络结构 232
12.1.2 新的正样本匹配规则:Uniform Matcher 234
12.1.3 与其他先进工作的对比 236
12.2 搭建 YOLOF 237
12.2.1 搭建主干网络 238
12.2.2 搭建 DilatedEncoder 模块 241
12.2.3 搭建解码器模块 242
12.2.4 数据预处理 244
12.2.5 正样本匹配 : Uniform Matcher 246
12.2.6 损失函数 248
12.3 训练 YOLOF 检测器 250
12.4 测试 YOLOF 检测器 250
12.5 计算 mAP 251
12.6 小结 251
第 13章 FCOS 252
13.1 FCOS 解读 253
13.1.1 FCOS 网络结构 253
13.1.2 正样本匹配策略 255
13.1.3 损失函数 258
13.2 搭建 FCOS 258
13.2.1 搭建主干网络 259
13.2.2 正样本匹配 262
13.3 测试 FCOS 检测器 266
13.4 小结 267
参考文献 268
后记 272