跳转至

YOLOv5

摘要

YOLOv5 是在 COCO 数据集上预训练的一系列对象检测架构和模型,代表了 Ultralytics 对未来视觉 AI 方法的开源研究,融合了数千小时的研究和开发中积累的经验教训和最佳实践。

结果

使用图模式在 Ascend 910(8p) 上测试的表现
Name Scale BatchSize ImageSize Dataset Box mAP (%) Params Recipe Download
YOLOv5 N 32 * 8 640 MS COCO 2017 27.3 1.9M yaml weights
YOLOv5 S 32 * 8 640 MS COCO 2017 37.6 7.2M yaml weights
YOLOv5 M 32 * 8 640 MS COCO 2017 44.9 21.2M yaml weights
YOLOv5 L 32 * 8 640 MS COCO 2017 48.5 46.5M yaml weights
YOLOv5 X 16 * 8 640 MS COCO 2017 50.5 86.7M yaml weights
在Ascend 910*(8p)上测试的表现
Name Scale BatchSize ImageSize Dataset Box mAP (%) ms/step Params Recipe Download
YOLOv5 N 32 * 8 640 MS COCO 2017 27.4 736.08 1.9M yaml weights
YOLOv5 S 32 * 8 640 MS COCO 2017 37.6 787.34 7.2M yaml weights


说明

  • Box mAP:验证集上测试出的准确度。
  • 我们参考了常用的第三方 YOLOV5 重现了P5(大目标)系列模型,并做出了如下改动:与官方代码有所不同,我们使用了8x NPU(Ascend910)进行训练,单NPU的batch size为32。

快速入门

详情请参阅 MindYOLO 中的 快速入门

训练

- 分布式训练

使用预置的训练配方可以轻松重现报告的结果。如需在多台Ascend 910设备上进行分布式训练,请运行

# 在多台GPU/Ascend设备上进行分布式训练
msrun --worker_num=8 --local_worker_num=8 --bind_core=True --log_dir=./yolov5_log python train.py --config ./configs/yolov5/yolov5n.yaml --device_target Ascend --is_parallel True

同样的,您可以使用上述msrun命令在多台GPU设备上训练模型。注意: 更多关于msrun配置的信息,请参考这里

有关所有超参数的详细说明,请参阅config.py

注意: 由于全局batch size(batch_size x 设备数)是一个重要的超参数,建议保持全局batch size不变进行复制,或者将学习率线性调整为新的全局batch size。

- 单卡训练

如果您想在较小的数据集上训练或微调模型而不进行分布式训练,请运行:

# 在 CPU/GPU/Ascend 设备上进行单卡训练
python train.py --config ./configs/yolov5/yolov5n.yaml --device_target Ascend

验证和测试

要验证训练模型的准确性,您可以使用 test.py 并使用 --weight 传入权重路径。

python test.py --config ./configs/yolov5/yolov5n.yaml --device_target Ascend --weight /PATH/TO/WEIGHT.ckpt

部署

详见 部署

引用

[1] Jocher Glenn. YOLOv5 release v6.1. https://github.com/ultralytics/yolov5/releases/tag/v6.1, 2022.