Ultralytics-中文文档-三-

Ultralytics 中文文档(三)

Ultralytics 支持的模型

原文:docs.ultralytics.com/models/

欢迎访问 Ultralytics 的模型文档!我们支持多种模型,每个模型都专为特定任务如对象检测、实例分割、图像分类、姿态估计和多对象跟踪而设计。如果您有兴趣将您的模型架构贡献给 Ultralytics,请查阅我们的贡献指南。

特色模型

这里列出了一些主要支持的模型:

  1. YOLOv3: YOLO 模型系列的第三个版本,最初由 Joseph Redmon 开发,以其高效的实时对象检测能力而闻名。

  2. YOLOv4: 由 Alexey Bochkovskiy 在 2020 年发布的 darknet 原生更新版 YOLOv3。

  3. YOLOv5: Ultralytics 改进的 YOLO 架构版本,提供比之前版本更好的性能和速度权衡。

  4. YOLOv6: 2022 年由美团发布,并在该公司许多自主送餐机器人中使用。

  5. YOLOv7: 2022 年发布的更新版 YOLO 模型,由 YOLOv4 的作者发布。

  6. YOLOv8 NEW 🚀: YOLO 系列的最新版本,具有增强的能力,如实例分割、姿态/关键点估计和分类。

  7. YOLOv9: 在 Ultralytics YOLOv5 代码库上训练的实验性模型,实现可编程梯度信息(PGI)。

  8. YOLOv10: 清华大学发布,采用无 NMS 训练和效率-精度驱动架构,提供最先进的性能和延迟。

  9. Segment Anything Model (SAM): Meta 原始的 Segment Anything 模型(SAM)。

  10. Segment Anything Model 2 (SAM2): Meta 的下一代视频和图像 Segment Anything 模型(SAM)。

  11. Mobile Segment Anything Model (MobileSAM): MobileSAM 是由庆熙大学推出的面向移动应用的模型。

  12. Fast Segment Anything Model (FastSAM): 中国科学院自动化研究所的 Image & Video Analysis Group 推出的 FastSAM。

  13. YOLO-NAS: YOLO 神经架构搜索(NAS)模型。

  14. Realtime Detection Transformers (RT-DETR): 百度的 PaddlePaddle 实时检测变换器(RT-DETR)模型。

  15. YOLO-World: 腾讯 AI 实验室发布的实时开放词汇对象检测模型。

www.youtube.com/embed/MWq1UxqTClU?si=nHAW-lYDzrz68jR0

Watch: 仅需几行代码即可运行 Ultralytics 的 YOLO 模型。

入门:使用示例

该示例提供了简单的 YOLO 训练和推断示例。有关这些和其他模式的完整文档,请参阅 Predict、Train、Val 和 Export 文档页面。

注意下面的例子是关于 YOLOv8 Detect 模型进行对象检测。有关其他支持的任务,请参阅 Segment、Classify 和 Pose 文档。

例子

可以将预训练的 PyTorch *.pt模型以及配置*.yaml文件传递给YOLO()SAM()NAS()RTDETR()类,在 Python 中创建一个模型实例:

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.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 YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 

可以使用 CLI 命令直接运行模型:

# Load a COCO-pretrained YOLOv8n model and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=yolov8n.pt  data=coco8.yaml  epochs=100  imgsz=640

# Load a COCO-pretrained YOLOv8n model and run inference on the 'bus.jpg' image
yolo  predict  model=yolov8n.pt  source=path/to/bus.jpg 

贡献新模型

感兴趣将您的模型贡献给 Ultralytics 吗?太棒了!我们始终欢迎扩展我们的模型组合。

  1. 分叉存储库:首先分叉Ultralytics GitHub 存储库

  2. 克隆您的分支:将您的分支克隆到本地机器,并创建一个新分支进行操作。

  3. 实现您的模型:按照我们提供的贡献指南中的编码标准和准则添加您的模型。

  4. 彻底测试:务必对您的模型进行严格测试,无论是独立进行还是作为管道的一部分。

  5. 创建拉取请求:一旦您满意您的模型,请创建一个拉取请求到主存储库进行审查。

  6. 代码审查和合并:经过审查,如果您的模型符合我们的标准,将合并到主存储库中。

详细步骤,请参阅我们的贡献指南。

常见问题

使用 Ultralytics YOLOv8 进行目标检测的关键优势是什么?

Ultralytics YOLOv8 提供了增强功能,如实时目标检测、实例分割、姿态估计和分类。其优化的架构确保高速性能,不会牺牲准确性,使其非常适合各种应用。YOLOv8 还包括与流行数据集和模型的内置兼容性,详细信息请参阅 YOLOv8 文档页面。

如何在自定义数据上训练 YOLOv8 模型?

使用 Ultralytics 库可以轻松地在自定义数据上训练 YOLOv8 模型。以下是一个快速示例:

示例

from ultralytics import YOLO

# Load a YOLOv8n model
model = YOLO("yolov8n.pt")

# Train the model on custom dataset
results = model.train(data="custom_data.yaml", epochs=100, imgsz=640) 
yolo  train  model=yolov8n.pt  data='custom_data.yaml'  epochs=100  imgsz=640 

获取更详细的指导,请访问 Train 文档页面。

Ultralytics 支持哪些 YOLO 版本?

Ultralytics 支持从 YOLOv3 到 YOLOv10 等全面的 YOLO(You Only Look Once)版本,以及 NAS、SAM 和 RT-DETR 等模型。每个版本都针对检测、分割和分类等各种任务进行了优化。有关每个模型的详细信息,请参阅 Ultralytics 支持的模型文档。

我为什么应该使用 Ultralytics HUB 进行机器学习项目?

Ultralytics HUB 为训练、部署和管理 YOLO 模型提供了一个无代码、端到端的平台。它简化了复杂的工作流程,使用户能够专注于模型性能和应用。HUB 还提供云训练能力、全面的数据集管理和用户友好的界面。更多信息请访问 Ultralytics HUB 文档页面。

YOLOv8 可以执行哪些类型的任务,以及与其他 YOLO 版本相比有何优势?

YOLOv8 是一个多功能模型,能够执行包括目标检测、实例分割、分类和姿态估计等任务。与 YOLOv3 和 YOLOv4 等早期版本相比,YOLOv8 在速度和准确性方面都有显著提升,这归功于其优化的架构。有关更详细的比较,请参考 YOLOv8 文档和任务页面,了解特定任务的更多细节。

YOLOv3、YOLOv3-Ultralytics 和 YOLOv3u

原文:docs.ultralytics.com/models/yolov3/

概述

本文介绍了三个密切相关的目标检测模型的概述,分别是YOLOv3YOLOv3-UltralyticsYOLOv3u

  1. YOLOv3: 这是 You Only Look Once (YOLO)目标检测算法的第三个版本。由 Joseph Redmon 最初开发,YOLOv3 通过引入多尺度预测和三种不同尺寸的检测核心来改进其前身。

  2. YOLOv3-Ultralytics: 这是 Ultralytics 对 YOLOv3 模型的实现。它复制了原始的 YOLOv3 架构,并提供了额外的功能,例如支持更多预训练模型和更简单的定制选项。

  3. YOLOv3u: 这是 YOLOv3-Ultralytics 的更新版本,采用了 YOLOv8 模型中使用的无锚点、无物体性分离头。YOLOv3u 保留了 YOLOv3 相同的主干和颈部架构,但使用了 YOLOv8 的更新检测头。

Ultralytics YOLOv3

主要特点

  • YOLOv3: 引入了三种不同尺度的检测方式,利用了三种不同大小的检测核心:13x13、26x26 和 52x52。这显著提高了对不同尺寸物体的检测精度。此外,YOLOv3 还增加了诸如每个边界框的多标签预测和更好的特征提取网络等功能。

  • YOLOv3-Ultralytics: Ultralytics 对 YOLOv3 的实现提供了与原始模型相同的性能,但增加了对更多预训练模型、额外的训练方法和更简单的定制选项的支持。这使得它在实际应用中更加多功能和用户友好。

  • YOLOv3u: 这个更新的模型采用了 YOLOv8 模型中使用的无锚点、无物体性分离头。通过消除预定义的锚框和物体性评分的需求,这种检测头设计可以提高模型对各种大小和形状物体的检测能力。这使得 YOLOv3u 在目标检测任务中更加稳健和准确。

支持的任务和模式

YOLOv3 系列,包括 YOLOv3、YOLOv3-Ultralytics 和 YOLOv3u,专为目标检测任务而设计。这些模型在各种实际场景中以其在精度和速度之间的平衡而闻名。每个变种都提供独特的功能和优化,适用于一系列应用场景。

所有三个模型支持全面的模式集合,确保在模型部署和开发的各个阶段具有多样性。这些模式包括推断、验证、训练和导出,为用户提供了完整的工具包,用于有效的目标检测。

模型类型 支持的任务 推断 验证 训练 导出
YOLOv3 目标检测
YOLOv3-Ultralytics 目标检测
YOLOv3u 目标检测

此表提供了每个 YOLOv3 变体的功能一览,突显了它们在各种任务和操作模式中在目标检测工作流中的多用途性和适用性。

使用示例

此示例提供了简单的 YOLOv3 训练和推断示例。有关这些及其他模式的完整文档,请参阅预测、训练、验证和导出文档页面。

示例

