01 系统概述
1.1 项目定位
YOLOv5 是 Ultralytics 基于 PyTorch 实现的实时视觉框架。当前源码对应 release v7.0,核心任务包括:
- 目标检测:
train.py、val.py、detect.py - 实例分割:
segment/train.py、segment/val.py、segment/predict.py - 图像分类:
classify/train.py、classify/val.py、classify/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 | yolov5-7.0/ |
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隔离不同推理运行时。
正在加载留言…