跳转至内容

Ultralytics YOLOv5

概述

YOLOv5u 代表了目标检测方法的进步。它源于 Ultralytics 开发的 YOLOv5 模型的基础架构,并整合了无锚框、无目标性分离头,这一特性此前已在 YOLOv8 模型中引入。这种调整优化了模型架构,从而在目标检测任务中实现了更高的精度-速度权衡。鉴于其实证结果及其衍生特性,YOLOv5u 为那些在研究和实际应用中寻求稳健解决方案的人们提供了一个高效的替代方案。

Ultralytics YOLOv5

ultralytics/yolov5 训练的 YOLOv5 模型与 ultralytics/ultralytics 库不兼容

Ultralytics 提供了一个 YOLOv5 模型的无 anchor 变体。 使用 原始 YOLOv5 仓库 训练的模型不能与 Ultralytics 库一起使用。

主要功能

  • 无 Anchor 分裂 Ultralytics Head: 传统的对象检测模型依赖于预定义的 anchor 框来预测对象位置。但是,YOLOv5u 对此方法进行了现代化改造。通过采用无 anchor 分裂 Ultralytics head,它可以确保更灵活和自适应的检测机制,从而提高各种场景中的性能。

  • 优化的精度-速度权衡: 速度和精度通常朝着相反的方向发展。但 YOLOv5u 挑战了这种权衡。它提供了一种经过校准的平衡,确保实时检测而不影响精度。此功能对于需要快速响应的应用程序(例如自动驾驶汽车机器人技术和实时视频分析)尤其有价值。

  • 预训练模型多样性:深知不同任务需要不同工具集,YOLOv5u提供了丰富的预训练模型。无论您专注于推理、验证还是训练,总有一款量身定制的模型在等待您。这种多样性确保您使用的不仅是通用解决方案,更是为独特挑战专门微调的模型。

支持的任务和模式

YOLOv5u模型凭借其多样化的预训练权重,在目标检测任务中表现卓越。该系列模型支持全面的检测模式,使其适用于从开发到部署的各类应用场景。

模型类型预训练权重任务推理验证训练导出
YOLOv5uyolov5nu, 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.ptyolov5nyaml64034.373.61.062.67.7
yolov5su.ptyolov5syaml64043.0120.71.279.124.0
yolov5mu.ptyolov5myaml64049.0233.91.8625.164.2
yolov5lu.ptyaml64052.2408.42.5053.2135.0
yolov5xu.ptyolov5xyaml64053.2763.23.8197.2246.4
yolov5n6u.ptyolov5n6yaml128042.1211.01.834.37.8
yolov5s6u.ptyolov5s6yaml128048.6422.62.3415.324.6
yolov5m6u.ptyolov5m6yaml128053.6810.94.3641.265.7
yolov5l6u.ptyaml128055.71470.95.4786.1137.4
yolov5x6u.ptyolov5x6yaml128056.82436.58.98155.4250.7

使用示例

此示例提供了简单的 YOLOv5 训练和推理示例。有关这些和其他模式的完整文档,请参见PredictTrainValExport文档页面。

示例

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.0Enterprise 许可下提供的。

常见问题

什么是 Ultralytics YOLOv5u?它与 YOLOv5 有何不同?

Ultralytics YOLOv5u 是 YOLOv5 的高级版本,它集成了无锚框、无对象置信度的分离头,从而增强了实时对象检测任务的准确性与速度之间的权衡。与传统的 YOLOv5 不同,YOLOv5u 采用了无锚框检测机制,使其在各种场景中更灵活且更具适应性。有关其功能的更多详细信息,您可以参考YOLOv5 概述

无 anchor 的 Ultralytics head 如何提高 YOLOv5u 中的目标检测性能?

YOLOv5u 中的无锚框 Ultralytics head 通过消除对预定义锚框的依赖来提高对象检测性能。这产生了一种更灵活和自适应的检测机制,可以更高效地处理各种对象大小和形状。这种增强直接有助于在准确性和速度之间取得平衡,使 YOLOv5u 适用于实时应用。在主要特性部分了解有关其架构的更多信息。

能否将预训练的YOLOv5u模型用于不同的任务和模式?

是的,您可以将预训练的YOLOv5u模型用于物体检测等多种任务。这些模型支持多种模式,包括推理验证训练和导出。这种灵活性使用户能够根据不同的操作需求灵活运用YOLOv5u模型的功能。详细信息请参阅"支持的任务与模式"章节。

YOLOv5u 模型在不同平台上的性能指标如何比较?

YOLOv5u 模型的性能指标因所使用的平台和硬件而异。例如,YOLOv5nu 模型在COCO 数据集上实现了 34.3mAP ,CPU ONNX) 运算速度为 73.6 ms,A100TensorRT 运算速度为 1.06 ms。不同 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

有关更详细的说明,请访问使用示例部分。



📅 2 年前创建 ✏️ 0 天前更新
glenn-jocherRizwanMunawarpderrengerY-T-GLaughing-qMatthewNoyceUltralyticsAssistantBurhan-Q

评论