可以将 PyTorch 预训练的 *.pt 模型及配置 *.yaml 文件传递给 YOLO() 类,在 Python 中创建模型实例:

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv3n model
model = YOLO("yolov3n.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 YOLOv3n model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 

可通过 CLI 命令直接运行模型:

# Load a COCO-pretrained YOLOv3n model and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=yolov3n.pt  data=coco8.yaml  epochs=100  imgsz=640

# Load a COCO-pretrained YOLOv3n model and run inference on the 'bus.jpg' image
yolo  predict  model=yolov3n.pt  source=path/to/bus.jpg 

引用和致谢

如果您在研究中使用 YOLOv3,请引用原始 YOLO 论文和 Ultralytics YOLOv3 仓库:

@article{redmon2018yolov3,
  title={YOLOv3: An Incremental Improvement},
  author={Redmon, Joseph and Farhadi, Ali},
  journal={arXiv preprint arXiv:1804.02767},
  year={2018}
} 

感谢 Joseph Redmon 和 Ali Farhadi 开发原始 YOLOv3。

常见问题解答

YOLOv3、YOLOv3-Ultralytics 和 YOLOv3u 之间有何区别?

YOLOv3 是由 Joseph Redmon 开发的 YOLO(You Only Look Once)目标检测算法的第三个版本,以其在准确性和速度上的平衡而闻名,利用三种不同的尺度(13x13、26x26 和 52x52)进行检测。YOLOv3-Ultralytics 是 Ultralytics 对 YOLOv3 的适配版本,增加了对更多预训练模型的支持,并简化了模型定制过程。YOLOv3u 是 YOLOv3-Ultralytics 的升级变体,集成了来自 YOLOv8 的无锚点、无对象性分割头部,提升了对各种目标尺寸的检测鲁棒性和准确性。关于这些变体的更多细节,请参阅 YOLOv3 系列

如何使用 Ultralytics 训练 YOLOv3 模型?

使用 Ultralytics 训练 YOLOv3 模型非常简单。您可以使用 Python 或 CLI 来训练模型:

示例

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv3n model
model = YOLO("yolov3n.pt")

# 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 YOLOv3n model and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=yolov3n.pt  data=coco8.yaml  epochs=100  imgsz=640 

若要了解更全面的训练选项和指南,请访问我们的训练模式文档。

YOLOv3u 在目标检测任务中如何提升准确性?

YOLOv3u 改进了 YOLOv3 和 YOLOv3-Ultralytics,引入了 YOLOv8 模型中使用的无锚点、无对象性分割头部。此升级消除了预定义锚点框和对象性分数的需求,增强了检测不同大小和形状对象的精确性。这使得 YOLOv3u 在复杂和多样化的目标检测任务中更为优选。有关更多信息,请参阅 Why YOLOv3u 部分。

如何使用 YOLOv3 模型进行推断?

您可以通过 Python 脚本或 CLI 命令执行 YOLOv3 模型推断:

示例

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv3n model
model = YOLO("yolov3n.pt")

# Run inference with the YOLOv3n model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 
# Load a COCO-pretrained YOLOv3n model and run inference on the 'bus.jpg' image
yolo  predict  model=yolov3n.pt  source=path/to/bus.jpg 

若要了解有关运行 YOLO 模型的详细信息,请参阅推断模式文档。

YOLOv3 及其变体支持哪些任务?

YOLOv3、YOLOv3-Ultralytics 和 YOLOv3u 主要支持目标检测任务。这些模型可用于模型部署和开发的各个阶段,例如推断、验证、训练和导出。有关支持的全面任务集合和更深入的详细信息,请访问我们的目标检测任务文档。

我在哪里可以找到引用 YOLOv3 在我的研究中所需的资源?

如果您在研究中使用了 YOLOv3,请引用原始的 YOLO 论文和 Ultralytics YOLOv3 代码库。示例 BibTeX 引用:

@article{redmon2018yolov3,
  title={YOLOv3: An Incremental Improvement},
  author={Redmon, Joseph and Farhadi, Ali},
  journal={arXiv preprint arXiv:1804.02767},
  year={2018}
} 

有关更多引用详细信息,请参阅引文和致谢部分。

YOLOv4:高速和精确的物体检测

原文:docs.ultralytics.com/models/yolov4/

欢迎访问 Ultralytics 关于 YOLOv4 的文档页面,这是一款由 Alexey Bochkovskiy 于 2020 年推出的最先进的实时物体检测器,托管在github.com/AlexeyAB/darknet。YOLOv4 旨在提供速度和准确性之间的最佳平衡,使其成为许多应用的优秀选择。

YOLOv4 架构图 YOLOv4 架构图。展示了 YOLOv4 的复杂网络设计,包括主干、颈部和头部组件及其互连层,以实现最佳的实时物体检测。

介绍

YOLOv4 代表 You Only Look Once 第 4 版。它是一种实时物体检测模型,旨在解决之前 YOLO 版本(如 YOLOv3)和其他物体检测模型的局限性。与其他基于卷积神经网络(CNN)的物体检测器不同,YOLOv4 不仅适用于推荐系统,还适用于独立的过程管理和人员输入减少。它在传统图形处理单元(GPU)上的运行使得可以以实惠的价格进行大规模使用,并且设计成能在传统 GPU 上实时工作,仅需要一台这样的 GPU 进行训练。

架构

YOLOv4 利用几种创新功能共同优化其性能。这些功能包括加权残差连接(WRC)、跨阶段部分连接(CSP)、交叉小批量归一化(CmBN)、自对抗训练(SAT)、Mish 激活、马赛克数据增强、DropBlock 正则化和 CIoU 损失。这些特性结合起来实现了最先进的结果。

典型的物体检测器由几部分组成,包括输入、主干、颈部和头部。YOLOv4 的主干在 ImageNet 上进行了预训练,并用于预测物体的类别和边界框。主干可以来自多个模型,包括 VGG、ResNet、ResNeXt 或 DenseNet。检测器的颈部用于从不同阶段收集特征图,通常包括多个自底向上的路径和多个自顶向下的路径。头部部分用于进行最终的物体检测和分类。

Bag of Freebies

YOLOv4 还利用被称为“freebies 包”的方法,这些技术在训练期间提高模型的准确性而不增加推理成本。数据增强是物体检测中常用的 freebies 包技术,它增加输入图像的变化,以提高模型的鲁棒性。一些数据增强的例子包括光度失真(调整图像的亮度、对比度、色调、饱和度和噪声)和几何失真(添加随机缩放、裁剪、翻转和旋转)。这些技术有助于模型更好地泛化到不同类型的图像。

特性和性能

YOLOv4 旨在在目标检测中实现最佳的速度和准确性。YOLOv4 的架构包括 CSPDarknet53 作为骨干网络,PANet 作为颈部,YOLOv3 作为检测头。这种设计使 YOLOv4 能够以令人印象深刻的速度进行目标检测,使其适用于实时应用。YOLOv4 在准确性方面也表现出色,在目标检测基准测试中取得了最新的成果。

使用示例

在撰写时,Ultralytics 当前不支持 YOLOv4 模型。因此,有兴趣使用 YOLOv4 的用户需要直接参考 YOLOv4 GitHub 存储库获取安装和使用说明。

这里是您可能用来使用 YOLOv4 的典型步骤的简要概述:

  1. 访问 YOLOv4 GitHub 存储库:github.com/AlexeyAB/darknet

  2. 按照 README 文件中提供的说明进行安装。通常包括克隆存储库,安装必要的依赖项,并设置任何必要的环境变量。

  3. 安装完成后,按照存储库中提供的使用说明训练和使用模型。通常包括准备数据集,配置模型参数,训练模型,然后使用训练好的模型进行目标检测。

请注意,具体步骤可能因您的具体用例和 YOLOv4 存储库的当前状态而异。因此,强烈建议直接参考 YOLOv4 GitHub 存储库中提供的说明。

我们对可能引起的任何不便表示歉意,并将努力更新此文档,以包含 Ultralytics 对 YOLOv4 实现支持后的使用示例。

结论

YOLOv4 是一种强大且高效的目标检测模型,它在速度和准确性之间取得了良好的平衡。它在训练期间采用独特的特性和 freebies 包技术,使其在实时目标检测任务中表现出色。YOLOv4 可以由任何具有常规 GPU 的人进行训练和使用,使其对各种应用都具有可访问性和实用性。

引用和致谢

我们要感谢 YOLOv4 的作者在实时目标检测领域做出的重要贡献:

@misc{bochkovskiy2020yolov4,
  title={YOLOv4: Optimal Speed and Accuracy of Object Detection},
  author={Alexey Bochkovskiy and Chien-Yao Wang and Hong-Yuan Mark Liao},
  year={2020},
  eprint={2004.10934},
  archivePrefix={arXiv},
  primaryClass={cs.CV}
} 

原始的 YOLOv4 论文可以在 arXiv 上找到。作者已经公开了他们的工作,并且代码库可以在 GitHub 上获取。我们感谢他们在推动领域发展和使他们的工作对更广泛的社区可用方面所作的努力。

FAQ

YOLOv4 是什么,为什么我应该用它进行目标检测?

YOLOv4,全称为 “You Only Look Once version 4”,是由 Alexey Bochkovskiy 在 2020 年开发的一种先进的实时目标检测模型。它在速度和准确性之间实现了最佳平衡,非常适合实时应用。YOLOv4 的架构包含几个创新特性,如加权残差连接(WRC)、跨阶段部分连接(CSP)和自对抗训练(SAT),等等,以实现最先进的结果。如果您正在寻找在传统 GPU 上高效运行的高性能模型,YOLOv4 是一个极好的选择。

YOLOv4 的架构如何增强其性能?

YOLOv4 的架构包括几个关键组件:骨干网络、颈部和头部。骨干网络(如 VGG、ResNet 或 CSPDarknet53)经过预训练,用于预测类别和边界框。颈部利用 PANet 连接来自不同阶段的特征图,进行全面的数据提取。最后,头部使用 YOLOv3 的配置进行最终的目标检测。YOLOv4 还采用了像马赛克数据增强和 DropBlock 正则化等 “bag of freebies” 技术,进一步优化了其速度和准确性。

在 YOLOv4 的背景下,“bag of freebies” 是什么?

“Bag of freebies” 指的是在不增加推理成本的情况下,提高 YOLOv4 训练准确性的方法。这些技术包括各种形式的数据增强,如光度扭曲(调整亮度、对比度等)和几何扭曲(缩放、裁剪、翻转、旋转)。通过增加输入图像的变异性,这些增强有助于 YOLOv4 更好地泛化到不同类型的图像,从而提高其鲁棒性和准确性,而不影响其实时性能。

为什么 YOLOv4 被认为适合传统 GPU 上的实时目标检测?

YOLOv4 的设计旨在优化速度和准确性,使其成为需要快速和可靠性能的实时目标检测任务的理想选择。它在传统 GPU 上运行效率高,仅需一个 GPU 同时进行训练和推理。这使得它适用于各种应用,从推荐系统到独立流程管理,从而减少了对广泛硬件设置的需求,并使其成为实时目标检测的成本效益解决方案。

如果 Ultralytics 当前不支持 YOLOv4,我该如何开始使用?

要开始使用 YOLOv4,请访问官方YOLOv4 GitHub 代码库。按照 README 文件中提供的安装说明操作,通常包括克隆代码库、安装依赖项和设置环境变量。安装完成后,您可以通过准备数据集、配置模型参数和按照提供的使用说明来训练模型。由于 Ultralytics 目前不支持 YOLOv4,建议直接参考 YOLOv4 GitHub 获取最新和详细的指导。

YOLOv5

原文:docs.ultralytics.com/models/yolov5/

概述

YOLOv5u 代表了物体检测方法论的进步。源自 Ultralytics 开发的 YOLOv5 模型的基础架构,YOLOv5u 集成了无锚点、无对象性的分割头部,这一特性此前已在 YOLOv8 模型中引入。这种适应性调整优化了模型的架构,在物体检测任务中实现了更好的准确度和速度权衡。根据实证结果及其派生特性,YOLOv5u 为那些在研究和实际应用中寻求强大解决方案的人提供了高效的替代选择。

Ultralytics YOLOv5

主要特点

  • 无锚点分割 Ultralytics 头: 传统的物体检测模型依赖预定义的锚框来预测物体位置。然而,YOLOv5u 现代化了这种方法。通过采用无锚点分割 Ultralytics 头,它确保了更灵活和适应性更强的检测机制,从而在多种场景中提高了性能。

  • 优化的准确度-速度权衡: 速度和准确度常常相互制约。但 YOLOv5u 挑战了这种权衡。它提供了一个校准的平衡,确保实时检测而不会牺牲准确性。这一特性在需要快速响应的应用中尤为宝贵,如自动驾驶车辆、机器人技术和实时视频分析。

  • 各种预训练模型: 了解到不同任务需要不同的工具集,YOLOv5u 提供了大量预训练模型。无论您是专注于推理、验证还是训练,都有一个专门为您等待的量身定制的模型。这种多样性确保您不仅使用一种“一刀切”的解决方案,而是一种专门为您独特挑战进行了优化调整的模型。

支持的任务和模式

YOLOv5u 模型以各种预训练权重在物体检测任务中表现卓越。它们支持广泛的模式,适用于从开发到部署的各种应用。

模型类型 预训练权重 任务 推理 验证 训练 导出
YOLOv5u yolov5nu, yolov5su, yolov5mu, yolov5lu, yolov5xu, yolov5n6u, yolov5s6u, yolov5m6u, yolov5l6u, yolov5x6u 物体检测

此表详细介绍了 YOLOv5u 模型变体的概述,突出了它们在物体检测任务中的适用性以及对推理、验证、训练和导出等各种操作模式的支持。这种全面的支持确保用户能充分利用 YOLOv5u 模型在各种物体检测场景中的能力。

性能指标

性能

请查看检测文档,了解在 COCO 数据集上训练的这些模型的使用示例,其中包括 80 个预训练类别。

| Model | YAML | size ^((pixels)) | mAP^(val 50-95) | Speed ^(CPU ONNX

(ms)) | Speed ^(A100 TensorRT

(ms)) | params ^((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

Usage Examples

This example provides simple YOLOv5 training and inference examples. For full documentation on these and other modes see the Predict, Train, Val and Export docs pages.

Example

PyTorch 预训练的*.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 

引文和致谢

如果您在研究中使用 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企业许可提供。

常见问题解答

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

Ultralytics YOLOv5u 是 YOLOv5 的高级版本,集成了无锚点、无对象性分裂头部,增强了实时目标检测任务的精度和速度折衷。与传统的 YOLOv5 不同,YOLOv5u 采用无锚点检测机制,使其在不同场景中更加灵活和适应性强。关于其特性的更多详细信息,请参考 YOLOv5 概述。

无锚点的 Ultralytics 头部如何提高 YOLOv5u 中的目标检测性能?

YOLOv5u 中的无锚点 Ultralytics 头部通过消除对预定义锚点框的依赖来提高目标检测性能。这导致了更灵活、适应性更强的检测机制,可以更高效地处理各种大小和形状的物体。这种增强直接促成了精度和速度之间的平衡折衷,使 YOLOv5u 适用于实时应用。在关键特性部分了解其架构的更多信息。

我可以将预训练的 YOLOv5u 模型用于不同的任务和模式吗?

是的,您可以将预训练的 YOLOv5u 模型用于物体检测等多种任务。这些模型支持包括推断、验证、训练和导出在内的多种模式。这种灵活性使用户能够在不同的操作需求下利用 YOLOv5u 模型的能力。详细概述,请查看支持的任务和模式部分。

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

YOLOv5u 模型的性能指标因平台和硬件的不同而有所不同。例如,YOLOv5nu 模型在 COCO 数据集上的 mAP 达到 34.3,在 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 

欲了解更详细的说明,请访问使用示例部分。

美团 YOLOv6

原文:docs.ultralytics.com/models/yolov6/

概述

美团 YOLOv6 是一款先进的物体检测器,速度与准确性兼顾,广受实时应用青睐。该模型在架构和训练方案上引入了几个显著的增强,包括双向串联(BiC)模块的实现,锚点辅助训练(AAT)策略以及改进的骨干和 neck 设计,从而在 COCO 数据集上实现了最先进的准确性。

美团 YOLOv6 模型示例图 YOLOv6 概述。 模型架构图展示了重新设计的网络组件和训练策略,显著提升了性能。 (a) YOLOv6 的 neck 部分(显示了 N 和 S)。注意,对于 M/L,RepBlocks 被 CSPStackRep 替换。 (b) BiC 模块的结构。 (c) SimCSPSPPF 块。 (来源).

主要特点

  • 双向串联(BiC)模块: YOLOv6 在检测器的“neck”中引入了一个 BiC 模块,增强了定位信号,并在几乎没有速度降低的情况下提升了性能。

  • 锚点辅助训练(AAT)策略: 该模型提出了 AAT 策略,旨在享受基于锚点和无锚点范式的优势,同时不影响推理效率。

  • 增强的骨干和 neck 设计: 通过在 YOLOv6 中加深骨干和 neck 的另一个阶段,该模型在高分辨率输入下在 COCO 数据集上实现了最先进的性能。

  • 自我蒸馏策略: 实施了一种新的自我蒸馏策略,以提升 YOLOv6 较小模型的性能,在训练期间增强辅助回归分支,并在推理时将其移除,以避免明显的速度下降。

性能指标

YOLOv6 提供了多个不同尺度的预训练模型:

  • YOLOv6-N:使用 NVIDIA Tesla T4 GPU 在 COCO val2017 上以 1187 FPS 实现了 37.5%的 AP。

  • YOLOv6-S:在 484 FPS 下达到 45.0%的 AP。

  • YOLOv6-M:在 226 FPS 下达到 50.0%的 AP。

  • YOLOv6-L:在 116 FPS 下达到 52.8%的 AP。

  • YOLOv6-L6:实时条件下的最先进准确性。

YOLOv6 还提供了针对不同精度和移动平台优化的量化模型。

使用示例

此示例提供简单的 YOLOv6 训练和推理示例。有关这些以及其他模式的完整文档,请参阅 Predict、Train、Val 和 Export 文档页面。

示例

可以将 PyTorch 预训练的*.pt模型和配置文件*.yaml传递给YOLO()类,在 Python 中创建模型实例:

from ultralytics import YOLO

# Build a YOLOv6n model from scratch
model = YOLO("yolov6n.yaml")

# 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 YOLOv6n model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 

可以直接运行模型的 CLI 命令:

# Build a YOLOv6n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=yolov6n.yaml  data=coco8.yaml  epochs=100  imgsz=640

# Build a YOLOv6n model from scratch and run inference on the 'bus.jpg' image
yolo  predict  model=yolov6n.yaml  source=path/to/bus.jpg 

支持的任务和模式

YOLOv6 系列提供了一系列针对高性能目标检测优化的模型。这些模型适应各种计算需求和准确性要求,非常适合广泛的应用场景。

模型类型 预训练权重 支持的任务 推断 验证 训练 导出
YOLOv6-N yolov6-n.pt 目标检测
YOLOv6-S yolov6-s.pt 目标检测
YOLOv6-M yolov6-m.pt 目标检测
YOLOv6-L yolov6-l.pt 目标检测
YOLOv6-L6 yolov6-l6.pt 目标检测

本表格详细介绍了 YOLOv6 模型的各个变体,突出了它们在目标检测任务中的能力及其与推断、验证、训练和导出等各种操作模式的兼容性。这种全面的支持确保用户可以充分利用 YOLOv6 模型在广泛的目标检测场景中的能力。

引用和致谢

我们要感谢在实时目标检测领域作出重要贡献的作者:

@misc{li2023yolov6,
  title={YOLOv6 v3.0: A Full-Scale Reloading},
  author={Chuyi Li and Lulu Li and Yifei Geng and Hongliang Jiang and Meng Cheng and Bo Zhang and Zaidan Ke and Xiaoming Xu and Xiangxiang Chu},
  year={2023},
  eprint={2301.05586},
  archivePrefix={arXiv},
  primaryClass={cs.CV}
} 

原始的 YOLOv6 论文可以在 arXiv 找到。作者已经公开了他们的工作,并且代码库可以在 GitHub 上访问。我们感谢他们在推动领域发展和使他们的工作对更广泛的社区可用方面的努力。

常见问题解答(FAQ)

什么是美团 YOLOv6,它有什么独特之处?

美团 YOLOv6 是一款平衡速度和准确性的先进目标检测器,非常适合实时应用。它具有像双向串联(BiC)模块和锚点辅助训练(AAT)策略这样的显著架构增强。这些创新大大提高了性能,几乎没有速度降低,使 YOLOv6 成为目标检测任务的竞争选择。

YOLOv6 中的双向串联(BiC)模块如何提高性能?

YOLOv6 中的双向串联(BiC)模块增强了探测器颈部的定位信号,通过有效地组合不同的特征图提高了模型准确检测对象的能力。有关 YOLOv6 的更多功能详情,请参阅主要功能部分。

如何使用 Ultralytics 训练 YOLOv6 模型?

您可以使用简单的 Python 或 CLI 命令训练 YOLOv6 模型。例如:

示例

from ultralytics import YOLO

# Build a YOLOv6n model from scratch
model = YOLO("yolov6n.yaml")

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640) 
yolo  train  model=yolov6n.yaml  data=coco8.yaml  epochs=100  imgsz=640 

欲了解更多信息,请访问训练页面。

YOLOv6 的不同版本及其性能指标是什么?

YOLOv6 提供多个版本,每个版本针对不同的性能需求进行了优化:

  • YOLOv6-N: 37.5% 在 1187 FPS 的 AP

  • YOLOv6-S: 45.0% 在 484 FPS 的 AP

  • YOLOv6-M: 50.0% 在 226 FPS 的 AP

  • YOLOv6-L: 52.8% 在 116 FPS 的 AP

  • YOLOv6-L6:实时场景中的最先进准确性

这些模型使用 NVIDIA Tesla T4 GPU 在 COCO 数据集上进行评估。有关性能指标的更多信息,请参阅性能指标部分。

锚辅助训练(AAT)策略如何使 YOLOv6 受益?

YOLOv6 中的锚辅助训练(AAT)结合了基于锚点和无锚点方法的元素,增强了模型的检测能力,而不影响推断效率。该策略在训练过程中利用锚点来改进边界框预测,使 YOLOv6 在多样的目标检测任务中表现出色。

YOLOv6 模型在 Ultralytics 中支持哪些操作模式?

YOLOv6 支持包括推断、验证、训练和导出在内的各种操作模式。这种灵活性允许用户充分利用模型在不同场景下的能力。详细了解每种模式,请查看支持的任务和模式部分。

YOLOv7:可训练的免费功能袋

原文:docs.ultralytics.com/models/yolov7/

YOLOv7 是一款超前的实时目标检测器,在 5 FPS 到 160 FPS 范围内超越所有已知的目标检测器,速度和准确性均卓越。在 GPU V100 上,它以 30 FPS 或更高的速度实现了最高的准确性(56.8% AP)。此外,YOLOv7 在速度和准确性上均优于其他目标检测器,如 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5 等。该模型完全基于 MS COCO 数据集进行了从零开始的训练,没有使用任何其他数据集或预训练权重。YOLOv7 的源代码可在 GitHub 上找到。

YOLOv7 与 SOTA 目标检测器的比较

SOTA 目标检测器比较

根据 YOLO 比较表中的结果,我们知道所提出的方法在速度-准确性平衡方面表现最佳。如果我们将 YOLOv7-tiny-SiLU 与 YOLOv5-N(r6.1)进行比较,我们的方法在 AP 上更快 127 fps,准确性提高了 10.7%。此外,YOLOv7 在 161 fps 的帧率下具有 51.4%的 AP,而具有相同 AP 的 PPYOLOE-L 只有 78 fps 的帧率。在参数使用方面,YOLOv7 比 PPYOLOE-L 少 41%。如果我们将 YOLOv7-X 与具有 99 fps 推理速度的 YOLOv5-L(r6.1)进行比较,YOLOv7-X 可以提高 AP 达到 3.9%。如果将 YOLOv7-X 与相似规模的 YOLOv5-X(r6.1)进行比较,YOLOv7-X 的推理速度比较快 31 fps。此外,在参数量和计算量方面,与 YOLOv5-X(r6.1)相比,YOLOv7-X 减少了 22%的参数和 8%的计算量,但在 AP 上提高了 2.2%(来源)。

Model Params ^((M)) FLOPs ^((G)) Size ^((pixels)) FPS AP^(test / val 50-95) AP^(test 50) AP^(test 75) AP^(test S) AP^(test M) AP^(test L)
YOLOX-S 9.0M 26.8G 640 102 40.5% / 40.5% - - - - -
YOLOX-M 25.3M 73.8G 640 81 47.2% / 46.9% - - - - -
YOLOX-L 54.2M 155.6G 640 69 50.1% / 49.7% - - - - -
YOLOX-X 99.1M 281.9G 640 58 51.5% / 51.1% - - - - -
PPYOLOE-S 7.9M 17.4G 640 208 43.1% / 42.7% 60.5% 46.6% 23.2% 46.4% 56.9%
PPYOLOE-M 23.4M 49.9G 640 123 48.9% / 48.6% 66.5% 53.0% 28.6% 52.9% 63.8%
PPYOLOE-L 52.2M 110.1G 640 78 51.4% / 50.9% 68.9% 55.6% 31.4% 55.3% 66.1%
PPYOLOE-X 98.4M 206.6G 640 45 52.2% / 51.9% 69.9% 56.5% 33.3% 56.3% 66.4%
YOLOv5-N (r6.1) 1.9M 4.5G 640 159 - / 28.0% - - - - -
YOLOv5-S (r6.1) 7.2M 16.5G 640 156 - / 37.4% - - - - -
YOLOv5-M (r6.1) 21.2M 49.0G 640 122 - / 45.4% - - - - -
YOLOv5-L (r6.1) 46.5M 109.1G 640 99 - / 49.0% - - - - -
YOLOv5-X (r6.1) 86.7M 205.7G 640 83 - / 50.7% - - - - -
YOLOR-CSP 52.9M 120.4G 640 106 51.1% / 50.8% 69.6% 55.7% 31.7% 55.3% 64.7%
YOLOR-CSP-X 96.9M 226.8G 640 87 53.0% / 52.7% 71.4% 57.9% 33.7% 57.1% 66.8%
YOLOv7-tiny-SiLU 6.2M 13.8G 640 286 38.7% / 38.7% 56.7% 41.7% 18.8% 42.4% 51.9%
YOLOv7 36.9M 104.7G 640 161 51.4% / 51.2% 69.7% 55.9% 31.8% 55.5% 65.0%
YOLOv7-X 71.3M 189.9G 640 114 53.1% / 52.9% 71.2% 57.8% 33.8% 57.1% 67.4%
YOLOv5-N6 (r6.1) 3.2M 18.4G 1280 123 - / 36.0% - - - - -
YOLOv5-S6 (r6.1) 12.6M 67.2G 1280 122 - / 44.8% - - - - -
YOLOv5-M6 (r6.1) 35.7M 200.0G 1280 90 - / 51.3% - - - - -
YOLOv5-L6 (r6.1) 76.8M 445.6G 1280 63 - / 53.7% - - - - -
YOLOv5-X6 (r6.1) 140.7M 839.2G 1280 38 - / 55.0% - - - - -
YOLOR-P6 37.2M 325.6G 1280 76 53.9% / 53.5% 71.4% 58.9% 36.1% 57.7% 65.6%
YOLOR-W6 79.8G 453.2G 1280 66 55.2% / 54.8% 72.7% 60.5% 37.7% 59.1% 67.1%
YOLOR-E6 115.8M 683.2G 1280 45 55.8% / 55.7% 73.4% 61.1% 38.4% 59.7% 67.7%
YOLOR-D6 151.7M 935.6G 1280 34 56.5% / 56.1% 74.1% 61.9% 38.9% 60.4% 68.7%
YOLOv7-W6 70.4M 360.0G 1280 84 54.9% / 54.6% 72.6% 60.1% 37.3% 58.7% 67.1%
YOLOv7-E6 97.2M 515.2G 1280 56 56.0% / 55.9% 73.5% 61.2% 38.0% 59.9% 68.4%
YOLOv7-D6 154.7M 806.8G 1280 44 56.6% / 56.3% 74.0% 61.8% 38.8% 60.1% 69.5%
YOLOv7-E6E 151.7M 843.2G 1280 36 56.8% / 56.8% 74.4% 62.1% 39.3% 60.5% 69.0%

概览

实时物体检测是许多计算机视觉系统的重要组成部分,包括多目标跟踪、自动驾驶、机器人技术和医学图像分析。近年来,实时物体检测的发展集中在设计高效的架构和提高各种 CPU、GPU 和神经处理单元(NPU)推理速度上。YOLOv7 支持从边缘到云端的移动 GPU 和 GPU 设备。

与传统的实时物体检测器专注于架构优化不同,YOLOv7 引入了专注于训练过程优化的概念。这包括设计用于提高物体检测准确性而不增加推理成本的模块和优化方法,被称为“可训练的免费物品袋”概念。

关键特性

YOLOv7 引入了几个关键特性:

  1. 模型重新参数化:YOLOv7 提出了一种计划好的重新参数化模型,这是一种适用于不同网络中层的策略,具有梯度传播路径概念。

  2. 动态标签分配:使用多个输出层训练模型提出了一个新问题:“如何为不同分支的输出分配动态目标?”为了解决这个问题,YOLOv7 引入了一种新的标签分配方法,称为粗到细的引导标签分配。

  3. 扩展和复合缩放:YOLOv7 为实时物体检测器提出了“扩展”和“复合缩放”方法,可以有效利用参数和计算。

  4. 效率:YOLOv7 提出的方法可以有效地减少最先进实时物体检测器约 40%的参数和 50%的计算量,并具有更快的推理速度和更高的检测精度。

使用示例

撰写时,Ultralytics 目前不支持 YOLOv7 模型。因此,有兴趣使用 YOLOv7 的用户需要直接参考 YOLOv7 GitHub 存储库获取安装和使用说明。

这里简要介绍了使用 YOLOv7 可能采取的典型步骤:

  1. 访问 YOLOv7 GitHub 存储库:github.com/WongKinYiu/yolov7

  2. 跟随 README 文件中提供的说明进行安装。通常包括克隆存储库、安装必要的依赖项以及设置任何必要的环境变量。

  3. 安装完成后,您可以按照仓库中提供的使用说明训练和使用模型。这通常包括准备数据集、配置模型参数、训练模型,然后使用训练好的模型进行目标检测。

请注意,具体步骤可能因特定用例和 YOLOv7 仓库的当前状态而有所不同。因此,强烈建议直接参考 YOLOv7 GitHub 仓库中提供的说明。

我们对可能造成的任何不便表示歉意,并将努力在 Ultralytics 支持 YOLOv7 后更新本文档以包含使用示例。

引用和致谢

我们要感谢 YOLOv7 的作者在实时目标检测领域所做的重要贡献:

@article{wang2022yolov7,
  title={{YOLOv7}: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
  author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
  journal={arXiv preprint arXiv:2207.02696},
  year={2022}
} 

YOLOv7 的原始论文可在 arXiv 上找到。作者已将他们的工作公开,并且代码库可以在 GitHub 上访问。我们感谢他们在推动领域发展和使他们的工作对更广泛的社区可用方面所做的努力。

常见问题解答

YOLOv7 是什么,为什么它被认为是实时目标检测的突破?

YOLOv7 是一种前沿的实时目标检测模型,实现了无与伦比的速度和准确性。它超越了其他模型,如 YOLOX、YOLOv5 和 PPYOLOE,在参数使用和推断速度上。YOLOv7 的显著特点包括模型重新参数化和动态标签分配,这些优化了其性能而没有增加推断成本。有关其架构和与其他领先的目标检测器的比较指标的更多技术细节,请参阅 YOLOv7 论文

YOLOv7 如何改进之前的 YOLO 模型(如 YOLOv4 和 YOLOv5)?

YOLOv7 引入了几项创新,包括模型重新参数化和动态标签分配,这些创新增强了训练过程并提高了推断准确性。与 YOLOv5 相比,YOLOv7 显著提升了速度和准确性。例如,YOLOv7-X 相比于 YOLOv5-X,提高了 2.2% 的准确性,并减少了 22% 的参数。详细的比较可在 YOLOv7 性能表格和 SOTA 目标检测器的对比中找到。

我可以使用 YOLOv7 与 Ultralytics 工具和平台吗?

目前,Ultralytics 平台不直接支持 YOLOv7。有兴趣使用 YOLOv7 的用户需要按照 YOLOv7 GitHub 仓库 中提供的安装和使用说明操作。对于其他领先的模型,您可以使用 Ultralytics HUB 进行探索和训练。

如何为自定义目标检测项目安装和运行 YOLOv7?

要安装和运行 YOLOv7,请按照以下步骤操作:

  1. 克隆 YOLOv7 仓库:

    git  clone  https://github.com/WongKinYiu/yolov7 
    
  2. 导航至克隆的目录并安装依赖项:

    cd  yolov7
    pip  install  -r  requirements.txt 
    
  3. 根据存储库中提供的使用说明准备您的数据集并配置模型参数。有关更多指导,请访问 YOLOv7 GitHub 存储库以获取最新信息和更新。

YOLOv7 引入了哪些关键特性和优化?

YOLOv7 提供了几个关键特性,彻底改变了实时目标检测:

  • 模型重参数化:通过优化梯度传播路径来增强模型的性能。

  • 动态标签分配:采用粗到细的引导方法为不同分支的输出分配动态目标,提高准确性。

  • 扩展和复合缩放:有效利用参数和计算资源,以便为各种实时应用扩展模型。

  • 效率:与其他最先进的模型相比,参数数量减少了 40%,计算量减少了 50%,同时实现了更快的推理速度。有关这些特性的更多详细信息,请参见 YOLOv7 概述部分。

YOLOv8

原文:docs.ultralytics.com/models/yolov8/

概述

YOLOv8 是 YOLO 系列实时物体检测器的最新版本,在精度和速度方面提供先进的性能。基于之前版本的进展,YOLOv8 引入了新的功能和优化,使其成为广泛应用于各种物体检测任务的理想选择。

Ultralytics YOLOv8

www.youtube.com/embed/Na0HvJ4hkk0

观看: Ultralytics YOLOv8 模型概述

主要特点

  • 先进的骨干网络和颈部架构: YOLOv8 采用先进的骨干网络和颈部架构,提高特征提取和物体检测性能。

  • 基于分离型无锚点 Ultralytics 头部的优势: YOLOv8 采用基于分离型无锚点 Ultralytics 头部,相比基于锚点的方法,有助于提高准确性和更高效的检测过程。

  • 优化的精度与速度权衡: YOLOv8 专注于在精度和速度之间保持最佳平衡,适用于各种应用领域中的实时物体检测任务。

  • 多样的预训练模型: YOLOv8 提供一系列预训练模型,以满足各种任务和性能需求,更易于找到适合特定用例的模型。

支持的任务和模式

YOLOv8 系列提供多种模型,每个模型专门针对计算机视觉中特定的任务设计。这些模型旨在满足各种需求,从物体检测到更复杂的任务,如实例分割、姿势/关键点检测、定向物体检测和分类。

YOLOv8 系列的每个变体均针对其各自的任务进行了优化,确保高性能和准确性。此外,这些模型与包括推断、验证、训练和导出在内的各种运行模式兼容,有助于在不同的部署和开发阶段使用。

Model 文件名 任务 推断 验证 训练 导出
YOLOv8 yolov8n.pt yolov8s.pt yolov8m.pt yolov8l.pt yolov8x.pt 检测
YOLOv8-seg yolov8n-seg.pt yolov8s-seg.pt yolov8m-seg.pt yolov8l-seg.pt yolov8x-seg.pt 实例分割
YOLOv8-pose yolov8n-pose.pt yolov8s-pose.pt yolov8m-pose.pt yolov8l-pose.pt yolov8x-pose.pt yolov8x-pose-p6.pt 姿势/关键点检测
YOLOv8-obb yolov8n-obb.pt yolov8s-obb.pt yolov8m-obb.pt yolov8l-obb.pt yolov8x-obb.pt 定向检测
YOLOv8-cls yolov8n-cls.pt yolov8s-cls.pt yolov8m-cls.pt yolov8l-cls.pt yolov8x-cls.pt 分类

这张表提供了 YOLOv8 模型变体的概述,突出它们在特定任务中的适用性以及它们与多种操作模式(如推断、验证、训练和导出)的兼容性。展示了 YOLOv8 系列的多功能性和稳健性,使其适用于计算机视觉中的多种应用。

性能指标

性能

请参阅检测文档,了解在这些模型上使用的 CO​CO 训练示例,其中包括 80 个预训练类别。

| 模型 | 尺寸 ^((像素)) | mAP^(val 50-95) | 速度 ^(CPU ONNX

(ms)) | 速度 ^(A100 TensorRT

(ms)) | 参数 ^((M)) | FLOPs ^((B)) |

--- --- --- --- --- --- ---
YOLOv8n 640 37.3 80.4 0.99 3.2 8.7
YOLOv8s 640 44.9 128.4 1.20 11.2 28.6
YOLOv8m 640 50.2 234.7 1.83 25.9 78.9
YOLOv8l 640 52.9 375.2 2.39 43.7 165.2
YOLOv8x 640 53.9 479.1 3.53 68.2 257.8

请参阅检测文档,了解在这些模型上使用的 Open Image V7 训练示例,其中包括 600 个预训练类别。

| 模型 | 尺寸 ^((像素)) | mAP^(val 50-95) | 速度 ^(CPU ONNX

(ms)) | 速度 ^(A100 TensorRT

(ms)) | 参数 ^((M)) | FLOPs ^((B)) |

--- --- --- --- --- --- ---
YOLOv8n 640 18.4 142.4 1.21 3.5 10.5
YOLOv8s 640 27.7 183.1 1.40 11.4 29.7
YOLOv8m 640 33.6 408.5 2.26 26.2 80.6
YOLOv8l 640 34.9 596.9 2.43 44.1 167.4
YOLOv8x 640 36.3 860.6 3.56 68.7 260.6

请参阅分割文档,了解在这些模型上使用的 CO​CO 训练示例,其中包括 80 个预训练类别。

| 模型 | 尺寸 ^((像素)) | mAP^(box 50-95) | mAP^(mask 50-95) | 速度 ^(CPU ONNX

(ms)) | 速度 ^(A100 TensorRT

(ms)) | 参数 ^((M)) | FLOPs ^((B)) |

--- --- --- --- --- --- --- ---
YOLOv8n-seg 640 36.7 30.5 96.1 1.21 3.4 12.6
YOLOv8s-seg 640 44.6 36.8 155.7 1.47 11.8 42.6
YOLOv8m-seg 640 49.9 40.8 317.0 2.18 27.3 110.2
YOLOv8l-seg 640 52.3 42.6 572.4 2.79 46.0 220.5
YOLOv8x-seg 640 53.4 43.4 712.1 4.02 71.8 344.1

查看分类文档,了解这些在 ImageNet 上训练的模型的使用示例,其中包括 1000 个预训练类别。

| 模型 | 尺寸 ^((像素)) | 准确率 ^(top1) | 准确率 ^(top5) | Speed ^(CPU ONNX

(ms)) | Speed ^(A100 TensorRT

(ms)) | params ^((M)) | FLOPs ^((B) at 640) |

--- --- --- --- --- --- --- ---
YOLOv8n-cls 224 69.0 88.3 12.9 0.31 2.7 4.3
YOLOv8s-cls 224 73.8 91.7 23.4 0.35 6.4 13.5
YOLOv8m-cls 224 76.8 93.5 85.4 0.62 17.0 42.7
YOLOv8l-cls 224 76.8 93.5 163.0 0.87 37.5 99.7
YOLOv8x-cls 224 79.0 94.6 232.0 1.01 57.4 154.8

查看姿势估计文档,了解这些在 COCO 上训练的模型的使用示例,其中包括一个预训练类别,'person'。

| 模型 | 尺寸 ^((像素)) | mAP^(姿势 50-95) | mAP^(姿势 50) | Speed ^(CPU ONNX

(ms)) | Speed ^(A100 TensorRT

(ms)) | params ^((M)) | FLOPs ^((B)) |

--- --- --- --- --- --- --- ---
YOLOv8n-pose 640 50.4 80.1 131.8 1.18 3.3 9.2
YOLOv8s-pose 640 60.0 86.2 233.2 1.42 11.6 30.2
YOLOv8m-pose 640 65.0 88.8 456.3 2.00 26.4 81.0
YOLOv8l-pose 640 67.6 90.0 784.5 2.59 44.4 168.6
YOLOv8x-pose 640 69.2 90.2 1607.1 3.73 69.4 263.2
YOLOv8x-pose-p6 1280 71.6 91.2 4088.7 10.04 99.1 1066.4

查看定向检测文档,了解这些在 DOTAv1 上训练的模型的使用示例,其中包括 15 个预训练类别。

| 模型 | 尺寸 ^((像素)) | mAP^(测试 50) | Speed ^(CPU ONNX

(ms)) | Speed ^(A100 TensorRT

(ms)) | params ^((M)) | FLOPs ^((B)) |

--- --- --- --- --- --- ---
YOLOv8n-obb 1024 78.0 204.77 3.57 3.1 23.3
YOLOv8s-obb 1024 79.5 424.88 4.07 11.4 76.3
YOLOv8m-obb 1024 80.5 763.48 7.61 26.4 208.6
YOLOv8l-obb 1024 80.7 1278.42 11.83 44.5 433.8
YOLOv8x-obb 1024 81.36 1759.10 13.23 69.5 676.7

使用示例

此示例提供了简单的 YOLOv8 训练和推理示例。有关这些以及其他模式的完整文档,请参阅预测,训练,验证和导出文档页面。

注意下面的示例适用于 YOLOv8 检测模型用于目标检测。有关其他支持的任务,请参阅 Segment,Classify,OBB 文档和 Pose 文档。

示例

可以将 PyTorch 预训练的*.pt模型以及配置*.yaml文件传递给YOLO()类,以在 Python 中创建模型实例:

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.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 YOLOv8n model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 

CLI 命令可直接运行模型:

# Load a COCO-pretrained YOLOv8n model and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=yolov8n.pt  data=coco8.yaml  epochs=100  imgsz=640

# Load a COCO-pretrained YOLOv8n model and run inference on the 'bus.jpg' image
yolo  predict  model=yolov8n.pt  source=path/to/bus.jpg 

引用和致谢

如果您在工作中使用 YOLOv8 模型或此存储库中的任何其他软件,请使用以下格式进行引用:

@software{yolov8_ultralytics,
  author  =  {Glenn Jocher and Ayush Chaurasia and Jing Qiu},
  title  =  {Ultralytics YOLOv8},
  version  =  {8.0.0},
  year  =  {2023},
  url  =  {https://github.com/ultralytics/ultralytics},
  orcid  =  {0000-0001-5950-6979, 0000-0002-7603-6750, 0000-0003-3783-7069},
  license  =  {AGPL-3.0}
} 

请注意 DOI 正在等待,一旦可用将添加到引用中。YOLOv8 模型根据AGPL-3.0企业许可证提供。

常见问题解答

YOLOv8 是什么,与之前的 YOLO 版本有何不同?

YOLOv8 是 Ultralytics YOLO 系列的最新版本,旨在通过先进的功能提高实时目标检测性能。与早期版本不同,YOLOv8 包含无锚分离的 Ultralytics 头部,最先进的主干和颈部架构,并提供了优化的准确度-速度权衡,使其成为多种应用理想选择。有关详细信息,请查看概述和关键特性部分。

如何在不同的计算机视觉任务中使用 YOLOv8?

YOLOv8 支持广泛的计算机视觉任务,包括目标检测,实例分割,姿态/关键点检测,定向物体检测和分类。每个模型变体都针对其特定任务进行了优化,并与各种操作模式(如推理,验证,训练和导出)兼容。有关更多信息,请参阅支持的任务和模式部分。

YOLOv8 模型的性能指标是什么?

YOLOv8 模型在各种基准数据集上实现了最先进的性能。例如,YOLOv8n 模型在 COCO 数据集上达到了 37.3 的 mAP(平均精度),在 A100 TensorRT 上的速度为 0.99 毫秒。您可以在性能指标部分找到每个模型变体在不同任务和数据集上的详细性能指标。

如何训练 YOLOv8 模型?

使用 Python 或 CLI 可以训练 YOLOv8 模型。以下是使用 COCO 预训练的 YOLOv8 模型在 COCO8 数据集上进行 100 个 epoch 训练的示例:

示例

from ultralytics import YOLO

# Load a COCO-pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640) 
yolo  train  model=yolov8n.pt  data=coco8.yaml  epochs=100  imgsz=640 

欲了解更多详细信息,请访问培训文档。

我可以对 YOLOv8 模型进行性能基准测试吗?

是的,YOLOv8 模型可以根据速度和准确性在各种导出格式中进行性能基准测试。您可以使用 PyTorch、ONNX、TensorRT 等进行基准测试。以下是使用 Python 和 CLI 进行基准测试的示例命令:

示例

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0) 
yolo  benchmark  model=yolov8n.pt  data='coco8.yaml'  imgsz=640  half=False  device=0 

如需更多信息,请查看性能指标部分。

YOLOv9:目标检测技术的飞跃

原文:docs.ultralytics.com/models/yolov9/

YOLOv9 标志着实时目标检测的重大进展,引入了诸如可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)等突破性技术。该模型在效率、准确性和适应性方面表现出显著的改进,在 MS COCO 数据集上设定了新的基准。虽然 YOLOv9 项目由一个独立的开源团队开发,但它建立在Ultralytics提供的强大代码库 YOLOv5 之上,展示了 AI 研究社区的合作精神。

www.youtube.com/embed/ZF7EAodHn1U

观看: 使用 Ultralytics 进行 YOLOv9 自定义数据训练 | 工业包数据集

YOLOv9 性能比较

YOLOv9 简介

在追求最佳实时目标检测的过程中,YOLOv9 凭借其创新的方法在克服深度神经网络固有的信息损失挑战方面脱颖而出。通过整合PGI和多功能的GELAN架构,YOLOv9 不仅增强了模型的学习能力,还确保在检测过程中保留关键信息,从而实现卓越的准确性和性能。

YOLOv9 的核心创新

YOLOv9 的进步深深植根于解决深度神经网络中信息损失所带来的挑战。信息瓶颈原理和可逆函数的创新使用是其设计的核心,确保 YOLOv9 保持高效率和准确性。

信息瓶颈原理

信息瓶颈原理揭示了深度学习中的一个基本挑战:随着数据通过网络的连续层,信息损失的潜力增加。这个现象在数学上表示为:

I(X, X) >= I(X, f_theta(X)) >= I(X, g_phi(f_theta(X))) 

其中I表示互信息,fg分别表示具有参数thetaphi的变换函数。YOLOv9 通过实施可编程梯度信息(PGI)来应对这一挑战,帮助在网络深度中保留重要数据,确保更可靠的梯度生成,从而实现更好的模型收敛和性能。

可逆函数

可逆函数的概念是 YOLOv9 设计的另一个基石。如果一个函数可以在不损失任何信息的情况下被反转,则该函数被视为可逆的,如下所示:

X = v_zeta(r_psi(X)) 

使用psizeta作为可逆函数及其逆函数的参数。这一特性对深度学习架构至关重要,因为它允许网络保持完整的信息流,从而实现对模型参数更精确的更新。YOLOv9 在其架构中引入可逆函数,以减少信息降解的风险,特别是在深层中,确保保留用于目标检测任务的关键数据。

对轻量级模型的影响

解决信息丢失问题对于轻量级模型尤为重要,这些模型通常参数较少,在前向传播过程中容易丢失重要信息。YOLOv9 的架构通过使用 PGI 和可逆函数,确保即使是精简的模型,也能保留和有效利用用于准确目标检测所需的关键信息。

可编程梯度信息(PGI)

PGI 是 YOLOv9 引入的一种新概念,旨在解决信息瓶颈问题,确保在深层网络中保留必要的数据。这使得可生成可靠的梯度,促进准确的模型更新,提高整体检测性能。

广义有效层聚合网络(GELAN)

GELAN 代表了战略性的架构进步,使 YOLOv9 能够实现更高的参数利用率和计算效率。其设计允许灵活集成各种计算模块,使得 YOLOv9 在不牺牲速度或准确性的情况下,适应广泛的应用场景。

YOLOv9 架构比较

YOLOv9 基准测试

使用Ultralytics对 YOLOv9 进行基准测试,涉及评估您训练和验证的模型在实际场景中的表现。该过程包括:

  • 性能评估: 评估模型的速度和准确性。

  • 导出格式: 在不同的导出格式下测试模型,以确保其符合必要的标准并在各种环境中表现良好。

  • 框架支持: 在 Ultralytics YOLOv8 中提供全面的框架,以促进这些评估并确保一致可靠的结果。

通过基准测试,您可以确保您的模型不仅在控制测试环境中表现良好,而且在实际的现实应用中保持高性能。

www.youtube.com/embed/ziJR01lKnio

观看: 如何使用 Ultralytics Python 包对 YOLOv9 模型进行基准测试

在 MS COCO 数据集上的性能

YOLOv9 在 COCO 数据集上的表现彰显了其在实时目标检测中的显著进展,为各种模型尺寸设定了新的基准。表格 1 展示了最先进实时目标检测器的全面比较,突显了 YOLOv9 在效率和准确性方面的优势。

表格 1. 最先进实时目标检测器比较

性能

模型 尺寸 ^((像素)) mAP^(验证集 50-95) mAP^(验证集 50) 参数 ^((百万)) FLOPs ^((十亿))
YOLOv9t 640 38.3 53.1 2.0 7.7
YOLOv9s 640 46.8 63.4 7.2 26.7
YOLOv9m 640 51.4 68.1 20.1 76.8
YOLOv9c 640 53.0 70.2 25.5 102.8
YOLOv9e 640 55.6 72.8 58.1 192.5
模型 尺寸 ^((像素)) mAP^(框 50-95) mAP^(掩码 50-95) 参数 ^((百万)) FLOPs ^((十亿))
--- --- --- --- --- ---
YOLOv9c-seg 640 52.4 42.2 27.9 159.4
YOLOv9e-seg 640 55.1 44.3 60.5 248.4

YOLOv9 的各种变体,从微小的t型号到庞大的e型号,不仅在精度(mAP 指标)上有所提升,而且在参数和计算需求(FLOPs)上也显著改进。本表突显了 YOLOv9 在保持或减少计算开销的同时,提供高精度的能力。

YOLOv9 相较之下展示了显著的提升:

  • 轻量级模型: YOLOv9s 在参数效率和计算负荷上超过了 YOLO MS-S,同时在 AP 上提升了 0.4∼0.6%。

  • 中型到大型模型: YOLOv9m 和 YOLOv9e 在平衡模型复杂性和检测性能方面显示出显著进展,大幅减少了参数和计算量,同时提升了准确性。

特别是 YOLOv9c 模型,突显了架构优化的有效性。它的参数数量和计算需求比 YOLOv7 AF 少了 42%,却达到了可比较的准确性,显示了 YOLOv9 在效率上的显著改进。此外,YOLOv9e 模型为大型模型设定了新标准,比 YOLOv8x 少了 15%的参数和 25%的计算需求,并在 AP 上增加了 1.7%。

这些结果展示了 YOLOv9 在模型设计上的战略性进展,强调了其在不损害实时目标检测任务所必需的精度的情况下提高效率。该模型不仅推动了性能指标的边界,还强调了计算效率的重要性,使其成为计算机视觉领域的重要发展。

结论

YOLOv9 代表了实时目标检测中的重要发展,显著改善了效率、准确性和适应性。通过像 PGI 和 GELAN 这样的创新解决方案,解决了关键挑战,YOLOv9 为未来研究和应用设立了新的标准。随着人工智能社区的不断发展,YOLOv9 证明了协作和创新在推动技术进步中的力量。

使用示例

此示例提供了简单的 YOLOv9 训练和推断示例。有关这些以及其他模式的完整文档,请参阅预测、训练、验证和导出文档页面。

示例

可以将 PyTorch 预训练的 *.pt 模型以及配置 *.yaml 文件传递给 YOLO() 类以在 Python 中创建模型实例:

from ultralytics import YOLO

# Build a YOLOv9c model from scratch
model = YOLO("yolov9c.yaml")

# Build a YOLOv9c model from pretrained weight
model = YOLO("yolov9c.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 YOLOv9c model on the 'bus.jpg' image
results = model("path/to/bus.jpg") 

可以使用 CLI 命令直接运行模型:

# Build a YOLOv9c model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=yolov9c.yaml  data=coco8.yaml  epochs=100  imgsz=640

# Build a YOLOv9c model from scratch and run inference on the 'bus.jpg' image
yolo  predict  model=yolov9c.yaml  source=path/to/bus.jpg 

支持的任务和模式

YOLOv9 系列提供了一系列模型,每个模型都针对高性能目标检测进行了优化。这些模型满足不同的计算需求和准确性要求,使它们在各种应用中都非常灵活。

模型 文件名 任务 推断 验证 训练 导出
YOLOv9 yolov9t yolov9s yolov9m yolov9c.pt yolov9e.pt 目标检测
YOLOv9-seg yolov9c-seg.pt yolov9e-seg.pt 实例分割

此表格详细介绍了 YOLOv9 模型变体的概述,突出了它们在目标检测任务中的能力以及它们与推断、验证、训练和导出等各种操作模式的兼容性。这种全面的支持确保用户可以充分利用 YOLOv9 模型在广泛的目标检测场景中的能力。

注意

训练 YOLOv9 模型将需要比相同尺寸的 YOLOv8 模型更多的资源和时间。

引用和致谢

我们要感谢 YOLOv9 的作者在实时目标检测领域做出的重要贡献:

@article{wang2024yolov9,
  title={{YOLOv9}: Learning What You Want to Learn Using Programmable Gradient Information},
  author={Wang, Chien-Yao  and Liao, Hong-Yuan Mark},
  booktitle={arXiv preprint arXiv:2402.13616},
  year={2024}
} 

原始的 YOLOv9 论文可以在 arXiv 上找到。作者已经公开了他们的工作,并且代码库可以在 GitHub 上访问。我们感谢他们在推动领域进展并使他们的工作对更广泛的社区可用所做的努力。

常见问题

YOLOv9 为实时目标检测引入了哪些创新?

YOLOv9 引入了突破性技术,如可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)。这些创新解决了深度神经网络中的信息丢失挑战,确保高效率、准确性和适应性。PGI 在网络层之间保留了关键数据,而 GELAN 优化了参数利用率和计算效率。了解更多关于 YOLOv9 在 MS COCO 数据集上设立新基准的核心创新。

YOLOv9 在 MS COCO 数据集上与其他模型相比的表现如何?

YOLOv9 通过实现更高的准确性和效率,优于最先进的实时物体检测器。在 COCO 数据集上,YOLOv9 模型展示了在各种尺寸上优越的 mAP 分数,同时保持或减少计算开销。例如,YOLOv9c 相比 YOLOv7 AF,参数数量减少了 42%,计算需求减少了 21%,但达到了可比较的精度。探索性能比较以获取详细指标。

如何使用 Python 和 CLI 训练 YOLOv9 模型?

您可以使用 Python 和 CLI 命令来训练 YOLOv9 模型。对于 Python,可以使用YOLO类实例化模型并调用train方法:

from ultralytics import YOLO

# Build a YOLOv9c model from pretrained weights and train
model = YOLO("yolov9c.pt")
results = model.train(data="coco8.yaml", epochs=100, imgsz=640) 

对于 CLI 训练,执行:

yolo  train  model=yolov9c.yaml  data=coco8.yaml  epochs=100  imgsz=640 

了解有关训练和推断用例的更多使用示例。

使用 Ultralytics YOLOv9 进行轻量级模型有哪些优势?

YOLOv9 旨在减少信息丢失,这对于经常容易丢失重要信息的轻量级模型尤为重要。通过集成可编程梯度信息(PGI)和可逆函数,YOLOv9 确保重要数据的保留,提升了模型的准确性和效率。这使得它非常适合需要高性能紧凑模型的应用场景。有关更多详细信息,请探索 YOLOv9 对轻量级模型影响的部分。

YOLOv9 支持哪些任务和模式?

YOLOv9 支持多种任务,包括物体检测和实例分割。它与多种操作模式兼容,例如推断、验证、训练和导出。这种多功能性使 YOLOv9 适用于多样的实时计算机视觉应用。请参考支持的任务和模式部分获取更多信息。

YOLOv10:实时端到端目标检测

原文:docs.ultralytics.com/models/yolov10/

YOLOv10,由清华大学的研究人员开发,构建在UltralyticsPython 包之上,引入了一种新的实时目标检测方法,解决了之前 YOLO 版本中存在的后处理和模型架构缺陷。通过消除非最大抑制(NMS)并优化各种模型组件,YOLOv10 在显著减少计算开销的同时实现了最先进的性能。广泛的实验表明,它在多个模型尺度上具有优越的精度-延迟权衡。

YOLOv10 一致的双重分配,实现无 NMS 训练

www.youtube.com/embed/_gRqR-miFPE

观看: 如何使用 Ultralytics | Retail 数据集在 SKU-110k 数据集上训练 YOLOv10

概述

实时目标检测旨在准确预测图像中的对象类别和位置,并具有低延迟。由于在性能和效率之间的平衡,YOLO 系列一直处于研究前沿。然而,依赖于 NMS 和架构效率低下一直制约着其优化性能。YOLOv10 通过引入一致的双重分配实现了无 NMS 训练,并采用整体的效率-精度驱动的模型设计策略来解决这些问题。

架构

YOLOv10 的架构建立在前几个 YOLO 模型的优势基础上,同时引入了几个关键的创新。模型架构包括以下组件:

  1. Backbone: 负责特征提取,YOLOv10 中的骨干网络采用增强版的 CSPNet(跨阶段部分网络),以改善梯度流动并减少计算冗余。

  2. Neck: 颈部设计用于聚合不同尺度的特征并将其传递给头部。它包括 PAN(路径聚合网络)层,用于有效的多尺度特征融合。

  3. 一对多头部: 在训练期间为每个对象生成多个预测,提供丰富的监督信号,提高学习精度。

  4. 一对一头部: 在推断期间为每个对象生成单个最佳预测,消除了 NMS 的需求,从而降低延迟并提高效率。

关键特性

  1. 无 NMS 训练: 利用一致的双重分配来消除 NMS 的需求,降低推断延迟。

  2. 整体模型设计: 综合优化各种组件,包括轻量级分类头部、空间通道分离下采样和排名引导的块设计,从效率和精度两个角度考虑。

  3. 增强模型能力: 结合了大卷积核和部分自注意模块,提高性能而不增加显著的计算成本。

模型变体

YOLOv10 提供多种模型规模,以满足不同的应用需求:

  • YOLOv10-N: 面向极度资源受限环境的纳米版本。

  • YOLOv10-S: 平衡速度和准确性的小版本。

  • YOLOv10-M: 通用中型版本。

  • YOLOv10-B: 增加宽度以提高准确性的平衡版本。

  • YOLOv10-L: 高精度大版本,但计算资源需求较高。

  • YOLOv10-X: 极大版本,追求最大准确性和性能。

性能

YOLOv10 在准确性和效率方面优于以往的 YOLO 版本和其他最先进模型。例如,YOLOv10-S 比 RT-DETR-R18 在 COCO 数据集上速度快 1.8 倍,且具有类似的 AP,而 YOLOv10-B 的延迟比 YOLOv9-C 少 46%,参数少 25%且性能相同。

模型 输入尺寸 AP^(val) FLOPs (G) 延迟 (ms)
YOLOv10-N 640 38.5 6.7 1.84
YOLOv10-S 640 46.3 21.6 2.49
YOLOv10-M 640 51.1 59.1 4.74
YOLOv10-B 640 52.5 92.0 5.74
YOLOv10-L 640 53.2 120.3 7.28
YOLOv10-X 640 54.4 160.4 10.70

使用 TensorRT FP16 在 T4 GPU 上测量延迟。

方法论

一致的双赋值,无 NMS 训练

YOLOv10 在训练期间采用双标签赋值,结合一对多和一对一策略,确保丰富的监督并实现高效的端到端部署。一致的匹配度量使得两种策略之间的监督保持一致,在推理过程中增强预测质量。

全面的效率-准确度驱动模型设计

效率增强

  1. 轻量级分类头: 使用深度可分离卷积减少分类头的计算开销。

  2. 空间-通道分离下采样: 分离空间减少和通道调制,以最小化信息丢失和计算成本。

  3. 排名导向的块设计: 根据内在阶段冗余调整块设计,确保最佳参数利用率。

准确度增强

  1. 大卷积核: 扩大感受野以增强特征提取能力。

  2. 部分自注意力(PSA): 结合自注意力模块,提高全局表示学习,且开销最小化。

实验与结果

YOLOv10 已在像 COCO 这样的标准基准测试中进行了广泛测试,展示了在不同变体中的卓越性能,显示出与之前版本和其他当代检测器相比的潜在改进。

比较

YOLOv10 与 SOTA 目标检测器的比较

与其他最先进的检测器相比:

  • YOLOv10-S / X 的速度比 RT-DETR-R18 / R101 快 1.8× / 1.3×,精度相似

  • YOLOv10-B 的参数比 YOLOv9-C 少 25%,延迟比 YOLOv9-C 低 46%,精度相同

  • YOLOv10-L / X 比 YOLOv8-L / X 表现出 0.3 AP / 0.5 AP 更好,并且参数少 1.8× / 2.3×

这里是 YOLOv10 各个变体与其他最先进模型的详细比较:

模型 参数 ^((M)) FLOPs ^((G)) mAP^(val 50-95) 延迟 ^((ms)) 前向延迟 ^((ms))
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
金牌-YOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8-N 3.2 8.7 37.3 6.16 1.77
YOLOv10-N 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
金牌-YOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8-S 11.2 28.6 44.9 7.07 2.33
YOLOv10-S 7.2 21.6 46.8 2.49 2.39
RT-DETR-R18 20.0 60.0 46.5 4.58 4.49
YOLOv6-3.0-M 34.9 85.8 49.1 5.63 4.56
金牌-YOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8-M 25.9 78.9 50.6 9.50 5.09
YOLOv10-M 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
金牌-YOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8-L 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10-L 24.4 120.3 53.4 7.28 7.21
YOLOv8-X 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10-X 29.5 160.4 54.4 10.70 10.60

使用示例

用 YOLOv10 预测新图像:

例子

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show() 
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo  detect  predict  model=yolov10n.pt  source=path/to/bus.jpg 

用于在自定义数据集上训练 YOLOv10:

例子

from ultralytics import YOLO

# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640) 
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo  train  model=yolov10n.yaml  data=coco8.yaml  epochs=100  imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo  predict  model=yolov10n.yaml  source=path/to/bus.jpg 

支持的任务和模式

YOLOv10 模型系列提供一系列优化高性能目标检测的模型,每个模型都针对不同的计算需求和精度要求进行了优化,因此在各种应用中都表现出色。

Model Filenames Tasks Inference Validation Training Export
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt 目标检测

导出 YOLOv10

由于 YOLOv10 引入了新的操作,目前并非所有由 Ultralytics 提供的导出格式都得到支持。以下表格概述了使用 Ultralytics 进行 YOLOv10 成功转换的格式。如果您能够提供贡献更改以增加 YOLOv10 其他导出格式的支持,请随时提交拉取请求。

导出格式 支持情况
TorchScript
ONNX
OpenVINO
TensorRT
CoreML
TF SavedModel
TF GraphDef
TF Lite
TF Edge TPU
TF.js
PaddlePaddle
NCNN

结论

YOLOv10 通过解决以往版本的不足之处并采用创新设计策略,为实时目标检测设定了新的标准。其在低计算成本下能够提供高精度,使其成为广泛实际应用的理想选择。

引文和致谢

我们要感谢清华大学的 YOLOv10 作者们,他们在Ultralytics框架中进行了广泛的研究并作出了重大贡献:

@article{THU-MIGyolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Ao Wang, Hui Chen, Lihao Liu, et al.},
  journal={arXiv preprint arXiv:2405.14458},
  year={2024},
  institution={Tsinghua University},
  license  =  {AGPL-3.0}
} 

有关详细的实施、架构创新和实验结果,请参阅清华大学团队的 YOLOv10 研究论文GitHub 存储库

常见问题

YOLOv10 是什么,它与以前的 YOLO 版本有何不同?

YOLOv10 是由清华大学研究人员开发的,为实时目标检测引入了几项关键创新。它通过在训练过程中采用一致的双重分配和优化模型组件,消除了非极大值抑制(NMS)的需求,从而在性能上表现优异且降低了计算开销。有关其架构和关键特性的更多详细信息,请查看 YOLOv10 概述部分。

如何开始使用 YOLOv10 进行推理?

为了便于推理,您可以使用 Ultralytics 的 YOLO Python 库或命令行界面(CLI)。以下是使用 YOLOv10 预测新图像的示例:

示例

from ultralytics import YOLO

# Load the pre-trained YOLOv10-N model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show() 
yolo  detect  predict  model=yolov10n.pt  source=path/to/image.jpg 

欲了解更多使用示例,请访问我们的使用示例部分。

YOLOv10 提供了哪些模型变体,它们各自的用途是什么?

YOLOv10 提供了多个模型变体以满足不同的用途:

  • YOLOv10-N: 适用于资源极为有限的环境

  • YOLOv10-S: 平衡速度和精度

  • YOLOv10-M: 通用用途

  • YOLOv10-B: 增加宽度以提高精度

  • YOLOv10-L: 在计算资源消耗的代价下提供高精度

  • YOLOv10-X: 最高的精度和性能

每个变体都针对不同的计算需求和准确性要求进行设计,使其在各种应用中都具有多功能性。有关更多信息,请查看模型变体部分。

YOLOv10 中的无 NMS 方法如何提高性能?

YOLOv10 通过采用一致的双重分配进行训练,消除了推理过程中对非最大抑制(NMS)的需求。这种方法减少了推理延迟并提高了预测效率。该架构还包括一个一对一的推理头,确保每个对象获得一个最佳预测。有关详细说明,请参见无 NMS 训练的一致双重分配部分。

我在哪里可以找到 YOLOv10 模型的导出选项?

YOLOv10 支持多种导出格式,包括 TorchScript、ONNX、OpenVINO 和 TensorRT。然而,由于其新操作,并非所有 Ultralytics 提供的导出格式目前都支持 YOLOv10。有关支持的格式和导出说明的详细信息,请访问导出 YOLOv10 部分。

YOLOv10 模型的性能基准是什么?

YOLOv10 在准确性和效率上都优于之前的 YOLO 版本和其他最先进的模型。例如,YOLOv10-S 的速度比 RT-DETR-R18 快 1.8 倍,而在 COCO 数据集上的 AP 相似。YOLOv10-B 的延迟减少了 46%,参数比 YOLOv9-C 少 25%,而性能相同。详细的基准测试可以在比较部分找到。

Segment Anything 模型(SAM)

原文:docs.ultralytics.com/models/sam/

欢迎来到 Segment Anything 模型(SAM)在图像分割领域的前沿。这一革命性的模型通过引入实时性能的可提示图像分割,改变了游戏规则,树立了领域新标准。

SAM 简介:Segment Anything 模型

Segment Anything 模型(SAM)是一种先进的图像分割模型,支持可提示的分割,为图像分析任务提供了前所未有的灵活性。SAM 是 Segment Anything 项目的核心,该项目引入了一种新的模型、任务和数据集,用于图像分割。

SAM 的先进设计使其能够在没有先验知识的情况下适应新的图像分布和任务,这一特性称为零射击传输。SAM 在广泛的SA-1B 数据集上进行训练,该数据集包含超过 11 百万张精心策划的图像和 10 亿多的蒙版,SAM 展示了令人印象深刻的零射击性能,在许多情况下超越了以往的完全监督结果。

数据集示例图像 SA-1B 示例图像。 数据集图像上叠加了新引入的 SA-1B 数据集的蒙版。SA-1B 包含了 1100 万多样化、高分辨率、有许可和隐私保护的图像以及 11 亿高质量的分割蒙版。这些蒙版由 SAM 完全自动注释,并经过人类评分和大量实验验证,质量和多样性很高。图像按照每个图像平均∼100 个蒙版进行了分组可视化。

Segment Anything 模型(SAM)的关键特性

  • 可提示分割任务: SAM 设计时考虑了可提示的分割任务,允许它从任何给定的提示生成有效的分割蒙版,例如空间或文本线索,用于识别对象。

  • 先进的架构: Segment Anything 模型采用强大的图像编码器、提示编码器和轻量级蒙版解码器。这种独特的架构支持灵活的提示、实时蒙版计算和分割任务中的歧义感知。

  • SA-1B 数据集: 由 Segment Anything 项目引入的 SA-1B 数据集包含超过 10 亿张图像和 1100 万个蒙版。作为迄今为止最大的分割数据集,它为 SAM 提供了一个多样化且大规模的训练数据来源。

  • 零射击性能: SAM 在各种分割任务中展现出卓越的零射击性能,使其成为一款可即插即用的工具,在最小的提示工程需求下,适用于多样的应用场景。

欲深入了解 Segment Anything 模型和 SA-1B 数据集,请访问Segment Anything 网站,并查阅研究论文Segment Anything

可用模型、支持的任务和操作模式

此表格显示了可用模型及其特定的预训练权重,它们支持的任务以及它们与不同操作模式(如推断、验证、训练和导出)的兼容性,由✅ 表示支持的模式和❌ 表示不支持的模式。

Model Type Pre-trained Weights Tasks Supported Inference Validation Training Export
SAM base sam_b.pt 实例分割
SAM large sam_l.pt 实例分割

如何使用 SAM:图像分割中的多功能和强大

Segment Anything 模型可用于多种超出其训练数据范围的下游任务,包括边缘检测、对象提议生成、实例分割和初步文本到遮罩预测。通过提示工程,SAM 可以以零-shot 方式快速适应新任务和数据分布,使其成为您所有图像分割需求的多功能和强大工具。

SAM 预测示例

使用提示分割

使用给定提示分割图像。

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference with bboxes prompt
results = model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Run inference with points prompt
results = model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1]) 

