跳至内容

ONNX 导出YOLO11 模型

通常,在部署计算机视觉模型时,您需要一种既灵活又能与多个平台兼容的模型格式。

Ultralytics YOLO11将模型导出为ONNX 格式可简化部署并确保在各种环境中实现最佳性能。本指南将向您展示如何轻松地将YOLO11 模型转换为ONNX ,并增强其在实际应用中的可扩展性和有效性。

ONNX 和ONNX Runtime

ONNX是 Facebook 和Microsoft 最初开发一个社区项目。ONNX 的持续开发得到了 IBM、亚马逊(通过 AWS)和Google 等多个组织的合作支持。该项目旨在创建一种开放文件格式,用于表示机器学习模型,使其能够在不同的人工智能框架和硬件中使用。

ONNX 模型可用于在不同框架之间无缝转换。例如,在PyTorch 中训练的深度学习模型可以导出为ONNX 格式,然后轻松导入TensorFlow 。

ONNX

另外,ONNX 模型可与ONNX Runtime 配合使用。ONNX Runtime是机器学习模型的通用跨平台加速器,与PyTorch 等框架兼容、 TensorFlow、TFLite、scikit-learn 等框架兼容。

ONNX 运行时(Runtime)通过利用特定硬件功能优化ONNX 模型的执行。通过这种优化,模型可以在各种硬件平台(包括 CPU、GPU 和专用加速器)上高效、高性能地运行。

ONNX  ONNX 运行时

无论是独立使用还是与ONNX Runtime 配合使用,ONNX 都能为机器学习模型的部署和兼容性提供灵活的解决方案。

ONNX 机型的主要特点

ONNX 能够处理各种格式,主要归功于以下主要功能:

  • 通用模型表示法:ONNX 定义了一套通用运算符(如卷积、层等)和一种标准数据格式。当一个模型转换为ONNX 格式时,其架构和权重就会转换为这种通用表示法。这种统一性可确保任何支持ONNX 的框架都能理解模型。

  • 版本和向后兼容性:ONNX 为其操作员维护一个版本系统。这确保了即使标准在不断发展,旧版本创建的模型仍可继续使用。向后兼容性是防止模型迅速过时的重要功能。

  • 基于图形的模型表示法:ONNX 将模型表示为计算图。这种基于图的结构是表示机器学习模型的通用方法,其中节点表示操作或计算,边表示它们之间流动的张量。这种格式很容易适应各种同样以图表示模型的框架。

  • 工具和生态系统:ONNX 周围有丰富的工具生态系统,可帮助进行模型转换、可视化和优化。这些工具使开发人员更容易使用ONNX 模型,并在不同框架之间无缝转换模型。

常见用法ONNX

在了解如何将YOLO11 模型导出为ONNX 格式之前,我们先来看看ONNX 模型通常用在什么地方。

CPU 部署

ONNX 由于与ONNX Runtime 兼容,模型通常部署在 CPU 上。该运行时针对CPU 的执行进行了优化。它大大提高了推理速度,使CPU 的实时部署变得可行。

支持的部署选项

ONNX 模型通常用于 CPU,但也可部署在以下平台上:

  • GPU 加速:ONNX 完全支持GPU 加速,尤其是NVIDIA CUDA 。这样就能在NVIDIA GPU 上高效执行需要高计算能力的任务。

  • 边缘和移动设备:ONNX 可扩展到边缘和移动设备,非常适合在设备上进行实时推理。它重量轻,与边缘硬件兼容。

  • 网络浏览器:ONNX 可直接在网络浏览器中运行,为基于网络的交互式动态人工智能应用提供动力。

将YOLO11 模型导出到ONNX

通过将YOLO11 模型转换为ONNX 格式,您可以扩展模型兼容性和部署灵活性。 Ultralytics YOLO11提供了一个简单明了的导出过程,可以显著提高模型在不同平台上的性能。

安装

要安装所需的软件包,请运行

安装

# Install the required package for YOLO11
pip install ultralytics

有关安装过程的详细说明和最佳实践,请查阅我们的YOLO11 安装指南。在安装YOLO11 所需的软件包时,如果遇到任何困难,请查阅我们的常见问题指南,了解解决方案和技巧。

使用方法

在了解使用说明之前,请务必查看 Ultralytics 提供的一系列YOLO11 型号。这将有助于您根据项目要求选择最合适的型号。

使用方法

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo11n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

出口参数

将YOLO11 模型导出为ONNX 格式时,您可以使用各种参数自定义流程,以优化满足您的特定部署需求:

论据 类型 默认值 说明
format str 'onnx' 导出模型的目标格式,定义与各种部署环境的兼容性。
imgsz inttuple 640 模型输入所需的图像尺寸。对于正方形图像,可以是一个整数,或者是一个元组 (height, width) 了解具体尺寸。
half bool False 启用 FP16(半精度)量化,在支持的硬件上减小模型大小并可能加快推理速度。
dynamic bool False 允许动态输入尺寸,提高了处理不同图像尺寸的灵活性。
simplify bool True 简化模型图 onnxslim这可能会提高性能和兼容性。
opset int None 指定ONNX opset 版本,以便与不同的ONNX 解析器和运行时兼容。如果未设置,则使用最新的支持版本。
nms bool False 增加了非最大值抑制 (NMS),这对精确高效的检测后处理至关重要。
batch int 1 指定导出模型的批量推理大小,或导出模型将同时处理的图像的最大数量。 predict 模式。

有关导出过程的更多详情,请访问Ultralytics 有关导出的文档页面

部署导出的YOLO11 ONNX 模型

成功将Ultralytics YOLO11 模型导出为ONNX 格式后,下一步就是在各种环境中部署这些模型。有关部署ONNX 模型的详细说明,请参阅以下资源:

摘要

在本指南中,您将学习如何将Ultralytics YOLO11 模型导出为ONNX 格式,以提高它们在不同平台上的互操作性和性能。您还了解了ONNX Runtime 和ONNX 部署选项。

ONNX 导出只是Ultralytics YOLO11 支持的众多导出格式之一,它允许您在几乎任何环境中部署您的模型。根据您的具体需求,您可能还想了解其他导出选项,如 TensorRTCoreML等其他导出选项。

有关使用的详细信息,请访问ONNX 官方文档

此外,如果您想了解有关Ultralytics YOLO11 集成的更多信息,请访问我们的集成指南页面。您将在那里找到大量有用的资源和见解。

常见问题

如何使用Ultralytics 将YOLO11 模型导出为ONNX 格式?

要使用Ultralytics 将YOLO11 模型导出为ONNX 格式,请按照以下步骤操作:

使用方法

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo11n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

有关详细信息,请访问出口文件

使用ONNX Runtime 部署YOLO11 模型有哪些优势?

使用ONNX Runtime 部署YOLO11 模型有几个优势:

  • 跨平台兼容性:ONNX Runtime 支持 Windows、macOS 和 Linux 等各种平台,确保您的模型在不同环境下流畅运行。
  • 硬件加速:ONNX 运行时可利用针对 CPU、GPU 和专用加速器的特定硬件优化,提供高性能推理。
  • 框架互操作性:使用流行框架(如 PyTorch或TensorFlow 等流行框架训练的模型可轻松转换为ONNX 格式,并使用ONNX Runtime 运行。
  • 性能优化:与原生PyTorch 模型相比,ONNX Runtime 的CPU 速度最多可提高 3 倍,因此非常适合GPU 资源有限的部署场景。

如需了解更多信息,请查看ONNX Runtime 文档

YOLO11 模型导出到ONNX 时有哪些部署选项?

YOLO11 导出到ONNX 的模型可在各种平台上部署,包括

  • 中央处理器:利用ONNX Runtime 优化CPU 推论。
  • 图形处理器:利用NVIDIA CUDA 实现高性能GPU 加速。
  • 边缘设备:在边缘设备和移动设备上运行轻量级模型,实现设备上的实时推理。
  • 网络浏览器:在网络浏览器中直接执行模型,实现交互式网络应用。
  • 云服务:在支持ONNX 格式的云平台上部署,实现可扩展推理。

如需了解更多信息,请参阅我们的模型部署选项指南。

为什么Ultralytics YOLO11 模型要使用ONNX 格式?

在Ultralytics YOLO11 模型中使用ONNX 格式有很多好处:

  • 互操作性:ONNX 允许在不同机器学习框架之间无缝传输模型。
  • 性能优化:ONNX 运行时可利用特定硬件的优化功能提高模型性能。
  • 灵活性:ONNX 支持各种部署环境,使您无需修改即可在不同平台上使用相同的模型。
  • 标准化:ONNX 提供的标准化格式在业界得到广泛支持,确保了长期兼容性。

请参阅 YOLO11 模型导出到ONNX 的综合指南。

在将YOLO11 模型导出到ONNX 时,如何排除故障?

将YOLO11 模型导出到ONNX 时,可能会遇到一些常见问题,如不匹配的依赖关系或不支持的操作。要排除这些问题,请

  1. 验证是否安装了正确版本的所需依赖项。
  2. 有关支持的操作员和功能,请查看ONNX 官方 文档
  3. 查看错误信息以寻找线索,并查阅Ultralytics 常见问题指南
  4. 尝试使用不同的导出参数,如 simplify=True 或调整 opset 版本。
  5. 对于动态输入大小问题,设置 dynamic=True 在出口过程中。

如果问题仍然存在,请联系Ultralytics 支持部门寻求进一步帮助。

📅创建于 1 年前 ✏️已更新 3 天前

评论