YOLOv5 7.0:系统概述

01 系统概述

1.1 项目定位

YOLOv5 是 Ultralytics 基于 PyTorch 实现的实时视觉框架。当前源码对应 release v7.0,核心任务包括:

  • 目标检测train.pyval.pydetect.py
  • 实例分割segment/train.pysegment/val.pysegment/predict.py
  • 图像分类classify/train.pyclassify/val.pyclassify/predict.py
  • 模型导出export.py
  • 多后端推理models/common.py::DetectMultiBackend

该版本的主要发布特性是加入 YOLOv5-seg 实例分割模型。

1.2 版本与许可证

内容
版本 YOLOv5 v7.0
语言 Python
训练框架 PyTorch
许可证 GPL-3.0
Python 要求 README 声明 Python ≥ 3.7
PyTorch 要求 torch>=1.7.0

源码中的模型、脚本和文档均标注 GPL-3.0。商业产品集成前应核对许可证义务。

1.3 根目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
yolov5-7.0/
├── train.py # 检测训练
├── val.py # 检测验证
├── detect.py # 检测推理
├── export.py # 多格式导出
├── benchmarks.py # 导出格式性能/精度测试
├── hubconf.py # PyTorch Hub 入口
├── sample_detect.py # 本仓库增加的本地推理示例
├── models/
│ ├── yolo.py # Detect/Segment/模型解析
│ ├── common.py # 网络块、多后端、AutoShape
│ ├── experimental.py # 权重加载、模型集成
│ ├── tf.py # TensorFlow/Keras 对应实现
│ ├── yolov5{n,s,m,l,x}.yaml
│ ├── segment/ # 分割模型 YAML
│ └── hub/ # P6/P7/实验结构
├── utils/
│ ├── dataloaders.py # 数据集、图片/视频/流加载
│ ├── augmentations.py # Letterbox、Mosaic、几何增强
│ ├── loss.py # 检测损失与目标匹配
│ ├── general.py # NMS、坐标、检查与通用工具
│ ├── metrics.py # IoU、AP、混淆矩阵
│ ├── plots.py # 绘图与 Annotator
│ ├── torch_utils.py # 设备、EMA、DDP、优化器
│ ├── autoanchor.py # Anchor 检查与进化
│ ├── callbacks.py # 训练生命周期回调
│ ├── loggers/ # TensorBoard/ClearML/Comet/W&B
│ └── segment/ # 分割损失、数据与指标
├── data/
│ ├── coco.yaml # 数据集定义
│ ├── coco128.yaml # 小型入门数据集
│ ├── coco128-seg.yaml
│ ├── hyps/ # 训练超参数
│ └── scripts/ # 数据/权重下载脚本
├── segment/ # 分割任务入口
├── classify/ # 分类任务入口
├── requirements.txt
└── README.md

1.4 主要依赖

依赖 用途
PyTorch / torchvision 模型、训练、AMP、数据接口
OpenCV 图像与视频读写、缩放、绘图
NumPy / SciPy 数组与科学计算
PyYAML 模型、数据集、超参数配置
Pillow PIL 图像及 AutoShape 输入
matplotlib / seaborn / pandas 可视化与统计
tqdm 训练进度条
thop 参数量与 FLOPs 统计
tensorboard 训练日志

ONNX、TensorRT、OpenVINO、CoreML、TensorFlow、Paddle、Triton 等是按导出/部署目标选装的依赖。

1.5 三类任务

检测

输出每个候选框的:

1
(x, y, w, h, objectness, class scores...)

经 NMS 后成为:

1
(x1, y1, x2, y2, confidence, class_id)

实例分割

Segment 继承 Detect,除检测输出外增加:

  • 每个候选实例的 mask 系数
  • Proto 生成的共享原型掩码

预测阶段用 mask 系数线性组合原型,再裁剪到框内。

分类

ClassificationModel 可截取检测模型的 backbone,并将最后一层替换为 Classify 头。

1.6 模型规模

P5 检测模型包括:

1
yolov5n → yolov5s → yolov5m → yolov5l → yolov5x

它们主要共享拓扑,通过 YAML 中:

  • depth_multiple:缩放模块重复次数
  • width_multiple:缩放输出通道

实现从轻量到高精度的系列化。

1.7 核心设计思想

一句话概括:

用 YAML 描述网络图,parse_model() 动态创建 PyTorch 模型;用锚框三尺度头完成密集预测;训练端以 CIoU、Objectness BCE、Class BCE 联合优化;部署端通过 DetectMultiBackend 隔离不同推理运行时。

文章互动

阅读 --

留言

0 条留言

正在加载留言…