分割所有内容

分割整个图像。

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/image.jpg") 
# Run inference with a SAM model
yolo  predict  model=sam_b.pt  source=path/to/image.jpg 
  • 此处的逻辑是,如果您没有传递任何提示(边界框/点/遮罩),则对整个图像进行分割。

SAMPredictor 示例

通过此方法,您可以一次设置图像,并多次运行提示推断,而无需多次运行图像编码器。

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Set image
predictor.set_image("ultralytics/assets/zidane.jpg")  # set with image file
predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # set with np.ndarray
results = predictor(bboxes=[439, 437, 524, 709])
results = predictor(points=[900, 370], labels=[1])

# Reset image
predictor.reset_image() 

使用附加参数分割所有内容。

from ultralytics.models.sam import Predictor as SAMPredictor

# Create SAMPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="mobile_sam.pt")
predictor = SAMPredictor(overrides=overrides)

# Segment with additional args
results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64) 

注意

所有上述示例中返回的results都是 Results 对象,可以轻松访问预测的遮罩和源图像。

  • 有关Segment everything的更多附加参数,请参阅Predictor/generate 参考资料。

SAM 与 YOLOv8 的比较

在这里,我们将 Meta 的最小 SAM 模型 SAM-b 与 Ultralytics 的最小分割模型 YOLOv8n-seg 进行比较:

