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 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
在了解如何将YOLOv8 模型导出为ONNX 格式之前,我们先来看看ONNX 模型通常用在什么地方。
CPU 部署
ONNX 由于与ONNX Runtime 兼容,模型通常部署在 CPU 上。该运行时针对 CPU 执行进行了优化。它大大提高了推理速度,使实时 CPU 部署成为可能。
支持的部署选项
ONNX 模型通常用于 CPU,但也可部署在以下平台上:
-
GPU 加速:ONNX 完全支持 GPU 加速,特别是英伟达™(NVIDIA®)CUDA。这使得需要高计算能力的任务能够在英伟达™(NVIDIA®)图形处理器上高效执行。
-
边缘和移动设备:ONNX 可扩展到边缘和移动设备,非常适合在设备上进行实时推理。它重量轻,与边缘硬件兼容。
-
网络浏览器:ONNX 可直接在网络浏览器中运行,为基于网络的交互式动态人工智能应用提供动力。
将YOLOv8 模型导出到ONNX
您可以通过将YOLOv8 模型转换为ONNX 格式,扩大模型兼容性和部署灵活性。
安装
要安装所需的软件包,请运行
有关安装过程的详细说明和最佳实践,请查阅我们的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')
有关导出过程的更多详情,请访问Ultralytics 有关导出的文档页面。
部署导出的YOLOv8 ONNX 模型
成功将Ultralytics YOLOv8 模型导出为ONNX 格式后,下一步就是在各种环境中部署这些模型。有关部署ONNX 模型的详细说明,请参阅以下资源:
-
ONNX 运行时Python API 文档:本指南提供了使用ONNX Runtime 加载和运行ONNX 模型的基本信息。
-
在边缘设备上部署:查看此文档页面,了解在边缘设备上部署ONNX 模型的不同示例。
-
ONNX GitHub 上的教程:涵盖在不同场景中使用和实施ONNX 模型的各个方面的综合教程集。
摘要
在本指南中,您将学习如何将Ultralytics YOLOv8 模型导出为ONNX 格式,以提高它们在不同平台上的互操作性和性能。您还了解了ONNX Runtime 和ONNX 部署选项。
有关使用的详细信息,请访问ONNX 官方文档。
此外,如果您想了解有关Ultralytics YOLOv8 集成的更多信息,请访问我们的集成指南页面。您将在那里找到大量有用的资源和见解。