在当今的人工智能领域,模型的跨平台部署和兼容性成为了一个重要的议题。为了解决这一挑战,ONNX(Open Neural Network Exchange)格式应运而生。它是由Facebook和Microsoft联合发起,并得到了IBM、Amazon(通过AWS)和Google等众多组织的共同支持。ONNX旨在创建一个开放的文件格式,用于表示机器学习模型,使其能够在不同的AI框架和硬件上使用。
ONNX模型的一个显著特点是其通用模型表示。ONNX定义了一组通用的操作符(例如卷积、层等)和标准数据格式。当模型转换为ONNX格式时,其架构和权重被翻译成这种通用表示。这种统一性确保了任何支持ONNX的框架都能够理解该模型。
此外,ONNX还维护了一个操作符的版本控制系统,确保即使标准发展,旧版本创建的模型仍然可用。向后兼容性是一个关键特性,它防止模型迅速过时。ONNX以计算图的形式表示模型,这种基于图的结构是表示机器学习模型的通用方式,其中节点代表操作或计算,边缘代表它们之间的张量流动。这种格式很容易适应也以图的形式表示模型的各种框架。
围绕ONNX有一个丰富的工具生态系统,这些工具协助模型转换、可视化和优化。这些工具使开发者更容易使用ONNX模型,并能够无缝地在不同框架之间转换模型。
在深入如何将YOLO11模型导出到ONNX格式之前,让先看看ONNX模型通常在哪里使用。ONNX模型通常部署在CPU上,因为它们与ONNX Runtime兼容。这个运行时针对CPU执行进行了优化,显著提高了推理速度,使实时CPU部署成为可能。
尽管ONNX模型通常在CPU上使用,但它们也可以部署在以下平台上:
- GPU加速:ONNX完全支持GPU加速,特别是NVIDIA CUDA,这使得在NVIDIA GPU上高效执行需要高计算能力的任务成为可能。
- 边缘和移动设备:ONNX扩展到边缘和移动设备,非常适合设备上的实时推理场景。它轻量级且与边缘硬件兼容。
- Web浏览器:ONNX可以直接在Web浏览器中运行,为交互式和动态的基于Web的AI应用程序提供动力。
要将YOLO11模型转换为ONNX格式,首先需要安装所需的包。使用以下命令安装YOLO11所需的包:
pip install ultralytics
在安装YOLO11所需的包时,如果遇到任何困难,请参考以获取解决方案和提示。
在开始使用说明之前,请务必查看Ultralytics提供的YOLO11模型范围。这将帮助为项目需求选择最合适的模型。
以下是如何将YOLO11模型导出到ONNX格式的示例代码:
from ultralytics import YOLO
# 加载YOLO11模型
model = YOLO("yolo11n.pt")
# 将模型导出到ONNX格式
model.export(format="onnx")
# 创建 'yolo11n.onnx'
# 加载导出的ONNX模型
onnx_model = YOLO("yolo11n.onnx")
# 运行推理
results = onnx_model("https://ultralytics.com/images/bus.jpg")
一旦成功地将Ultralytics YOLO11模型导出到ONNX格式,下一步就是在各种环境中部署这些模型。有关部署ONNX模型的详细说明,请查看以下资源:
- :本指南提供了使用ONNX Runtime加载和运行ONNX模型的基本...
- :查看此文档页面以获取在边缘上部署ONNX模型的不同示例...
- :一系列全面的教程,涵盖了在不同场景中使用和实现ONNX模型的各个方面...
本指南介绍了如何将UltralyticsYOLO11模型导出到ONNX格式,以提高其在不同平台上的互操作性和性能。还被介绍到了ONNX Runtime和ONNX部署选项。