这是一本系统讲解YOLO系列目标检测算法的理论与实战指南。不需要深厚的数学功底、不需要啃论文的耐心你只需要具备基础的Python编程能力,跟着本书动手学,就能从YOLO算法原理一路走到多行业实战落地。
本书从理论工具应用三重维度帮助读者构建目标检测学习体系,将理论解析与十大行业实战案例深度融合,结合Ultralytics YOLO11、Streamlit和PandasAI技术栈,通过大模型辅助代码生成与交互式平台搭建,助力读者高效掌握目标检测技术。
全书16章,分为三篇
理论篇(第1~3章):系统解析目标检测基础概念(如边界框、交并比、非极大值抑制)和算法演进,深度剖析YOLOv1至YOLO11的网络架构、创新技术及性能对比,为读者奠定坚实的理论基础。
工具篇(第4~6章):详解YOLO11环境配置(本地与Kaggle)、命令行与Python双接口操作,集成Streamlit构建Web应用,并引入PandasAI实现自然语言查询检测结果;同时涵盖Supervision库的数据标注、视频处理与结果过滤,以及Labellmg、Ybat等工具的使用。
应用篇(第7~16章):通过交通标志识别、车道线检测、路面坑洞监测、车辆事故分析、足球运动员跟踪、火灾烟雾预警、安全装备(头盔/反光背心)检测、脑肿瘤诊断、骨折识别及水下生物分析十大行业案例,展示YOLO11在多场景下的实战应用,每个案例均包含数据准备、模型优化与平台搭建,突出技术落地性和行业适配性。
Preface 前 言
为何写作本书
目标检测是计算机视觉领域中的一项关键技术,它涉及识别图像或视频中特定对象的位置和类别。这项技术在多个实际应用场景中发挥着重要作用,如自动驾驶汽车、安防监控系统、医学影像分析等。通过准确地定位并分类图像中的物体,目标检测使机器能够理解周围环境,从而实现更复杂的决策和交互。
目标检测算法主要分为两类:两阶段和一阶段。两阶段目标检测算法首先生成候选区域,随后对这些候选区域执行分类和边界框回归任务。而一阶段目标检测算法则直接在图像上预测边界框和类别,无须生成候选区域。
YOLO(You Only Look Once)是一种极为流行的一阶段目标检测算法。该算法摒弃了复杂的区域提议阶段以及随后的分类步骤,转而直接在特征图上进行边界框和类别概率的预测。这种端到端的检测框架不仅简化了检测流程,而且显著提升了检测的效率和准确性。因此,深入理解YOLO算法并熟练掌握其在目标检测中的应用,对于从事相关学习和工作具有重要意义。
本书主要特点
2025年2月,布法罗大学与中国科学院大学共同提出了YOLO12模型。但考虑其稳定性、可靠性、硬件兼容性、生态系统集成度、社区支持及资源等多方面因素后,本书选择采用由Ultralytics公司开发的官方模型YOLO11。本书强调理论与实践的融合,并借助通义的代码模式以提升编程效率;通过与Streamlit和PandasAI的整合,构建多种场景的目标检测平台。
以下是本书的主要特点:
理论阐述深入浅出:为满足不同水平读者的学习需求,本书首先对常用的目标检测算法进行了系统性的介绍,然后采用循序渐进的讲解方法,结合图示,详细阐释了从YOLOv1至YOLO11的各类算法的原理及架构。
内容丰富且注重实践应用:本书不仅涵盖丰富的理论知识,而且强调实际操作的技巧。通过一系列易于理解的实例,引导读者掌握YOLO11的入门知识、构建Streamlit平台,以及运用PandasAI调用大模型进行自然语言处理以查询目标检测结果等技术。实践案例覆盖自动驾驶、文化娱乐、安全监控、医疗影像等多个领域,使读者能够全面掌握YOLO11在不同行业中的目标检测应用,并基于Streamlit和PandasAI框架迅速搭建目标检测平台。
大模型辅助:本书采用了通义的代码模式自动生成代码,显著提升了代码编写效率。将大模型能力与PandasAI集成,实现了在目标检测平台上的应用,使用户能够通过自然语言交互的方式查询目标检测结果。
本书阅读对象
本书是一本理论与实践相结合的书,受众群体广泛,适合阅读的对象主要分为以下几类:
数学与应用数学、统计学、计算机科学及其他相关专业的师生。
专业培训机构的师生。
对计算机视觉和目标检测感兴趣的初学者。
人工智能、计算机视觉和数据科学从业者等。
如何阅读本书
本书一共16章,分三部分,第一部分(第1~3章)介绍理论,第二部分(第4~6章)介绍工具,第三部分(第7~16章)介绍应用。本书涵盖目标检测基础、目标检测算法原理与架构、工具安装及使用、项目实践案例等内容,形成了一条系统性的学习路径。通过本书,读者不仅能够深入理解算法的理论基础,还能够借助YOLO11高效完成目标检测的开发工作。
第1章首先介绍计算机视觉的基本任务以及目标检测的应用场景,接着重点讲解目标检测中的边界框、锚框、交并比及非极大值抑制等基础概念,最后系统性地介绍常用的两阶段和一阶段目标检测的算法原理。
第2章首先介绍目标检测网络架构中的主干网络、颈部网络和检测头,接着依次介绍YOLOv1至YOLOv5的各算法原理、创新技术及网络架构等。
第3章继续介绍YOLO系列算法,依次讲解YOLOv6至YOLO11这6种目标检测算法的网络架构、创新技术及性能表现等。
第4章介绍工具使用,首先介绍如何在本地和Kaggle网站安装YOLO11,然后介绍基于命令行界面和Python接口两种方式使用YOLO11模型,接着介绍快速搭建Web应用的Streamlit和基于大模型进行数据交互的PandasAI,最后通过一个综合案例介绍基于YOLO11、Streamlit、PandasAI三个框架搭建目标检测平台。
第5章介绍计算机视觉AI工具库Supervision,首先依次介绍Supervision的安装及使用、标注目标检测结果、视频处理的相关函数、保存目标检测结果及过滤目标检测结果,然后通过案例讲解如何进行行人目标跟踪和高速公路跟踪车辆进出统计。
第6章详细讲解数据标注工具的使用,首先介绍LabelImg和Ybat这两款工具的功能、安装及使用方法,然后通过案例演示如何使用标注的数据进行模型训练、验证及预测。
第7~16章是项目实践内容,依次讲解交通标志、车道线、路面坑洞、车辆事故、足球运动员、火灾及烟雾、安全头盔和反光背心、脑肿瘤、骨折、水下生物共10个方面的目标检测案例。
勘误
本书第1~4章由李猛坤撰写,其余内容由谢佳标撰写。由于笔者水平有限,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。你可以将意见或建议直接发至我的邮箱(jiabiao1601@163.com)。如果你有任何问题,也可以通过邮件提问,我将尽力为你提供解答,期待你的反馈。书中全部数据及源代码均可从Gitee网站( />致谢
首先感谢机械工业出版社的杨福川和李艺两位编辑帮助我把控书稿质量,因为有了他们的支持、鼓励和帮助,本书才能顺利出版。其次感谢我的家人,感谢他们一直以来的理解、陪伴和支持。
谨以此书献给我最亲爱的家人以及众多目标检测爱好者与从业者!
谢佳标
2025年11月
谢佳标
资深数据科学与AI算法专家,拥有近20年数据科学、算法研发和团队管理经验。曾就职于平安人寿,现就职于某国资寿险公司,负责大数据、数据建模及人工智能相关工作的技术研发及团队管理工作。对如何利用Python工具进行计算机视觉有丰富的实战经验。
社会荣誉:
20172026年连续10年获得微软最具价值专家(MVP)
中国现场统计研究会大数据统计分会第一届理事
51CTO、CSDN、三节课等平台知名讲师
历届中国R语言大会演讲嘉宾
WOT2017全球软件开发技术峰会演讲嘉宾
撰写书籍:
《动手学YOLO:技术原理与项目实战》
《巧用ChatGPT进行数据分析与挖掘》
《Keras深度学习:入门、实战与进阶》
《深度学习从入门到精通:基于Keras》
《R语言数据分析与挖掘(微课版)》
《R语言游戏数据分析与挖掘》
《R语言与数据挖掘》
李猛坤
副教授、硕士生导师、博士后,首都师范大学管理学院公共管理信息化理论与技术二级学科负责人、北京市总体国家安全观研究中心副主任、首都师范大学大数据分析与应用研究中心主任、北京城市创新与发展研究中心研究员。博士后(清华大学经管学院技术经济方向)。博士就读于中国石油大学(北京),研究方向为分布计算与并行计算;硕士就读于大连理工大学,研究方向为搜索引擎。发表学术论文四十余篇,主编专著 1 部,参编教材 6 本,参与制定国家级行业标准 1 项。
目前主要从事国家安全技术、新能源战略、大数据分析及教育评价改革等方面的研究工作。主持/参与横纵向科研课题 40 余项,项目涉及电力、公安、石油、地质、医疗、物流、电子商务、电子政务、智慧景区、数字经济等行业领域。熟悉系统集成、大数据技术平台、海量数据分析处理、计算机视觉、物联网等新兴技术;拥有国家能源结构调整战略分析、可再生能源消纳预测及调度、政企数字化转型、企业运营模式、收益模式及管理服务模式的分析和咨询经验。
目 录 Contents
前 言
第一部分 理论
第1章 目标检测基础 2
1.1 目标检测简介 2
1.2 目标检测应用 4
1.3 目标检测的基础概念 5
1.3.1 边界框 5
1.3.2 锚框 14
1.3.3 交并比 17
1.3.4 非极大值抑制 20
1.3.5 评价指标 21
1.4 两阶段目标检测算法 23
1.4.1 R-CNN算法 23
1.4.2 Fast R-CNN算法 25
1.4.3 Faster R-CNN算法 29
1.5 一阶段目标检测算法 34
1.5.1 YOLO算法 34
1.5.2 SSD算法 36
1.6 本章小结 37
第2章 YOLOv1至YOLOv5算法的
原理与架构 38
2.1 目标检测网络架构浅析 38
2.1.1 主干网络 38
2.1.2 颈部网络 39
2.1.3 检测头 41
2.2 YOLOv1算法原理与架构 42
2.2.1 YOLOv1的设计理念 42
2.2.2 YOLOv1的网络架构 45
2.2.3 YOLOv1的损失函数 50
2.2.4 YOLOv1的不足 52
2.3 YOLOv2算法原理与架构 53
2.3.1 批量归一化 54
2.3.2 高分辨率分类器 55
2.3.3 带锚框的卷积 55
2.3.4 维度聚类 57
2.3.5 直接位置预测 58
2.3.6 多尺度训练 60
2.3.7 细粒度特征 60
2.3.8 新的主干网络:Darknet-19 62
2.3.9 YOLOv2整体架构 63
2.4 YOLOv3算法原理与架构 65
2.4.1 YOLOv3的主干网络:
Darknet-53 65
2.4.2 多尺度特征融合 66
2.4.3 YOLOv3的网络架构 68
2.4.4 YOLOv3的损失函数 69
2.5 YOLOv4算法原理与架构 71
2.5.1 YOLOv4的网络架构 71
2.5.2 YOLOv4的主干网络:CSPDarknet53 72
2.5.3 YOLOv4的颈部网络 73
2.5.4 YOLOv4的数据增强 75
2.6 YOLOv5算法原理与架构 76
2.6.1 YOLOv5的创新点 76
2.6.2 YOLOv5的网络架构 78
2.7 本章小结 79
第3章 YOLOv6至YOLO11算法的
原理与架构 80
3.1 YOLOv6算法原理与架构 80
3.1.1 YOLOv6的主干网络 81
3.1.2 YOLOv6的颈部网络 83
3.1.3 YOLOv6的检测头 83
3.1.4 YOLOv6的网络架构 85
3.1.5 更有效的训练策略 86
3.1.6 实验结果 86
3.2 YOLOv7算法原理与架构 87
3.2.1 扩展高效层聚合网络 88
3.2.2 基于拼接模型的缩放 89
3.2.3 标签分配策略 90
3.2.4 计划重参数卷积 91
3.2.5 YOLOv7的网络架构 92
3.3 YOLOv8算法原理与架构 94
3.3.1 YOLOv8的网络架构 94
3.3.2 YOLOv8的损失函数 98
3.3.3 正负样本的匹配策略 100
3.4 YOLOv9算法原理与架构 101
3.4.1 PGI 101
3.4.2 GELAN 103
3.4.3 消融研究 105
3.4.4 结论 107
3.5 YOLOv10算法原理与架构 108
3.5.1 无NMS训练的一致性双任务
分配 108
3.5.2 效率精度驱动的整体模型
设计 109
3.5.3 实验和结果 111
3.6 YOLO11算法原理与架构 111
3.6.1 YOLO11的网络架构 112
3.6.2 YOLO11的性能表现 116
3.6.3 YOLO11与其他YOLO的
比较 116
3.7 本章小结 117
第二部分 工具
第4章 YOLO11使用详解 120
4.1 YOLO11的安装 120
4.1.1 本地安装Ultralytics YOLO11 120
4.1.2 在Kaggle Notebook中安装Ultralytics YOLO11 127
4.2 YOLO11快速上手 133
4.2.1 命令行界面的使用方式 133
4.2.2 Python接口的使用方式 136
4.2.3 YOLO11常用配置 142
4.3 基于Streamlit搭建Web应用
程序 149
4.3.1 Streamlit的安装及使用 150
4.3.2 Streamlit的主要组件 154
4.3.3 Streamlit的布局和容器 161
4.4 基于大模型进行数据交互 163
4.4.1 PandasAI简介 163
4.4.2 PandasAI安装及使用 164
4.5 综合案例:搭建目标检测平台 170
4.5.1 搭建简易目标检测平台 170
4.5.2 丰富目标检测平台 172
4.5.3 集成大模型进行交互查询 174
4.5.4 使用VS Code编写及运行.py
文件 177
4.6 本章小结 184
第5章 Supervision:计算机视觉AI
工具库 185
5.1 Supervision的安装及使用 186
5.1.1 Supervision的安装 186
5.1.2 Supervision的使用 186
5.2 标注目标检测结果 193
5.2.1 标注目标检测边框 193
5.2.2 显示自定义标签 197
5.3 视频处理的相关函数 199
5.3.1 在线下载视频 199
5.3.2 生成并保存视频 200
5.4 保存目标检测结果 202
5.4.1 保存为CSV文件 202
5.4.2 保存为JSON文件 203
5.5 过滤目标检测结果 204
5.5.1 按指定类别过滤 204
5.5.2 按指定类别集合过滤 206
5.5.3 按置信度过滤 206
5.5.4 按面积过滤 207
5.5.5 按相对面积过滤 208
5.5.6 按边界框过滤 208
5.5.7 按组合条件过滤 209
5.6 案例:目标跟踪项目实践 210
5.6.1 跟踪器 210
5.6.2 案例:行人目标跟踪 211
5.6.3 案例:高速公路跟踪车辆进出
统计 214
5.7 本章小结 219
第6章 数据标注工具使用详解 220
6.1 LabelImg使用详解 222
6.1.1 LabelImg的安装 223
6.1.2 LabelImg的使用 225
6.2 Ybat使用详解 229
6.2.1 Ybat的主要特点 229
6.2.2 Ybat的下载与使用 230
6.3 案例:利用标注数据进行模型
训练及预测 233
6.3.1 标注数据准备 233
6.3.2 模型训练 237
6.3.3 模型验证 243
6.3.4 模型预测 244
6.4 本章小结 245
第三部分 应用
第7章 项目实践:自动驾驶中的交通
标志检测 248
7.1 交通标志数据集的介绍及探索 249
7.1.1 交通标志数据集介绍 249
7.1.2 在Notebook中加载数据集 251
7.1.3 交通标志数据集探索 253
7.2 训练交通标志检测模型 258
7.2.1 模型下载 258
7.2.2 模型训练 259
7.2.3 模型验证 263
7.2.4 模型预测 265
7.2.5 将结果导出到本地 268
7.3 搭建交通标志检测平台 269
7.3.1 搭建简易的Web界面 269
7.3.2 搭建图片中交通标志的检测
界面 270
7.3.3 搭建视频中交通标志的检测
界面 275
7.4 本章小结 278
第8章 项目实践:自动驾驶中的
车道线检测 279
8.1 车道线数据集的介绍及探索 279
8.1.1 车道线数据集介绍 279
8.1.2 车道线数据集探索 280
8.2 训练车道线检测模型 292
8.2.1 模型下载 292
8.2.2 模型训练 294
8.2.3 模型验证 297
8.2.4 模型预测 298
8.3 搭建车道线检测平台 300
8.3.1 搭建车道线目标检测平台的
侧边栏 301
8.3.2 搭建图片中车道线的检测
界面 302
8.3.3 保存车道线检测图片及文件 304
8.3.4 查看历史车道线检测图片和
文件 306
8.3.5 搭建视频中车道线的检测
界面 309
8.3.6 集成大模型交互查询车道线
结果 310
8.4 本章小结 313
第9章 项目实践:自动驾驶中的路面
坑洞检测 314
9.1 路面坑洞数据集的介绍及探索 314
9.1.1 路面坑洞数据集介绍 314
9.1.2 路面坑洞数据集探索 315
9.2 训练路面坑洞检测模型 320
9.3 搭建路面坑洞检测平台 322
9.3.1 搭建路面坑洞检测平台的
侧边栏 322
9.3.2 在平台界面中创建图片/视频
选项卡 323
9.3.3 使用CSS美化路面坑洞检测
平台界面 324
9.3.4 搭建图片中路面坑洞的检测
界面 326
9.3.5 搭建视频中路面坑洞的检测
界面 334
9.4 本章小结 335
第10章 项目实践:道路车辆事故
检测 336
10.1 事故检测数据集的介绍及清洗 336
10.1.1 事故检测数据集介绍 336
10.1.2 删除无事故的图片及标签 337
10.1.3 事故检测数据集探索 341
10.1.4 修改data.yaml文件内容 343
10.2 训练道路车辆事故检测模型 345
10.3 搭建道路车辆事故检测平台 349
10.3.1 搭建道路车辆事故检测
平台侧边栏 350
10.3.2 搭建道路车辆事故检测
平台界面 351
10.3.3 上传图片作为界面背景 354
10.3.4 修改页面图标 359
10.4 本章小结 360
第11章 项目实践:足球运动员
检测 361
11.1 足球运动员检测数据集的介绍及
探索 361
11.1.1 足球运动员检测数据集
介绍 361
11.1.2 足球运动员检测数据集
探索 362
11.2 训练足球运动员检测模型及
预测 366
11.2.1 训练足球运动员检测
模型 366
11.2.2 验证足球运动员检测
模型 371
11.2.3 使用最优模型对测试集进行
预测 372
11.3 使用最优模型对视频中的足球
运动员进行检测 374
11.4 本章小结 377
第12章 项目实践:火灾及烟雾
检测 378
12.1 火灾及烟雾检测数据集的介绍
与探索 378
12.1.1 火灾及烟雾检测数据集
介绍 379
12.1.2 火灾及烟雾检测数据集
探索 379
12.2 训练火灾及烟雾检测模型及
预测 385
12.2.1 训练火灾及烟雾检测
模型 385
12.2.2 验证火灾及烟雾检测
模型 390
12.2.3 火灾及烟雾预测 391
12.3 搭建火灾及烟雾检测平台 393
12.3.1 搭建火灾及烟雾检测平台
界面 393
12.3.2 进行单张图片的火灾及烟雾
检测 394
12.3.3 进行多张图片的火灾及烟雾
检测 398
12.3.4 记录多张图片的火灾及烟雾
检测结果 404
12.3.5 基于大模型查询历史检测
记录 410
12.4 本章小结 413
第13章 项目实践:安全头盔和反光
背心检测 414
13.1 安全头盔和反光背心检测
数据集的介绍及探索 415
13.1.1 安全头盔和反光背心检测
数据集介绍 415
13.1.2 安全头盔和反光背心检测
数据集探索 416
13.2 训练安全头盔和反光背心检测
模型及预测 419
13.2.1 训练安全头盔和反光背心
检测模型 420
13.2.2 验证安全头盔和反光背心
检测模型 423
13.2.3 安全头盔和反光背心检测
模型预测 425
13.2.4 上传本地视频到Kaggle并
进行目标跟踪 425
13.3 搭建安全头盔和反光背心检测
平台 429
13.3.1 搭建安全头盔和反光背心
检测平台侧边栏 429
13.3.2 搭建图片中安全头盔和反光
背心的检测界面 431
13.3.3 在界面上展示历史图片的
检查结果 434
13.3.4 在界面上展示记录检测
结果的表格 437
13.3.5 基于大模型查询所有图片的
检测结果 439
13.3.6 搭建视频中安全头盔和
反光背心的检测界面 443
13.4 本章小结 446
第14章 项目实践:脑肿瘤检测 447
14.1 脑肿瘤检测数据集的介绍及
探索 447
14.1.1 脑肿瘤检测数据集介绍 448
14.1.2 脑肿瘤检测数据集探索 451
14.1.3 脑肿瘤检测数据预处理 456
14.2 训练脑肿瘤检测模型 460
14.2.1 训练轴向T1加权成像
检测模型 460
14.2.2 训练冠状位T1加权成像
检测模型 465
14.2.3 训练矢状位T1加权成像
检测模型 469
14.3 搭建基于YOLO的脑肿瘤检测
平台 472
14.3.1 设置页面配置及侧边栏 472
14.3.2 定义脑肿瘤检测函数 474
14.3.3 设置主界面 475
14.3.4 使用CSS美化平台 477
14.4 本章小结 482
第15章 项目实践:骨折检测 483
15.1 骨折检测数据集的介绍及预
处理 483
15.1.1 骨折检测数据集介绍 483
15.1.2 统计无标注数据的图片
数量 485
15.1.3 删除无标注数据的图片 486
15.1.4 骨折检测图片可视化 488
15.2 训练骨折检测模型 490
15.3 搭建骨折检测平台 496
15.3.1 设置骨折检测平台页面
配置和侧边栏 496
15.3.2 定义骨折检测函数 497
15.3.3 侧边栏增加检测上一
个下一个按钮 498
15.3.4 搭建图片中骨折的检测
界面 500
15.3.5 搭建视频中骨折的检测
界面 503
15.4 本章小结 505
第16章 项目实践:水下生物检测 506
16.1 水下生物检测数据集的介绍及
预处理 506
16.1.1 水下生物检测数据集
介绍 507
16.1.2 水下生物检测数据集
探索 507
16.2 训练水下生物检测模型 511
16.2.1 训练水下生物检测模型 511
16.2.2 验证水下生物检测模型 514
16.2.3 水下生物检测模型预测 516
16.3 搭建水下生物检测平台 517
16.3.1 搭建水下生物检测平台
侧边栏 517
16.3.2 定义水下生物检测及结
果保存函数 519
16.3.3 保存目标检测历史记录 521
16.3.4 搭建水下生物检测平台
界面 523
16.3.5 基于大模型查询水下生物的
图片 525
16.4 本章小结 529