跳至内容

ONNX 导出YOLOv8 模型

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

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

ONNX 和ONNX Runtime

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

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®)图形处理器上高效执行。

  • 边缘和移动设备: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 集成的更多信息,请访问我们的集成指南页面。您将在那里找到大量有用的资源和见解。



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

评论