Model Size Parameters Speed (CPU)
Meta's SAM-b 358 MB 94.7 M 51096 ms/im
MobileSAM 40.7 MB 10.1 M 46122 ms/im
FastSAM-s with YOLOv8 backbone 23.7 MB 11.8 M 115 ms/im
Ultralytics YOLOv8n-seg 6.7 MB (53.4 倍更小) 3.4 M (27.9 倍更少) 59 ms/im (866 倍更快)

此比较显示了不同模型大小和速度之间的数量级差异。虽然 SAM 提供了自动分割的独特能力,但它并非 YOLOv8 分割模型的直接竞争对手,后者更小、更快且更高效。

在 2023 年的 Apple M2 MacBook 上运行的测试,配备 16GB RAM。要重现此测试:

示例

from ultralytics import SAM, YOLO, FastSAM

# Profile SAM-b
model = SAM("sam_b.pt")
model.info()
model("ultralytics/assets")

# Profile MobileSAM
model = SAM("mobile_sam.pt")
model.info()
model("ultralytics/assets")

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model("ultralytics/assets")

# Profile YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model("ultralytics/assets") 

自动标注:快速路径到分割数据集

自动注释是 SAM 的一个关键特性,允许用户使用预训练的检测模型生成分割数据集。这一功能使得能够快速而准确地对大量图像进行注释,避免了耗时的手动标记过程。

