Ultralytics YOLOv5
概述
YOLOv5u 代表了目标检测方法的进步。它源于 Ultralytics 开发的 YOLOv5 模型的基础架构,并整合了无锚框、无目标性分离头,这一特性此前已在 YOLOv8 模型中引入。这种调整优化了模型架构,从而在目标检测任务中实现了更高的精度-速度权衡。鉴于其实证结果及其衍生特性,YOLOv5u 为那些在研究和实际应用中寻求稳健解决方案的人们提供了一个高效的替代方案。
主要功能
-
无 Anchor 分裂 Ultralytics Head: 传统的对象检测模型依赖于预定义的 anchor 框来预测对象位置。但是,YOLOv5u 对此方法进行了现代化改造。通过采用无 anchor 分裂 Ultralytics head,它可以确保更灵活和自适应的检测机制,从而提高各种场景中的性能。
-
优化的精度-速度权衡: 速度和精度通常朝着相反的方向发展。但 YOLOv5u 挑战了这种权衡。它提供了一种经过校准的平衡,确保实时检测而不影响精度。此功能对于需要快速响应的应用程序(例如自动驾驶汽车、机器人技术和实时视频分析)尤其有价值。
-
多种预训练模型: 考虑到不同的任务需要不同的工具集,YOLOv5u 提供了大量的预训练模型。 无论您专注于推理、验证还是训练,都有一个为您量身定制的模型在等待着您。 这种多样性确保您不仅仅是使用一种通用的解决方案,而是一个专门为您的独特挑战而微调的模型。
支持的任务和模式
YOLOv5u 模型具有各种预训练权重,在对象检测任务中表现出色。它们支持全面的模式范围,使其适用于从开发到部署的各种应用。
模型类型 | 预训练权重 | 任务 | 推理 | 验证 | 训练 | 导出 |
---|---|---|---|---|---|---|
YOLOv5u | yolov5nu , yolov5su , yolov5mu , yolov5lu , yolov5xu , yolov5n6u , yolov5s6u , yolov5m6u , yolov5l6u , yolov5x6u |
目标检测 | ✅ | ✅ | ✅ | ✅ |
此表详细概述了YOLOv5u模型变体,重点介绍了它们在对象检测任务中的适用性以及对各种操作模式(如推理、验证、训练和导出)的支持。这种全面的支持确保用户可以在各种对象检测场景中充分利用YOLOv5u模型的功能。
性能指标
性能
有关使用这些在 COCO 上训练的模型的示例,请参阅检测文档,其中包括 80 个预训练类别。
模型 | YAML | 尺寸 (像素) |
mAPval 50-95 |
速度 CPU ONNX (毫秒) |
速度 A100 TensorRT (毫秒) |
参数 (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
yolov5nu.pt | yolov5n.yaml | 640 | 34.3 | 73.6 | 1.06 | 2.6 | 7.7 |
yolov5su.pt | yolov5s.yaml | 640 | 43.0 | 120.7 | 1.27 | 9.1 | 24.0 |
yolov5mu.pt | yolov5m.yaml | 640 | 49.0 | 233.9 | 1.86 | 25.1 | 64.2 |
yolov5lu.pt | yolov5l.yaml | 640 | 52.2 | 408.4 | 2.50 | 53.2 | 135.0 |
yolov5xu.pt | yolov5x.yaml | 640 | 53.2 | 763.2 | 3.81 | 97.2 | 246.4 |
yolov5n6u.pt | yolov5n6.yaml | 1280 | 42.1 | 211.0 | 1.83 | 4.3 | 7.8 |
yolov5s6u.pt | yolov5s6.yaml | 1280 | 48.6 | 422.6 | 2.34 | 15.3 | 24.6 |
yolov5m6u.pt | yolov5m6.yaml | 1280 | 53.6 | 810.9 | 4.36 | 41.2 | 65.7 |
yolov5l6u.pt | yolov5l6.yaml | 1280 | 55.7 | 1470.9 | 5.47 | 86.1 | 137.4 |
yolov5x6u.pt | yolov5x6.yaml | 1280 | 56.8 | 2436.5 | 8.98 | 155.4 | 250.7 |
使用示例
此示例提供了简单的 YOLOv5 训练和推理示例。有关这些和其他模式的完整文档,请参见Predict、Train、Val和Export文档页面。
示例
PyTorch pretrained *.pt
模型以及配置 *.yaml
文件可以传递给 YOLO()
类,以便在 python 中创建模型实例:
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv5n model
model = YOLO("yolov5n.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the YOLOv5n model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
可以使用 CLI 命令直接运行模型:
# Load a COCO-pretrained YOLOv5n model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov5n.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained YOLOv5n model and run inference on the 'bus.jpg' image
yolo predict model=yolov5n.pt source=path/to/bus.jpg
引用与致谢
Ultralytics YOLOv5 发布
由于模型快速迭代的特性,Ultralytics 没有发布 YOLOv5 的正式研究论文。我们专注于推进技术并使其更易于使用,而不是生成静态文档。有关 YOLO 架构、功能和用法的最新信息,请参阅我们的 GitHub 存储库 和 文档。
如果您的研究中使用了 YOLOv5 或 YOLOv5u,请按如下方式引用 Ultralytics YOLOv5 仓库:
@software{yolov5,
title = {Ultralytics YOLOv5},
author = {Glenn Jocher},
year = {2020},
version = {7.0},
license = {AGPL-3.0},
url = {https://github.com/ultralytics/yolov5},
doi = {10.5281/zenodo.3908559},
orcid = {0000-0001-5950-6979}
}
请注意,YOLOv5 模型是在 AGPL-3.0 和 Enterprise 许可下提供的。
常见问题
什么是 Ultralytics YOLOv5u?它与 YOLOv5 有何不同?
Ultralytics YOLOv5u 是 YOLOv5 的高级版本,它集成了无锚框、无对象置信度的分离头,从而增强了实时对象检测任务的准确性与速度之间的权衡。与传统的 YOLOv5 不同,YOLOv5u 采用了无锚框检测机制,使其在各种场景中更灵活且更具适应性。有关其功能的更多详细信息,您可以参考YOLOv5 概述。
无 anchor 的 Ultralytics head 如何提高 YOLOv5u 中的目标检测性能?
YOLOv5u 中的无锚框 Ultralytics head 通过消除对预定义锚框的依赖来提高对象检测性能。这产生了一种更灵活和自适应的检测机制,可以更高效地处理各种对象大小和形状。这种增强直接有助于在准确性和速度之间取得平衡,使 YOLOv5u 适用于实时应用。在主要特性部分了解有关其架构的更多信息。
我可以将预训练的YOLOv5u模型用于不同的任务和模式吗?
是的,您可以将预训练的 YOLOv5u 模型用于各种任务,例如Object Detection。这些模型支持多种模式,包括Inference、Validation、Training和Export。这种灵活性允许用户在不同的操作要求中利用 YOLOv5u 模型的功能。有关详细概述,请查看Supported Tasks and Modes部分。
YOLOv5u 模型在不同平台上的性能指标如何比较?
YOLOv5u 模型的性能指标因所使用的平台和硬件而异。例如,YOLOv5nu 模型在 COCO 数据集上实现了 34.3 mAP,在 CPU (ONNX) 上的速度为 73.6 毫秒,在 A100 TensorRT 上的速度为 1.06 毫秒。有关不同 YOLOv5u 模型的详细性能指标,请参见性能指标部分,其中提供了跨各种设备的全面比较。
如何使用 Ultralytics python API 训练 YOLOv5u 模型?
您可以通过加载预训练模型并使用数据集运行训练命令来训练 YOLOv5u 模型。这是一个快速示例:
示例
from ultralytics import YOLO
# Load a COCO-pretrained YOLOv5n model
model = YOLO("yolov5n.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Load a COCO-pretrained YOLOv5n model and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov5n.pt data=coco8.yaml epochs=100 imgsz=640
有关更详细的说明,请访问使用示例部分。