YOLOv5 的预训练权重是一个在COCO数据集上预训练的物体检测架构和模型系列,它代表了 Ultralytics对未来视觉AI方法的公开研究,其中包含了在数千小时的研究和开发中所获得的经验和最佳实践。
大多数情况下,无需更改模型或训练设置即可获得良好的结果,前提是数据集足够大且标记良好。如果一开始没有得到好的结果,你可以采取一些步骤来改进,但我们始终建议用户在考虑任何更改之前先使用所有默认设置进行训练。这有助于建立性能基线并发现需要改进的领域。
如果您对训练结果有疑问,我们建议您提供尽可能多的信息(如果您希望得到有用的响应),包括结果图(列车损失、价值损失、P、R、mAP)、PR 曲线、混淆矩阵、训练镶嵌、测试结果和数据集统计图像,例如标签.png。所有这些都位于您的目录中,通常为 .project/name
yolov5/runs/train/exp
我们为希望在下面的 YOLOv5 培训中获得最佳结果的用户整理了一份完整的指南。
数据
- 每个类的图像。建议每类≥ 1500 张图像
- 每个类的实例数。建议每个类≥ 10000 个实例(标记对象)
- 图像多样性。必须代表已部署的环境。对于现实世界的用例,我们建议使用一天中不同时间、不同季节、不同天气、不同照明、不同角度、不同来源(在线抓取、本地收集、不同相机)等的图像。
- 标签一致性。必须标记所有映像中所有类的所有实例。部分标记将不起作用。
- 标签准确性。标签必须紧紧包围每个对象。对象与其边界框之间不应存在空格。任何对象都不应缺少标签。
- 标签验证。在火车起点上查看以验证您的标签是否正确显示,即参见示例马赛克。
train_batch*.jpg
- 背景图像。背景图像是没有对象的图像,这些对象被添加到数据集以减少误报 (FP)。我们建议大约 0-10% 的背景图像来帮助降低 FP(COCO 有 1000 张背景图像供参考,占总数的 1%)。背景图像不需要标签。
型号选择
像 YOLOv5x 和 YOLOv5x6 这样的较大模型在几乎所有情况下都会产生更好的结果,但有更多的参数,需要更多的 CUDA 内存来训练,并且运行速度更慢。对于移动部署,我们建议使用 YOLOv5s/m,对于云部署,我们建议使用 YOLOv5l/x。请参阅我们的自述文件表,了解所有型号的完整比较。
python train.py --data custom.yaml --weights yolov5s.pt
yolov5m.pt
yolov5l.pt
yolov5x.pt
custom_pretrained.pt
- 从头开始。推荐用于大型数据集(即 COCO、Objects365、OIv6)。传递您感兴趣的模型体系结构 yaml 以及一个空参数:
--weights ''
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
yolov5m.yaml
yolov5l.yaml
yolov5x.yaml
训练设置
在修改任何内容之前,请先使用默认设置进行训练,以建立性能基线。train.py 设置的完整列表可以在 train.py 参数解析器中找到。
- Epochs。从 300 个纪元开始。如果这在早期过度拟合,那么您可以减少 epoch。如果在 300 个 epoch 之后没有发生过拟合,则训练更长时间,即 600、1200 等 epoch。
- Image size。COCO 以 的原始分辨率进行训练,但由于数据集中存在大量小对象,因此它可以从更高分辨率的训练中受益,例如 。如果有许多小对象,则自定义数据集将受益于本机或更高分辨率的训练。最佳推理结果是在运行训练时获得的,即,如果您训练,您还应该在 进行测试和检测。
--img 640
--img 1280
--img
--img 1280
--img 1280
- Batch size。使用硬件允许的最大容量。小批量会产生较差的批次规范统计,应避免使用。
--batch-size
- Hyperparameters。默认超参数位于 hyp.scratch-low.yaml 中。建议先使用默认超参数进行训练,然后再考虑修改任何超参数。通常,增加增强超参数将减少和延迟过拟合,从而实现更长的训练和更高的最终 mAP。减少损耗分量增益超参数将有助于减少这些特定损耗分量的过拟合。有关优化这些超参数的自动化
适用于 GPU 的 YOLOv5 导出基准测试 (官网)
为所有支持的导出格式运行 YOLOv5 基准测试(速度和准确性),专业提示:导出到 TensorRT 以获得高达 5 倍的 GPU 加速(可见如下平台)
导出格式列表:
Format |
| Model |
- |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
如下三个平台表现:
Usage:
git clone https://github.com/ultralytics/yolov5 -b update/bench_gpu # clonecd yolov5 pip install -qr requirements.txt coremltools onnx onnxruntime-gpu openvino-dev # install pip install -U nvidia-tensorrt --index-url https://pypi.ngc.nvidia.com # TensorRT python utils/benchmarks.py --weights yolov5s.pt --img 640 --device 0
Colab Pro+ V100 High-RAM Results (Google 产品)
benchmarks: weights=/content/yolov5/yolov5s.pt, imgsz=640, batch_size=1, data=/content/yolov5/data/coco128.yaml, device=0, half=False, test=False
Checking setup...
YOLOv5 🚀 v6.1-135-g7926afc torch 1.10.0+cu111 CUDA:0 (Tesla V100-SXM2-16GB, 16160MiB)
Setup complete ✅ (8 CPUs, 51.0 GB RAM, 46.7/166.8 GB disk)
Benchmarks complete (458.07s)
Format mAP@0.5:0.95 Inference time (ms)
0 PyTorch 0.4623 10.19
1 TorchScript 0.4623 6.85
2 ONNX 0.4623 14.63
3 OpenVINO NaN NaN
4 TensorRT 0.4617 1.89
5 CoreML NaN NaN
6 TensorFlow SavedModel 0.4623 21.28
7 TensorFlow GraphDef 0.4623 21.22
8 TensorFlow Lite NaN NaN
9 TensorFlow Edge TPU NaN NaN
10 TensorFlow.js NaN NaN
Colab Free T4 Results
benchmarks: weights=/content/yolov5/yolov5s.pt, imgsz=640, batch_size=1, data=/content/yolov5/data/coco128.yaml, device=, half=False, test=False
Checking setup...
YOLOv5 🚀 v6.1-135-g7926afc torch 1.10.0+cu111 CUDA:0 (Tesla T4, 15110MiB)
Setup complete ✅ (2 CPUs, 12.7 GB RAM, 45.2/78.2 GB disk)
Benchmarks complete (501.61s)
Format mAP@0.5:0.95 Inference time (ms)
0 PyTorch 0.4623 11.51
1 TorchScript 0.4623 8.70
2 ONNX 0.4623 17.08
3 OpenVINO NaN NaN
4 TensorRT 0.4628 3.36
5 CoreML NaN NaN
6 TensorFlow SavedModel 0.4623 25.13
7 TensorFlow GraphDef 0.4623 25.20
8 TensorFlow Lite NaN NaN
9 TensorFlow Edge TPU NaN NaN
10 TensorFlow.js NaN NaN
Ultralytics Hyperplane A100
benchmarks: weights=yolov5s.pt, imgsz=640, batch_size=1, data=/usr/src/app/data/coco128.yaml, device=, half=False, test=False, pt_only=False
Checking setup...
YOLOv5 🚀 v6.1-174-gc4cb7c6 torch 1.11.0+cu113 CUDA:0 (A100-SXM-80GB, 81251MiB)
Setup complete ✅ (96 CPUs, 1007.7 GB RAM, 1947.5/3519.3 GB disk)
Benchmarks complete (599.41s)
Format mAP@0.5:0.95 Inference time (ms)
0 PyTorch 0.4624 6.83
1 TorchScript 0.4624 4.63
2 ONNX 0.4623 43.68
3 OpenVINO NaN NaN
4 TensorRT 0.4629 1.13
5 CoreML NaN NaN
6 TensorFlow SavedModel 0.4624 25.24
7 TensorFlow GraphDef 0.4624 23.77
8 TensorFlow Lite NaN NaN
9 TensorFlow Edge TPU NaN NaN
10 TensorFlow.js NaN NaN
注意:TensorRT 导出固定为 FP16。