使用检测模型生成您的分割数据集

要使用 Ultralytics 框架自动注释您的数据集,请按照下面的方式使用auto_annotate函数:

示例

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt") 
参数 类型 描述 默认值
data str 包含待注释图像的文件夹路径。
det_model str,可选项 预训练的 YOLO 检测模型。默认为'yolov8x.pt'。 'yolov8x.pt'
sam_model str,可选项 预训练的 SAM 分割模型。默认为'sam_b.pt'。 'sam_b.pt'
device str,可选项 在其上运行模型的设备。默认为空字符串(CPU 或 GPU,如果可用)。
output_dir strNone,可选项 保存带注释结果的目录。默认为与'data'文件夹相同目录下的'labels'文件夹。 None

auto_annotate函数接受您的图像路径,可选参数指定预训练检测和 SAM 分割模型,运行模型的设备以及保存带注释结果的输出目录。

使用预训练模型进行自动注释,可以大大减少创建高质量分割数据集所需的时间和精力。这一功能对于处理大型图像集合的研究人员和开发人员尤其有益,因为它使他们能够集中精力于模型的开发和评估,而不是手动注释。

引用和致谢

如果您在研究或开发工作中发现 SAM 有用,请考虑引用我们的论文:

@misc{kirillov2023segment,
  title={Segment Anything},
  author={Alexander Kirillov and Eric Mintun and Nikhila Ravi and Hanzi Mao and Chloe Rolland and Laura Gustafson and Tete Xiao and Spencer Whitehead and Alexander C. Berg and Wan-Yen Lo and Piotr Dollár and Ross Girshick},
  year={2023},
  eprint={2304.02643},
  archivePrefix={arXiv},
  primaryClass={cs.CV}
} 

