绿色检查
链接复制到剪贴板

使用ONNX 集成导出Ultralytics YOLO 模型

了解如何使用ONNX 集成导出Ultralytics YOLO 模型(如Ultralytics YOLO11),以便在各种硬件上进行跨平台部署。

人工智能解决方案刚开始受到关注时,大多数模型都部署在受控环境中的强大服务器上。然而,随着技术的进步,部署范围已远远超出数据中心。

如今,人工智能模型可在从云服务器和台式机到智能手机和边缘设备的所有设备上运行。这种转变支持更快的处理速度、离线功能和更智能的系统,这些系统的运行更接近数据产生的地方。

计算机视觉就是其中一个表现尤为明显的领域,它是人工智能的一个分支,能让机器解读视觉数据。它被用于推动面部识别、自动驾驶和实时视频分析等应用。随着这些用例的增加,对能够在不同硬件和平台上流畅运行的模型的需求也在增加。

但是,在一系列部署目标中部署计算机视觉模型并不总是那么简单。设备的硬件、操作系统和支持的框架各不相同,因此灵活性和兼容性至关重要。

这就是为什么可以选择导出计算机视觉模型,如 Ultralytics YOLO11等计算机视觉模型导出为不同格式的选项至关重要。例如,Ultralytics 支持的ONNX (开放神经网络交换)集成为弥合训练和部署之间的差距提供了一种实用的方法。ONNX 是一种开放格式,可使模型不受框架限制,并可跨平台部署。

图 1.ONNX 可帮助您将在一个框架中训练好的模型在另一个框架中轻松运行。

在本文中,我们将详细介绍Ultralytics 支持的ONNX 集成,并探讨如何导出YOLO11 模型,以实现灵活的跨平台部署。

什么是ONNX 和ONNX Runtime?

开放神经网络交换(Open Neural Network Exchange)是一个开源项目,定义了机器学习模型的标准格式。它最初由Microsoft 和 Facebook 共同开发,允许开发人员在一个框架(如PyTorch)中训练模型,然后在另一个框架(如TensorFlow)中运行。这使得人工智能开发变得更加灵活、更具协作性和更易于访问,尤其是在计算机视觉等领域。

ONNX 提供了一套通用的运算符和统一的文件格式,使模型在不同工具、框架、运行时和编译器之间的移动变得更加容易。通常情况下,在一个框架中训练好的模型不容易与另一个框架兼容,但有了ONNX,您只需导出一次模型,就能将其部署到几乎任何地方:CPU(中央处理器)、GPU(图形处理器)、移动设备或边缘硬件。

此外,ONNX Runtime 是一个高性能推理引擎,专门为运行ONNX 格式的模型而开发。它旨在让ONNX 模型在各种平台(包括服务器、移动设备和边缘硬件)上运行得更快、更高效。ONNX Runtime 与PyTorch、TensorFlow、TensorFlow Lite 和 scikit-learn 等流行框架兼容,可轻松集成到不同的工作流中,并在需要的地方部署模型。

图 2. ONNX 和ONNX Runtime 可实现灵活的跨平台模型部署。

ONNX的主要特点 

在讨论如何将 YOLO11导出为ONNX 格式之前,我们先来了解一下ONNX 模型格式的一些主要特点。 

无论您是在不同工具间切换、部署到不同设备还是升级系统,ONNX 都能帮助您保持一切顺利运行。以下是ONNX 模型格式的独特之处:

  • 一种标准格式:ONNX 使用一种通用的方式来描述模型的构建方式,如层和操作(将它们视为构建模块)。当一个模型转换为ONNX 时,它将遵循这一标准,这样任何支持ONNX 的系统都能理解并运行它。
  • 向后兼容性:即使ONNX 不断改进,它仍能确保旧版本模型与新版本兼容。这意味着您不必在ONNX 每次更新时都重新训练或重建模型。
  • 基于图形的模型设计 ONNX 模型的结构是计算图,每个节点代表一个操作(如层或数学函数),边表示数据流。这种基于图形的设计便于与使用类似计算图形结构的各种系统集成。
  • 开发人员友好型工具:它配备了多种工具,可帮助您转换、验证和优化模型。这些工具简化了在不同框架之间移动模型的过程,并能加快部署速度,尤其适用于计算机视觉应用。

