ONNX 导出YOLO11 模型
通常,在部署计算机视觉模型时,您需要一种既灵活又能与多个平台兼容的模型格式。
将 Ultralytics YOLO11将模型导出为ONNX 格式可简化部署并确保在各种环境中实现最佳性能。本指南将向您展示如何轻松地将YOLO11 模型转换为ONNX ,并增强其在实际应用中的可扩展性和有效性。
ONNX 和ONNX Runtime
ONNX是 Facebook 和Microsoft 最初开发的一个社区项目。ONNX 的持续开发得到了 IBM、亚马逊(通过 AWS)和Google 等多个组织的合作支持。该项目旨在创建一种开放文件格式,用于表示机器学习模型,使其能够在不同的人工智能框架和硬件中使用。
ONNX 模型可用于在不同框架之间无缝转换。例如,在PyTorch 中训练的深度学习模型可以导出为ONNX 格式,然后轻松导入TensorFlow 。
另外,ONNX 模型可与ONNX Runtime 配合使用。ONNX Runtime是机器学习模型的通用跨平台加速器,与PyTorch 等框架兼容、 TensorFlow、TFLite、scikit-learn 等框架兼容。
ONNX 运行时(Runtime)通过利用特定硬件功能优化ONNX 模型的执行。通过这种优化,模型可以在各种硬件平台(包括 CPU、GPU 和专用加速器)上高效、高性能地运行。
无论是独立使用还是与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 格式,扩大模型兼容性和部署灵活性。
安装
要安装所需的软件包,请运行
有关安装过程的详细说明和最佳实践,请查阅我们的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")
有关导出过程的更多详情,请访问Ultralytics 有关导出的文档页面。
部署导出的YOLO11 ONNX 模型
成功将Ultralytics YOLO11 模型导出为ONNX 格式后,下一步就是在各种环境中部署这些模型。有关部署ONNX 模型的详细说明,请参阅以下资源:
-
ONNX 运行时Python API 文档:本指南提供了使用ONNX Runtime 加载和运行ONNX 模型的基本信息。
-
在边缘设备上部署:查看此文档页面,了解在边缘设备上部署ONNX 模型的不同示例。
-
ONNX GitHub 上的教程:涵盖在不同场景中使用和实施ONNX 模型的各个方面的综合教程集。
摘要
在本指南中,您将学习如何将Ultralytics YOLO11 模型导出为ONNX 格式,以提高它们在不同平台上的互操作性和性能。您还了解了ONNX Runtime 和ONNX 部署选项。
有关使用的详细信息,请访问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")
有关详细信息,请访问出口文件。
使用ONNX Runtime 部署YOLO11 模型有哪些优势?
使用ONNX Runtime 部署YOLO11 模型有几个优势:
- 跨平台兼容性:ONNX Runtime 支持 Windows、macOS 和 Linux 等各种平台,确保您的模型在不同环境下流畅运行。
- 硬件加速:ONNX 运行时可利用针对 CPU、GPU 和专用加速器的特定硬件优化,提供高性能推理。
- 框架互操作性:使用流行框架(如 PyTorch或TensorFlow 等流行框架训练的模型可轻松转换为ONNX 格式,并使用ONNX Runtime 运行。
如需了解更多信息,请查看ONNX Runtime 文档。
YOLO11 模型导出到ONNX 时有哪些部署选项?
YOLO11 导出到ONNX 的模型可在各种平台上部署,包括
- 中央处理器:利用ONNX Runtime 优化CPU 推论。
- 图形处理器:利用NVIDIA CUDA 实现高性能GPU 加速。
- 边缘设备:在边缘设备和移动设备上运行轻量级模型,实现设备上的实时推理。
- 网络浏览器:在网络浏览器中直接执行模型,实现交互式网络应用。
如需了解更多信息,请参阅我们的模型部署选项指南。
为什么Ultralytics YOLO11 模型要使用ONNX 格式?
在Ultralytics YOLO11 模型中使用ONNX 格式有很多好处:
- 互操作性:ONNX 允许在不同机器学习框架之间无缝传输模型。
- 性能优化:ONNX 运行时可利用特定硬件的优化功能提高模型性能。
- 灵活性:ONNX 支持各种部署环境,使您无需修改即可在不同平台上使用相同的模型。
请参阅 YOLO11 模型导出到ONNX 的综合指南。
在将YOLO11 模型导出到ONNX 时,如何排除故障?
将YOLO11 模型导出到ONNX 时,可能会遇到一些常见问题,如不匹配的依赖关系或不支持的操作。要排除这些问题,请
- 验证是否安装了正确版本的所需依赖项。
- 有关支持的操作员和功能,请查看ONNX 官方 文档。
- 查看错误信息以寻找线索,并查阅Ultralytics 常见问题指南。
如果问题仍然存在,请联系Ultralytics 支持部门寻求进一步帮助。