我们要感谢 Meta AI 为计算机视觉社区创建和维护这一宝贵资源。

常见问题解答

什么是 Ultralytics 的段落任意模型(SAM)?

Ultralytics 的段落任意模型(SAM)是一种革命性的图像分割模型,专为可提示分割任务设计。它利用先进的架构,包括图像和提示编码器以及轻量级掩模解码器,从诸如空间或文本提示等各种提示生成高质量的分割掩模。在广泛的SA-1B 数据集上进行训练,SAM 在零-shot 性能方面表现出色,能够适应新的图像分布和任务,无需先验知识。在这里了解更多信息。

如何使用段落任意模型(SAM)进行图像分割?

你可以通过使用段落任意模型(SAM)进行图像分割,通过运行推理,使用各种提示,如边界框或点。以下是一个使用 Python 的示例:

from ultralytics import SAM

# Load a model
model = SAM("sam_b.pt")

# Segment with bounding box prompt
model("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])

# Segment with points prompt
model("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1]) 

或者,您可以在命令行界面(CLI)中使用 SAM 进行推理:

yolo  predict  model=sam_b.pt  source=path/to/image.jpg 

获取更详细的使用说明,请访问分割部分。

SAM 和 YOLOv8 在性能上有什么区别?

与 YOLOv8 相比,SAM 模型如 SAM-b 和 FastSAM-s 更大且速度较慢,但提供了独特的自动分割能力。例如,Ultralytics 的 YOLOv8n-seg 比 SAM-b 小 53.4 倍,速度快 866 倍。然而,SAM 的零样本表现使其在多样化、未训练的任务中非常灵活和高效。了解 SAM 与 YOLOv8 的性能比较更多信息,请访问这里。

如何使用 SAM 自动注释我的数据集?

Ultralytics 的 SAM 提供了一个自动注释功能,允许使用预训练检测模型生成分割数据集。以下是 Python 的一个示例:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam_b.pt") 

此功能接受图像路径和预训练检测以及 SAM 分割模型的可选参数,以及设备和输出目录的规格说明。有关完整指南,请参阅自动注释。

哪些数据集用于训练 Segment Anything Model(SAM)?

SAM 是基于广泛的SA-1B 数据集进行训练的,该数据集包含超过 11 百万张图像中的 10 亿多个掩码。SA-1B 是迄今为止最大的分割数据集,提供高质量且多样化的训练数据,确保在各种分割任务中具有令人印象深刻的零样本性能。有关更多详细信息,请访问数据集部分。

SAM 2:Segment Anything Model 2

原文:docs.ultralytics.com/models/sam-2/

SAM 2,Meta 的 Segment Anything Model (SAM) 的后继者,是一个为图像和视频中全面对象分割而设计的前沿工具。通过支持实时处理和零射击泛化的统一、可提示的模型架构,它在处理复杂视觉数据方面表现出色。

SAM 2 示例结果

关键特性

统一模型架构

SAM 2 将图像和视频分割的能力结合到单一模型中。这种统一简化了部署,并允许在不同媒体类型上保持一致的性能。它利用灵活的基于提示的接口,使用户能够通过各种提示类型(如点、边界框或掩码)指定感兴趣的对象。

实时性能

该模型实现了实时推断速度,每秒处理约 44 帧。这使得 SAM 2 适用于需要即时反馈的应用,如视频编辑和增强现实。

零射击泛化

SAM 2 能够分割它从未遇到过的对象,展示出强大的零射击泛化能力。这在多样化或不断变化的视觉领域特别有用,预定义的类别可能无法涵盖所有可能的对象。

交互式完善

用户可以通过提供额外提示来逐步完善分割结果,从而精确控制输出。这种互动性对于在视频注释或医学成像等应用中微调结果至关重要。

高级视觉挑战处理

SAM 2 包括管理常见视频分割挑战的机制,如对象遮挡和重新出现。它使用先进的内存机制跟踪对象跨帧,确保即使对象暂时被遮挡或退出再进入场景,也能保持连续性。

欲了解 SAM 2 的架构和能力更深入的理解,请查阅 SAM 2 研究论文

性能和技术细节

SAM 2 在领域中树立了新的标准,在各种指标上优于先前的模型:

指标 SAM 2 先前的 SOTA
交互式视频分割 最佳 -
需要人类交互 少 3 倍 基准
图像分割准确性 提升 SAM
推断速度 快 6 倍 SAM

模型架构

核心组件

  • 图像和视频编码器:利用基于 Transformer 的架构从图像和视频帧中提取高级特征。该组件负责理解每个时间步的视觉内容。

  • 提示编码器:处理用户提供的提示(点、框、掩码)以指导分割任务。这使得 SAM 2 能够适应用户输入并针对场景中特定对象进行目标定位。

  • 存储机制:包括内存编码器、内存存储器和内存注意模块。这些组件共同存储并利用过去帧的信息,使模型能够随时间保持一致的对象跟踪。

  • 掩模解码器:根据编码图像特征和提示生成最终的分割掩模。在视频中,它还使用内存上下文确保跨帧的准确跟踪。

SAM 2 架构图

存储机制和遮挡处理

存储机制使得 SAM 2 能够处理视频数据中的时间依赖性和遮挡。当对象移动和交互时,SAM 2 将它们的特征记录在内存存储器中。当一个对象被遮挡时,模型可以依靠这些记忆来预测它再次出现时的位置和外观。遮挡头特别处理对象不可见的情况,预测对象被遮挡的可能性。

多掩模歧义解析

在存在歧义的情况下(例如重叠对象),SAM 2 可以生成多个掩模预测。这一功能对于准确表达复杂场景至关重要,其中单个掩模可能不足以描述场景的细微差别。

SA-V 数据集

为 SAM 2 的训练而开发的 SA-V 数据集是目前最大和最多样化的视频分割数据集之一。它包括:

  • 51,000+ 视频:来自 47 个国家,提供了广泛的真实场景。

  • 600,000+ 掩模标注:详细的时空掩模标注,称为“掩模片段”,涵盖了整个对象和部分对象。

  • 数据集规模:比之前最大的数据集包含的视频多了 4.5 倍,标注多了 53 倍,提供了前所未有的多样性和复杂性。

基准测试

视频对象分割

SAM 2 在主要视频分割基准测试中展示了优越的性能:

数据集 J&F J F
DAVIS 2017 82.5 79.8 85.2
YouTube-VOS 81.2 78.9 83.5

交互式分割

在交互式分割任务中,SAM 2 表现出显著的效率和准确性:

数据集 NoC@90 AUC
DAVIS Interactive 1.54 0.872

安装

要安装 SAM 2,请使用以下命令。首次使用时,所有 SAM 2 模型将自动下载。

pip  install  ultralytics 

如何使用 SAM 2:在图像和视频分割中的多功能性

下表详细说明了可用的 SAM 2 模型、它们的预训练权重、支持的任务以及与推断、验证、训练和导出等不同操作模式的兼容性。

模型类型 预训练权重 支持的任务 推断 验证 训练 导出
SAM 2 tiny sam2_t.pt 实例分割
SAM 2 小型 sam2_s.pt 实例分割
SAM 2 基础 sam2_b.pt 实例分割
SAM 2 大型 sam2_l.pt 实例分割

SAM 2 预测示例

SAM 2 可在广泛的任务范围内使用,包括实时视频编辑、医学成像和自主系统。其分割静态和动态视觉数据的能力使其成为研究人员和开发人员的多功能工具。

分段提示

分段提示

使用提示来分割图像或视频中的特定对象。

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1]) 