ONNX 整合概述

以ONNX 格式导出Ultralytics YOLO 模型(如Ultralytics YOLO11 )非常简单,只需几个步骤即可完成。 

要开始使用,请使用 "pip "之类的软件包管理器安装Ultralytics Python 软件包。在命令提示符或终端运行"pip installultralytics"命令即可开始安装

有了Ultralytics 软件包,你可以轻松地为各种计算机视觉任务训练、测试、微调、导出和部署模型,使整个过程更快、更高效。在安装过程中,如果遇到任何困难,可以参考常见问题指南,了解解决方案和技巧。

安装Ultralytics 软件包后,您可以使用下面的代码将YOLO11 模型加载并导出为ONNX 格式。本示例加载预训练的YOLO11 模型 (yolo11n.pt) 并将其导出为ONNX 文件 (yolo11n.onnx),以便在不同平台和设备上部署。

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

model.export(format="onnx") 

将模型转换为ONNX 格式后,您可以将其部署到各种平台上。 

下面的示例展示了如何加载导出的YOLO11 模型 (yolo11nonnx) 并运行推理。推理简单地说就是使用训练有素的模型对新数据进行预测。在本例中,我们将使用一张公共汽车图片的 URL 来测试模型。

onnx_model = YOLO("yolo11n.onnx")

results = onnx_model("https://ultralytics.com/images/bus.jpg",save=True)

运行此代码后,以下输出图像将保存在 runs/detect/predict 文件夹中。

图 3.使用导出的YOLO11 模型对图像进行推理。

何时选择ONNX 集成?

Ultralytics Python 软件包支持将模型导出为多种格式,包括TorchScript、CoreML、TensorRT 和ONNX。那么,为什么要选择ONNX 呢?

ONNX 脱颖而出的原因在于它是一种与框架无关的格式。许多其他导出格式与特定工具或环境绑定,而ONNX 则使用标准化格式和一套共享操作符。这使它具有高度的可移植性,对硬件友好,是跨平台部署的理想选择--无论您使用的是云服务器、移动应用程序还是边缘设备。 

以下是ONNX 集成成为YOLO11 项目理想选择的一些原因:

  • 便携式部署:一旦导出到ONNX,您的YOLO11 模型就可以部署到各种平台上,无需更改代码或重新培训。
  • 全行业支持: ONNX 得到了主要人工智能公司和框架的支持,使其成为一种可靠、广为接受的格式。它可确保长期兼容性,就像 PDF 在不同设备上的工作方式一样。
  • 面向未来的开发:使用ONNX 有助于保护您的模型投资。随着工具的发展,ONNX 可使您的模型保持相关性和可用性,即使在新的或不同的环境中也是如此。
  • 无供应商锁定:有些工具只允许您使用他们的系统,这会限制您的模型的功能。ONNX 可让您选择最适合您需求的平台,而不会受限于单一设置,从而避免了这种情况。

YOLO11 和ONNX 模型格式的应用

接下来,让我们来探讨一下在ONNX 集成的帮助下部署YOLO11 的一些实际应用。

使用YOLO11跟踪仓库库存

在繁忙的仓库中,很难随时监控每件产品和包装。计算机视觉系统可以帮助工人找到货架上的产品,并了解产品数量、类型等信息。这些系统可以帮助企业自动管理庞大的库存,为仓库工人节省大量时间。

