开源项目实战学习之YOLO11:项目结构及功能分析(一)
👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路
文章大纲
- ✨ 一、引言
- ✨ 二、模型功能
- ✨ 三、框架结构
- 3.1 目录结构及功能说明
- ✨ 四、目标检测算法的发展历程
- ✨ 五、YOLO框架迭代史
- ✨ 六、本系列文章的内容安排
✨ 一、引言
在计算机视觉的广阔领域中,目标检测始终占据着至关重要的地位。
- 从智能安防系统对监控画面中可疑目标的精准识别,到自动驾驶汽车对道路上行人、车辆的实时检测,目标检测技术都发挥着关键作用。
YOLO(You Only Look Once)系列算法,凭借其高效、准确的检测能力,成为了目标检测领域的明星算法
。- YOLO 系列算法自诞生以来,不断迭代更新,每一代都在检测精度、速度和效率等方面取得了显著的提升。
- YOLO11 作为 YOLO 系列的最新版本,继承了前代的优秀传统,并引入了一系列创新技术,进一步提升了目标检测的性能。
Ultralytics 基于多年在计算机视觉和人工智能领域的基础研究,创造了尖端的、最先进的(SOTA)YOLO 模型。
- 模型不断更新以提高性能和灵活性,具有速度快、精度高和易于使用的特点。
- 在目标检测、跟踪、实例分割、图像分类和姿态估计任务中表现出色。