分割所有内容

分割所有内容

分割整个图像或视频内容,无需特定提示。

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/video.mp4") 
# Run inference with a SAM 2 model
yolo  predict  model=sam2_b.pt  source=path/to/video.mp4 
  • 该示例演示了如果不提供提示(边界框/点/掩模),如何使用 SAM 2 分割图像或视频的整个内容。

SAM 与 YOLOv8 的比较

这里我们比较了 Meta 最小的 SAM 模型 SAM-b 和 Ultralytics 最小的分割模型 YOLOv8n-seg:

模型 大小 参数 速度(CPU)
Meta's SAM-b 358 MB 94.7 M 51096 ms/im
MobileSAM 40.7 MB 10.1 M 46122 ms/im
基于 YOLOv8 骨干的 FastSAM-s 23.7 MB 11.8 M 115 ms/im
Ultralytics YOLOv8n-seg 6.7 MB (53.4x 更小) 3.4 M (27.9x 较少) 59 ms/im (866x 更快)

此比较显示了模型大小和速度之间数量级的差异。虽然 SAM 提供了自动分割的独特能力,但它并非 YOLOv8 分割模型的直接竞争对手,后者更小、更快且更高效。

测试在 2023 年配备 16GB RAM 的 Apple M2 MacBook 上运行。要重现此测试:

示例

from ultralytics import SAM, YOLO, FastSAM

# Profile SAM-b
model = SAM("sam_b.pt")
model.info()
model("ultralytics/assets")

# Profile MobileSAM
model = SAM("mobile_sam.pt")
model.info()
model("ultralytics/assets")

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model("ultralytics/assets")

# Profile YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model("ultralytics/assets") 

自动注释:高效数据集创建

自动注释是 SAM 2 的一个强大功能,通过利用预训练模型,使用户能够快速准确地生成分段数据集。这一功能特别适用于创建大规模、高质量的数据集,无需大量手动操作。

如何使用 SAM 2 进行自动注释

若要使用 SAM 2 自动注释您的数据集,请参考此示例:

自动注释示例

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam2_b.pt") 
参数 类型 描述 默认值
data str 包含要注释的图像的文件夹路径。
det_model str, 可选 预训练的 YOLO 检测模型。默认为 'yolov8x.pt'。 'yolov8x.pt'
sam_model str, 可选 预训练的 SAM 2 分割模型。默认为 'sam2_b.pt'。 'sam2_b.pt'
device str, 可选 运行模型的设备。默认为空字符串(CPU 或 GPU,如果可用)。
output_dir str, None, 可选 保存注释结果的目录。默认为与 'data' 目录同级的 'labels' 文件夹。 None

此功能有助于快速创建高质量的分割数据集,非常适合希望加速项目的研究人员和开发者。

限制

尽管其优点,SAM 2 也有一些限制:

  • 跟踪稳定性:在长序列或视角显著变化期间,SAM 2 可能会丢失对象的跟踪。

  • 对象混淆:模型有时会在拥挤场景中混淆看起来相似的对象。

  • 多对象效率:由于缺乏对象间通信,处理多个对象时,分段效率会降低。

  • 细节精度:可能会错过细小的细节,特别是在快速移动对象时。额外的提示可以部分解决这个问题,但不能保证时间上的平滑。

引用和致谢

如果 SAM 2 对你的研究或开发工作至关重要,请引用以下参考文献:

@article{ravi2024sam2,
  title={SAM 2: Segment Anything in Images and Videos},
  author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
  journal={arXiv preprint},
  year={2024}
} 

我们要感谢 Meta AI 为 AI 社区做出的贡献,使用这一开创性的模型和数据集。

常见问题解答

SAM 2 是什么,它如何改进原始的 Segment Anything Model(SAM)?

SAM 2 是 Meta 的 Segment Anything Model(SAM)的继任者,是一种专为图像和视频中全面对象分割而设计的尖端工具。它通过统一的可提示模型架构,在处理复杂视觉数据方面表现出色,支持实时处理和零样本泛化。SAM 2 相比原始 SAM 有多项改进,包括:

  • 统一模型架构:将图像和视频分割能力结合在单一模型中。

  • 实时性能:每秒处理约 44 帧,适用于需要即时反馈的应用程序。

  • 零样本泛化:能够分割它从未遇到过的对象,在各种视觉领域非常有用。

  • 交互式优化:允许用户通过提供额外的提示来迭代地优化分割结果。

  • 高级视觉挑战处理:管理常见的视频分割挑战,如对象遮挡和重新出现。

关于 SAM 2 的架构和能力的更多细节,请查看《SAM 2 研究论文》

如何在实时视频分割中使用 SAM 2?

通过利用其可提示的界面和实时推断能力,SAM 2 可以用于实时视频分割。以下是一个基本示例:

带提示的分段

使用提示来分割图像或视频中的特定对象。

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1]) 

欲了解更详细的使用方法,请参阅如何使用 SAM 2 部分。

用于训练 SAM 2 的数据集是什么,它们如何提升其性能?

SAM 2 是在 SA-V 数据集上训练的,这是目前可用的最大和最多样化的视频分割数据集之一。SA-V 数据集包括:

  • 51,000+ 视频:涵盖了 47 个国家,提供了广泛的真实场景。

  • 超过 600,000 个掩码注释:详细的时空掩码注释,称为“掩码片”,覆盖整个对象和部分。

  • 数据集规模:比之前最大数据集的视频数量多 4.5 倍,注释数量多 53 倍,提供前所未有的多样性和复杂性。

这一广泛的数据集使 SAM 2 能够在主要视频分割基准测试中取得卓越性能,并增强其零样本泛化能力。有关更多信息,请参阅 SA-V 数据集部分。

SAM 2 如何处理视频分割中的遮挡和物体再出现问题?

SAM 2 包含一种复杂的内存机制,用于管理视频数据中的时间依赖性和遮挡。该内存机制包括:

  • 内存编码器和内存存储库:存储来自过去帧的特征。

  • 内存注意模块:利用存储的信息维持随时间的一致对象追踪。

  • 遮挡头:专门处理物体不可见的情况,预测物体被遮挡的可能性。

即使对象暂时被遮挡或退出并重新进入场景,该机制也确保连续性。更多详情请参阅内存机制和遮挡处理部分。

SAM 2 与 YOLOv8 等其他分割模型相比如何?

SAM 2 和 Ultralytics YOLOv8 在不同领域有不同的优势和用途。SAM 2 专为具有零样本泛化和实时性能等先进功能的全面对象分割而设计,而 YOLOv8 则专为物体检测和分割任务中的速度和效率进行了优化。以下是比较:

模型 大小 参数 速度(CPU)
Meta's SAM-b 358 MB 94.7 M 51096 ms/im
MobileSAM 40.7 MB 10.1 M 46122 ms/im
FastSAM-s(采用 YOLOv8 骨干) 23.7 MB 11.8 M 115 ms/im
Ultralytics YOLOv8n-seg 6.7 MB(缩小 53.4 倍) 3.4 M(减少 27.9 倍) 59 ms/im(快了 866 倍)

更多详情,请参阅 SAM 与 YOLOv8 的比较部分。

posted @   绝不原创的飞龙  阅读(412)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示