具体来说,在智能仓库中,导出到ONNX 的YOLO11 模型可用于使用摄像头和边缘设备实时识别和清点物品。导出的模型可以帮助扫描货架或托盘,检测库存水平、缺失物品或空位。由于导出到ONNX 的模型轻便高效,因此可以直接在智能摄像头等小型边缘设备上运行,无需昂贵的服务器或持续的云访问。

图 4.使用YOLO11 检测和计数包裹的示例。

利用YOLO11进行医院废物管理

世界各地的医院每天都会产生大量废物,从用过的手套和注射器到手术中使用的设备(如一次性或受污染的手术工具,如剪刀和手术刀)。事实上,研究表明,医院每年产生约 500 万吨废物,即每张病床每天产生 29 磅废物。 

正确分类这些废物对卫生、安全和遵守法规至关重要。利用以ONNX 格式导出的YOLO11 模型,医院可以实时自动监控废物处理情况。

例如,放置在手术室或走廊等区域废物箱附近的摄像头可以监控物品被丢弃的过程。经过训练的定制YOLO11 模型可以识别不同类型的医疗废物,它可以分析录像并识别出被丢弃的物品。如果物品最终被扔进了错误的垃圾桶,比如将用过的注射器扔进了普通垃圾桶,系统可以设置为立即用灯光或声音提醒工作人员,帮助防止污染并确保合规。

图 5.使用YOLO11 检测医疗仪器。

YOLO11作物监测

掌握正确的作物收割时间,对农产品的质量和农场的整体生产力都有很大影响。传统上,农民依赖经验和人工检查,但随着最近技术的进步,这种情况开始发生变化。

现在,有了以ONNX 格式输出的YOLO11 等计算机视觉创新技术,农民可以将自动化和精确性带入田间地头。通过使用无人机或安装在拖拉机或电线杆上的摄像头,农民可以捕捉到农作物(如西红柿、苹果或小麦)的图像。然后,YOLO11 可用于检测作物的颜色、大小和分布等关键指标。根据这些信息,农民可以确定农作物是准备收获、仍在成熟还是已经过了收获高峰期。

图 6.YOLO11 可用于检测无人机航拍镜头中的农作物。 

需要考虑的ONNX 限制

ONNX 具有许多优点,如可移植性、跨平台兼容性和框架互操作性,但也有一些局限性需要注意。

  • 模型大小:与原始格式相比,将模型转换为ONNX 格式有时会导致文件大小增大。量化和剪枝等技术可以在不明显影响性能的情况下减少模型大小,从而有助于缓解这一问题。
  • 运行时兼容性: 尽管ONNX Runtime 的设计具有跨平台兼容性,但不同硬件和操作系统的性能和支持可能会有所不同。 
  • 调试挑战:与PyTorch 或TensorFlow 等原生框架相比,调试ONNX 模型可能更加复杂。错误信息的描述性可能较弱,因此更难找出问题所在。不过,用于模型可视化的 Netron 等工具和ONNX Runtime 的日志功能可以帮助排除故障。

主要收获

将Ultralytics YOLO11 输出到ONNX ,就可以轻松地将训练有素的计算机视觉模型部署到几乎任何地方--无论是笔记本电脑、移动设备,甚至是小型智能相机。有了ONNX 集成,您就不必受限于单一框架或平台,可以灵活地在最适合您应用的环境中运行模型。 

这使得从培训到实际部署的过渡更加快速高效。无论是跟踪仓库库存还是确保正确处理医院废物,这种设置都能帮助系统更顺畅地运行,减少错误并节省宝贵的时间。

想了解有关计算机视觉和人工智能的更多信息?探索我们的GitHub 存储库,与我们的社区建立联系,了解我们的许可选项,启动您的计算机视觉项目。如果您正在探索制造业中的人工智能 汽车行业中的计算机视觉等创新,请访问我们的解决方案页面了解更多信息。 

LinkedIn 徽标Twitter 徽标Facebook 徽标复制链接符号

在此类别中阅读更多内容

让我们共同打造人工智能的未来

开始您的未来机器学习之旅