✨ 二、模型功能
Ultralytics 支持广泛的 YOLO 模型,从早期的版本如 YOLOv3 到最新的 YOLO11。
-
下表展示了在 COCO 数据集上预训练的 YOLO11 模型,用于检测、分割和姿态估计任务。
-
此外,还提供了在 ImageNet 数据集上预训练的分类模型。
-
跟踪模式与所有检测、分割和姿态模型兼容。
-
所有模型在首次使用时都会自动从最新的 Ultralytics 发布版本下载。
-
支持的任务和模式
-
Oriented Bounding Box(有向包围盒)
:在计算机图形学、计算机视觉和机器人等领域中,OBB 是一种用于描述物体形状和位置的方法
。- 它是一个相对于坐标轴有一定方向的矩形或长方体盒子,能够紧密地包围物体,
常用于碰撞检测、物体识别和姿态估计等任务
。 - 定向边界框对象检测可用于优化农用设备的对齐。
- 它是一个相对于坐标轴有一定方向的矩形或长方体盒子,能够紧密地包围物体,
✨ 三、框架结构
3.1 目录结构及功能说明
-
根目录文件
文件名 功能说明 .dockerignore
用于指定在构建 Docker 镜像时需要忽略的文件和目录 .gitignore
用于指定 Git 版本控制时需要忽略的文件和目录 CITATION.cff
用于提供项目的引用信息,方便用户在学术论文等场景中正确引用项目
CONTRIBUTING.md
项目贡献指南,指导开发者如何为项目做出贡献 LICENSE
项目使用的开源许可证文件,规定了项目的使用、修改和分发规则 README.md
项目的主说明文件,包含项目的概述、安装方法、使用示例等重要信息 README.zh-CN.md
项目的中文说明文件 mkdocs.yml
MkDocs 文档生成工具的配置文件,用于生成项目文档
pyproject.toml
Python 项目的配置文件,定义了项目的元数据、依赖项等信息 -
.github/
- GitHub 相关配置文件夹子目录/文件名 功能说明 ISSUE_TEMPLATE/
包含问题模板,用于规范用户在 GitHub 上提交问题的格式 dependabot.yml
Dependabot 配置文件,用于自动检查和更新项目的依赖项 workflows/
GitHub Actions 工作流配置文件夹,用于自动化项目的构建、测试等流程
-
docs/
- 项目文档文件夹文件名 功能说明 README.md
文档的说明文件 build_docs.py
用于构建项目文档的 Python 脚本
build_reference.py
用于构建项目参考文档的 Python 脚本 coming_soon_template.md
即将推出内容的模板文件
en/
英文文档文件夹 mkdocs_github_authors.yaml
与 GitHub 作者信息相关的 MkDocs 配置文件 model_data.py
与模型数据相关的 Python 脚本 overrides/
覆盖 MkDocs 默认配置的文件夹 -
docker/
- Docker 相关配置文件夹文件名 功能说明 Dockerfile
用于构建 Docker 镜像的主配置文件 Dockerfile-arm64
针对 ARM64 架构的 Docker 镜像配置文件 Dockerfile-conda
使用 Conda 环境的 Docker 镜像配置文件
Dockerfile-cpu
仅使用 CPU 的 Docker 镜像配置文件 Dockerfile-jetson-jetpack4
针对 Jetson 设备 JetPack 4 的 Docker 镜像配置文件 Dockerfile-jetson-jetpack5
针对 Jetson 设备 JetPack 5 的 Docker 镜像配置文件 Dockerfile-jetson-jetpack6
针对 Jetson 设备 JetPack 6 的 Docker 镜像配置文件 ...
可能还有其他 Docker 相关配置文件 -
examples/
- 项目示例代码文件夹 !!!文件名 功能说明 ...
包含各种使用项目功能的示例代码 -
ultralytics/
- 项目核心代码文件夹 !!!!!!文件名 功能说明 ...
包含项目的主要功能实现代码 -
tests/
- 项目测试代码文件夹文件名 功能说明 ...
包含用于测试项目功能的代码
✨ 四、目标检测算法的发展历程
目标检测算法的发展经历了多个阶段,从传统的基于手工特征的方法到基于深度学习的方法,检测性能得到了显著的提升。以下是目标检测算法发展历程的简要回顾:
- 传统方法(2000 - 2012 年):在深度学习兴起之前,目标检测主要采用基于手工特征的方法,如 Haar 特征、HOG 特征等。这些方法需要人工设计特征,并结合分类器(如 SVM)进行目标检测。传统方法的检测精度和效率相对较低,难以满足实际应用的需求。
- 基于深度学习的两阶段方法(2012 - 2015 年):随着深度学习技术的发展,基于深度学习的目标检测方法逐渐成为主流。
两阶段方法如 R - CNN、Fast R - CNN、Faster R - CNN 等
,先通过区域建议网络(RPN)生成候选区域
,然后对候选区域进行分类和定位。两阶段方法在检测精度上取得了显著的提升,但检测速度相对较慢。 - 基于深度学习的单阶段方法(2015 年至今):为了提高检测速度,单阶段目标检测方法应运而生。YOLO 系列算法是单阶段方法的代表之一,它将目标检测问题转化为一个回归问题,
直接在输入图像上进行预测,无需生成候选区域
,从而大大提高了检测速度。此外,SSD、RetinaNet 等也是常见的单阶段目标检测算法。
✨ 五、YOLO框架迭代史
- 支持的机型Ultralytics
- YOLOv3 和 YOLOv3u
引入了三种不同的检测比例,利用三种不同大小的检测内核:13x13、26x26 和 52x52。
这大大提高了对不同大小物体的检测精度。此外,YOLOv3 还增加了一些功能,如每个边界框的多标签预测和更好的特征提取网络。- YOLOv3u:该更新模型采用了YOLOv8 中的无锚点、无物体度分割头。通过消除对预定义锚点框和物体度分数的需求,该检测头设计可提高模型检测不同大小和形状物体的能力。这使得 YOLOv3u 在执行物体检测任务时更加稳健和准确。
- YOLOv4:高速、精确的物体探测
- YOLOv4 是 "You Only Look Once version 4 "的缩写,是阿列克谢-博奇科夫斯基(Alexey Bochkovskiy)于 2020 年开发的最先进的实时物体检测模型。
- 它在速度和精度之间实现了最佳平衡,因此非常适合实时应用。
YOLOv4 的架构融合了多项创新功能,如加权冗余连接(WRC)、跨阶段部分连接(CSP)和自对抗训练(SAT)等
,以实现最先进的效果。如果您正在寻找一种能在传统 GPU 上高效运行的高性能模型,YOLOv4 将是您的最佳选择。
- Ultralytics YOLOv5
- Ultralytics YOLOv5u 是YOLOv5 的高级版本,集成了无锚点、无对象性分割头,
提高了实时对象检测任务的精度-速度权衡
。与传统的YOLOv5 不同,YOLOv5u 采用了无锚点检测机制,使其在不同场景下更具灵活性和适应性
。
- Ultralytics YOLOv5u 是YOLOv5 的高级版本,集成了无锚点、无对象性分割头,
- 美团 YOLOv6
- 美团 YOLOv6 是一款先进的物体检测器,兼顾了速度和准确性,是实时应用的理想之选。它具有显著的架构增强功能,如双向串联(BiC)模块和锚点辅助训练(AAT)策略。这些创新技术在大幅提升性能的同时,将速度降低到最低程度,使 YOLOv6 成为物体检测任务中极具竞争力的选择。
- YOLOv7:可训练的免费书包
YOLOv7 是最先进的实时物体检测器
,在 5 FPS 到 160 FPS 的范围内,其速度和准确性都超过了所有已知的物体检测器。- 在GPU V100 上,YOLOv7 的准确率(56.8% AP)在 30 FPS 或更高的所有已知实时物体检测器中是最高的。
- 此外,YOLOv7 在速度和准确性上都优于 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5 等其他物体检测器。
- YOLOv7 提出的方法能
有效减少最先进的实时物体检测器约 40% 的参数和 50% 的计算量,推理速度更快,检测精度更高
。
- 探索Ultralytics YOLOv8
- YOLOv8 旨在通过先进的功能提高实时目标检测性能。与早期版本不同的是,YOLOv8 采用了无锚点分离式Ultralytics 头、最先进的骨干和颈部架构,并优化了精度与速度之间的权衡,使其成为各种应用的理想之选。
- YOLOv8 支持多种计算机视觉任务,包括物体检测、实例分割、姿态/关键点检测、定向物体检测和分类。每个模型变体都针对其特定任务进行了优化,并与推理、验证、训练和导出等各种操作模式兼容。
- YOLOv9:物体检测技术的飞跃发展
- YOLOv9 引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,标志着实时目标检测领域的重大进步。该模型在效率、准确性和适应性方面都有显著提高,在 MS COCO 数据集上树立了新的标杆。
- YOLOv9 的进步深深扎根于解决深度神经网络中信息丢失所带来的挑战。信息瓶颈原理和可逆函数的创新使用是其设计的核心,可确保 YOLOv9 保持高效率和高精确度。
- YOLOv10:实时端到端物体检测
- YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上,引入了一种新的实时目标检测方法,解决了YOLO 以前版本在后处理和模型架构方面的不足。
- 通过消除非最大抑制(NMS)和优化各种模型组件,YOLOv10 在显著降低计算开销的同时实现了最先进的性能。
- 大量实验证明,YOLOv10 在多个模型尺度上实现了卓越的
精度-延迟权衡
。
- Ultralytics YOLO11
- UltralyticsYOLO 是实时物体检测器系列中的最新产品,以最先进的精度、速度和效率重新定义了可能实现的目标。
- 在之前YOLO 版本令人印象深刻的进步基础上,YOLO11
在架构和训练方法上进行了重大改进,使其成为广泛的计算机视觉任务的多功能选择
。
✨ 六、本系列文章的内容安排
在接下来的系列文章中,我们将深入剖析 YOLO11 的代码,具体内容安排如下:
- 代码结构剖析: 详细介绍 YOLO11 代码仓库的文件目录结构,分析各个模块的功能和实现原理。
- 数据加载与预处理: 探究 YOLO11 如何加载和预处理训练数据,包括数据增强、标签编码等技术。
- 网络模型实现: 深入解读 YOLO11 的网络结构,分析骨干网络、颈部网络和检测头的具体实现。
- 训练过程详解: 介绍 YOLO11 的训练流程,包括损失函数的计算、优化器的选择和训练参数的调整。
- 推理与部署: 讲解如何使用训练好的 YOLO11 模型进行目标检测推理,并介绍将模型部署到不同平台的方法和技巧。
- 代码优化与扩展: 探讨如何对 YOLO11 代码进行优化和扩展,如模型剪枝、量化等技术的应用。
通过本系列文章的学习,你将深入了解
YOLO11
的代码实现原理和技术细节,掌握目标检测算法的开发和优化方法。
让我们一起开启 YOLO11 代码剖析的旅程吧!