487 字
2 分钟
YOLOv5 历史项目复现与维护
YOLOv5 仍广泛存在于历史项目、行业部署和教学代码中。维护它时最重要的是保持原仓库、依赖和权重格式一致,不要直接套用新版本 ultralytics 包的命令。
建立隔离环境
git clone https://github.com/ultralytics/yolov5.gitcd yolov5python -m venv .venvsource .venv/bin/activatepython -m pip install --upgrade pippython -m pip install -r requirements.txt如果项目记录了具体提交或标签,应切换到对应版本:
git checkout <tag-or-commit>同时保存:
git rev-parse HEADpython --versionpython -m pip freeze > environment-lock.txt数据集结构
datasets/example/├── images/│ ├── train/│ └── val/└── labels/ ├── train/ └── val/YOLO 检测标签通常每行表示:
class_id x_center y_center width height坐标按图像宽高归一化到 0-1。训练前检查类别 ID 连续、框未越界、空标签符合预期。
data.yaml 示例:
path: /data/exampletrain: images/trainval: images/valnames: 0: person 1: vehicle训练与验证
历史仓库常见命令:
python train.py \ --img 640 \ --batch 16 \ --epochs 100 \ --data data.yaml \ --weights yolov5s.pt \ --name example-v5验证:
python val.py \ --weights runs/train/example-v5/weights/best.pt \ --data data.yaml \ --img 640推理:
python detect.py \ --weights runs/train/example-v5/weights/best.pt \ --source images/具体参数以项目锁定版本的 --help 和仓库文档为准。
权重兼容性
官方当前文档中的 YOLOv5u 属于现代 ultralytics 包中的变体。原始 ultralytics/yolov5 仓库训练权重与现代包不应默认互换。
迁移前应明确:
- 权重来自哪个仓库和提交;
- 模型结构 YAML 是否自定义;
- 推理输出和 NMS 逻辑是否被修改;
- 导出脚本使用哪个版本;
- 类别顺序、预处理和缩放方式是否一致。
维护建议
- 将原环境构建成容器或可复现脚本。
- 为关键图片保存期望检测结果和容差。
- 不在原项目中直接升级全部依赖。
- 新旧模型并行评估,再决定是否迁移。
- 对外分发时重新确认当前许可证要求。
参考资料
YOLOv5 历史项目复现与维护
https://zh19990906.github.io/fuwari/posts/yolov5-legacy-practice/