YOLO
重要更新
请注意,YOLO 的原始创建者Deci 已被NVIDIA 收购。因此,Deci 不再积极维护这些模型。Ultralytics 将继续支持这些模型的使用,但预计原团队不会再进行更新。
概述
YOLO 由Deci AI 开发,是一种开创性的物体检测基础模型。它是先进的神经架构搜索技术的产物,经过精心设计,可解决以往YOLO 模型的局限性。YOLO 在量化支持和准确性-延迟权衡方面有了重大改进,是物体检测领域的一次重大飞跃。
YOLO 概览。 YOLO 采用了量化感知块和选择性量化技术,以获得最佳性能。该模型在转换为 INT8 量化版本时,精度下降极小,比其他模型有显著提高。这些进步最终形成了一个卓越的架构,具有前所未有的物体检测能力和出色的性能。
主要功能
- 便于量化的基本模块: YOLO 引入了对量化友好的新基本模块,解决了以往YOLO 模型的一个重大局限。
- 先进的训练和量化: YOLO 利用先进的训练方案和训练后量化来提高性能。
- AutoNAC优化与预训练: YOLOAutoNAC优化算法,COCO、Objects365和Roboflow 等知名数据集上进行预训练。这种预训练使其在生产环境中执行下游目标检测任务时表现尤为出色。
预训练模型
体验Ultralytics提供的预训练YOLO所展现的下一代目标检测能力。这些模型在速度与精度方面均能提供顶尖性能。根据您的具体需求,可从多种定制化选项中自由选择:
性能
| 模型 | mAP | 延迟 (ms) |
|---|---|---|
| YOLO S | 47.5 | 3.21 |
| YOLO M | 51.55 | 5.85 |
| YOLO L | 52.22 | 7.87 |
| YOLOS int-8 | 47.03 | 2.36 |
| YOLO M INT-8 | 51.0 | 3.78 |
| YOLO L INT-8 | 52.1 | 4.78 |
每种型号的设计都能在平均精度mAP)和延迟之间取得平衡,帮助您优化目标检测任务的性能和速度。
使用示例
Ultralytics 通过我们的 ultralytics python 包。该包提供了一个用户友好的 Python API,以简化流程。
下面的示例展示了如何将YOLO 模型与 ultralytics 用于推理和验证的软件包:
推理和验证示例
在这个例子中,我们在COCO8 数据集上验证了YOLO。
示例
本示例为YOLO 提供了简单的推理和验证代码。有关推理结果的处理,请参阅 预测 模式。有关使用YOLO 的其他模式,请参阅 验证 和 导出。YOLO-NAS在 ultralytics 软件包不支持训练。
PyTorch pretrained *.pt 模型文件可以传递给 NAS() 类,以便在 python 中创建模型实例:
from ultralytics import NAS
# Load a COCO-pretrained YOLO-NAS-s model
model = NAS("yolo_nas_s.pt")
# Display model information (optional)
model.info()
# Validate the model on the COCO8 example dataset
results = model.val(data="coco8.yaml")
# Run inference with the YOLO-NAS-s model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
可以使用 CLI 命令直接运行模型:
# Load a COCO-pretrained YOLO-NAS-s model and validate it's performance on the COCO8 example dataset
yolo val model=yolo_nas_s.pt data=coco8.yaml
# Load a COCO-pretrained YOLO-NAS-s model and run inference on the 'bus.jpg' image
yolo predict model=yolo_nas_s.pt source=path/to/bus.jpg
支持的任务和模式
我们提供三种YOLO 型号:小型 (s)、中型 (m) 和大型 (l)。每种型号都能满足不同的计算和性能需求:
- YOLO:针对计算资源有限但效率至关重要的环境进行了优化。
- YOLO:提供一种均衡的方法,适用于更高精度的通用目标检测。
- YOLO:专为要求最高精确度的场景定制,在这些场景中,计算资源的限制较少。
以下是每种模型的详细概述,包括其预训练权重的链接、支持的任务以及与不同运行模式的兼容性。
| 模型类型 | 预训练权重 | 支持的任务 | 推理 | 验证 | 训练 | 导出 |
|---|---|---|---|---|---|---|
| YOLO | yolo_nas_s.pt | 目标检测 | ✅ | ✅ | ❌ | ✅ |
| YOLO | yolo_nas_m.pt | 目标检测 | ✅ | ✅ | ❌ | ✅ |
| YOLO | yolo_nas_l.pt | 目标检测 | ✅ | ✅ | ❌ | ✅ |
引用和致谢
如果您在研究或开发工作中使用了YOLO,请引用 SuperGradients:
@misc{supergradients,
doi = {10.5281/ZENODO.7789328},
url = {https://zenodo.org/records/7789328},
author = {Aharon, Shay and {Louis-Dupont} and {Ofri Masad} and Yurkova, Kate and {Lotem Fridman} and {Lkdci} and Khvedchenya, Eugene and Rubin, Ran and Bagrov, Natan and Tymchenko, Borys and Keren, Tomer and Zhilko, Alexander and {Eran-Deci}},
title = {Super-Gradients},
publisher = {GitHub},
journal = {GitHub repository},
year = {2021},
}
我们对Deci AI 的SuperGradients团队表示感谢,感谢他们为计算机视觉社区创建和维护这一宝贵资源所付出的努力。我们相信,YOLO 凭借其创新的架构和卓越的物体检测能力,将成为开发人员和研究人员的重要工具。
常见问题
什么是YOLO,它与以前的YOLO 型号相比有何改进?
YOLO 由Deci AI 开发,是一种利用先进的神经架构搜索(NAS)技术的先进物体检测模型。它通过引入量化友好的基本模块和复杂的训练方案等功能,解决了以往YOLO 模型的局限性。这大大提高了性能,尤其是在计算资源有限的环境中。YOLO 还支持量化,即使转换为 INT8 版本也能保持高精度,从而提高了其在生产环境中的适用性。更多详情,请参阅概述部分。
如何将YOLO 模型集成到我的Python 应用程序中?
您可以使用 ultralytics 包。以下是一个简单的示例,演示如何加载预训练YOLO并执行推理:
from ultralytics import NAS
# Load a COCO-pretrained YOLO-NAS-s model
model = NAS("yolo_nas_s.pt")
# Validate the model on the COCO8 example dataset
results = model.val(data="coco8.yaml")
# Run inference with the YOLO-NAS-s model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
更多信息,请参考推理和验证示例。
YOLO 的主要功能是什么?
YOLO 引入了几项关键功能,使其成为物体检测任务的最佳选择:
- 量化友好的基本块: 增强的架构,可在量化后以最小的精度下降提高模型性能。
- 复杂的训练和量化: 采用先进的训练方案和训练后量化技术。
- AutoNAC优化与预训练:采用AutoNAC优化算法,并在COCO、Objects365和Roboflow 等知名数据集上进行预训练。
这些特性使其具有高精度、高效的性能,并适用于在生产环境中部署。请在主要特性部分了解更多信息。
YOLO 型号支持哪些任务和模式?
YOLO 模型支持各种目标检测任务和模式,如推理、验证和输出。它们不支持训练。支持的模型包括YOLO、YOLO 和YOLO,每种模型都是根据不同的计算能力和性能需求定制的。有关详细概述,请参阅 "支持的任务和模式"部分。
是否有现成的预训练YOLO可用?如何获取这些模型?
Ultralytics 预训练的YOLO 模型,您可直接获取使用。这些模型基于COCO 等数据集预训练,在速度和准确性方面均能确保卓越性能。您可通过预训练模型部分提供的链接下载这些模型。以下是一些示例: