本页面概述了YOLOv5的核心功能,解释了构成该框架的主要操作和组件。它涵盖了三个主要流程:训练、推理和验证,以及支持通用模型部署的多后端检测系统。
有关模型架构或数据处理等单个组件的详细解释,请分别参阅模型架构和数据处理。
YOLOv5提供了一个全面的目标检测框架,具有三个主要操作流程。
这些操作实现为独立的脚本(train.py、detect.py、val.py),但也可以通过Python API进行编程导入和使用。
来源: train.py1-988 detect.py1-439 val.py1-605 utils/general.py1-1355
训练流程在train.py中实现,并提供从头开始训练YOLOv5模型或在自定义数据集上微调预训练模型的功能。
来源: train.py103-541
模型初始化:
优化器和学习率调度器:
指数移动平均(EMA):
自动锚框:
训练过程中的验证:
实验跟踪:
来源: train.py103-541 utils/general.py15-100 utils/torch_utils.py
推理流程在detect.py中实现,支持在图像、视频、流或网络摄像头等各种输入源上运行训练好的YOLOv5模型。
来源: detect.py70-321
模型加载:
DetectMultiBackend支持各种模型格式(PyTorch、ONNX、TensorRT等)输入源:
预处理:
后期处理:
输出格式:
可视化:
来源: detect.py70-321 utils/general.py1010-1120
验证流程在val.py中实现,并提供使用平均精度(mAP)、精确率和召回率等标准指标评估YOLOv5模型性能的功能。
来源: val.py188-467
指标计算:
批处理:
IoU阈值:
结果分析:
COCO评估:
性能剖析:
来源: val.py188-467 utils/metrics.py
DetectMultiBackend类是核心组件,为跨多个后端框架加载和执行YOLOv5模型提供统一的接口。这使得YOLOv5能够支持广泛的部署场景。
来源: models/common.py detect.py166-167 val.py270-275
统一接口:
自动检测:
半精度支持:
预热推理:
设备目标:
来源: models/common.py detect.py166-184 val.py270-282
YOLOv5 在 utils 目录中包含一套丰富的实用工具,它们支持核心功能。以下是一些最重要的实用函数和类:
| 功能 | 描述 | 文件 |
|---|---|---|
xyxy2xywh | 将边界框格式从 [x1, y1, x2, y2] 转换为 [x, y, w, h] | utils/general.py |
xywh2xyxy | 将边界框格式从 [x, y, w, h] 转换为 [x1, y1, x2, y2] | utils/general.py |
xywhn2xyxy | 将归一化 [x, y, w, h] 转换为像素 [x1, y1, x2, y2] | utils/general.py |
xyxy2xywhn | 将 [x1, y1, x2, y2] 转换为归一化 [x, y, w, h] | utils/general.py |
scale_boxes | 将边界框从一个图像尺寸缩放到另一个尺寸 | utils/general.py |
clip_boxes | 将边界框裁剪到图像边界 | utils/general.py |
non_max_suppression 函数是一个关键的实用工具,用于过滤重复的检测结果。
数据加载工具为不同的输入类型创建适当的数据加载器
来源: utils/dataloaders.py detect.py170-179 val.py304-314 train.py285-322
| 实用工具 | 描述 | 文件 |
|---|---|---|
colorstr | 格式化的彩色控制台输出 | utils/general.py |
check_img_size | 确保图像尺寸是步长的倍数 | utils/general.py |
increment_path | 创建唯一的输出目录 | utils/general.py |
select_device | 配置计算设备 | utils/torch_utils.py |
check_dataset | 验证数据集配置 | utils/general.py |
init_seeds | 设置随机种子以实现可重现性 | utils/general.py |
ModelEMA | 模型的指数移动平均 | utils/torch_utils.py |
time_sync | 精确计时函数 | utils/torch_utils.py |
配置文件 | 性能剖析工具 | utils/general.py |
来源: utils/general.py436-447 utils/general.py723-750 utils/general.py1234-1256 utils/torch_utils.py
YOLOv5 的核心功能围绕三个主要操作:训练、推理和验证。这些操作由灵活的多后端系统支持,用于模型加载和执行,以及一套全面的实用工具,用于数据处理、边界框操作、非极大值抑制等。
这种架构使 YOLOv5 既强大又适应性强,支持从研究和开发到跨各种硬件平台的生产部署的各种用例。
来源: train.py1-988 detect.py1-439 val.py1-605 utils/general.py1-1355