跳至内容

ONNX 导出YOLOv8 模型

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

Ultralytics YOLOv8将模型导出为ONNX 格式可简化部署并确保在各种环境中实现最佳性能。本指南将向您展示如何轻松地将YOLOv8 模型转换为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

在我们开始讨论如何导出之前 YOLOv8 模型到 ONNX 格式,让我们来看看在哪里 ONNX 通常使用模型。

CPU 部署

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

支持的部署选项

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

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

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

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

将YOLOv8 模型导出到ONNX

您可以通过将YOLOv8 模型转换为ONNX 格式,扩大模型兼容性和部署灵活性。

安装

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

安装

# Install the required package for YOLOv8
pip install ultralytics

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

使用方法

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

使用方法

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

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

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

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

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

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

部署导出的YOLOv8 ONNX 模型

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

摘要

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

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

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

常见问题

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

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

使用方法

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

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

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

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

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

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

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

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

  • 跨平台兼容性:ONNX Runtime 支持 Windows、macOS 和 Linux 等各种平台,确保您的模型在不同环境下流畅运行。
  • 硬件加速:ONNX 运行时可利用针对 CPU、GPU 和专用加速器的特定硬件优化,提供高性能推理。
  • 框架互操作性:在PyTorch 或TensorFlow 等流行框架中训练的模型可轻松转换为ONNX 格式,并使用ONNX Runtime 运行。

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

导出到ONNX 的YOLOv8 模型有哪些部署选项?

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

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

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

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

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

  • 互操作性:ONNX 允许在不同机器学习框架之间无缝传输模型。
  • 性能优化:ONNX 运行时可利用特定硬件的优化功能提高模型性能。
  • 灵活性:ONNX 支持各种部署环境,使您无需修改即可在不同平台上使用相同的模型。

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

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

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

  1. 确认已安装所需依赖项的正确版本。
  2. 有关支持的操作员和功能,请查看ONNX 官方 文档
  3. 查看错误信息以寻找线索,并查阅Ultralytics 常见问题指南

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



创建于 2024-01-25,更新于 2024-07-05
作者:glenn-jocher(6)、abirami-vina(1)

评论