使用 ONNX 集成导出 Ultralytics YOLO 模型
了解如何将 Ultralytics YOLO11 模型导出为 ONNX、使用导出的模型进行推理,并将模型部署到 CPU、GPU、移动设备和边缘设备上。
Abirami Vina8 分钟阅读
AI 解决方案刚开始受到关注时,大多数模型都部署在受控环境中的高性能服务器上。然而,随着技术进步,部署范围已远远超出数据中心。
如今,AI 模型运行在各种设备上,从云服务器和台式电脑到智能手机和边缘设备。这种转变支持更快的处理速度、离线功能,以及更贴近数据生成位置运行的智能系统。
这一趋势在计算机视觉领域尤为明显。计算机视觉是 AI 的一个分支,能够让机器解读视觉数据。它正用于推动人脸识别、自动驾驶和实时视频分析等应用。随着这些应用场景不断增长,对能够在不同硬件和平台上顺畅运行的模型的需求也随之增加。
然而,将计算机视觉模型部署到各种目标环境并不总是那么简单。不同设备在硬件、操作系统和支持的框架方面各不相同,因此灵活性和兼容性至关重要。
因此,能够将 Ultralytics YOLO11 等计算机视觉模型导出为不同格式至关重要。例如,Ultralytics 支持的 ONNX(开放神经网络交换)集成提供了一种实用方式,可弥合训练与部署之间的差距。ONNX 是一种开放格式,可让模型不受框架限制,并能在各种平台上直接部署。

图 1。ONNX 能帮助你轻松地将在一种框架中训练的模型部署到另一种框架中运行。
本文将深入了解 Ultralytics 支持的 ONNX 集成,并探索如何导出 YOLO11 模型,以便灵活地部署到不同平台。
什么是 ONNX 和 ONNX Runtime?#
开放神经网络交换(ONNX)是一个开源项目,它定义了机器学习模型的标准格式。ONNX 最初由 Microsoft 和 Facebook 开发,支持开发者在一种框架(如 PyTorch)中训练模型,然后在另一种框架(如 TensorFlow)中运行模型。这让 AI 开发更加灵活、协作性更强,也更易于使用,尤其是在计算机视觉等领域。
ONNX 提供了一套通用运算符和统一的文件格式,让你更轻松地在不同工具、框架、运行时和编译器之间迁移模型。通常,在一种框架中训练的模型无法轻松兼容另一种框架;但使用 ONNX,你只需导出一次模型,就几乎可以在任何地方部署:CPU(中央处理器)、GPU(图形处理器)、移动设备或边缘硬件。
此外,ONNX Runtime 是专门用于运行 ONNX 格式模型的高性能推理引擎。它旨在让 ONNX 模型在各种平台上运行得更快、更高效,包括服务器、移动设备和边缘硬件。ONNX Runtime 兼容 PyTorch、TensorFlow、TensorFlow Lite 和 scikit-learn 等常用框架,因此可以轻松集成到不同的工作流中,并在需要的地方部署模型。

图 2。 ONNX 和 ONNX Runtime 支持灵活的跨平台模型部署。
ONNX 的主要特性#
在介绍如何将 Ultralytics YOLO11 导出为 ONNX 格式之前,我们先来看看 ONNX 模型格式的一些主要特性。
无论你是在不同工具之间切换、将模型部署到不同设备,还是升级系统,ONNX 都能帮助一切顺畅运行。以下是 ONNX 模型格式的独特之处:
- 统一的标准格式:ONNX 使用通用方式描述模型的构成,例如层和操作(可以把它们理解为构建模块)。模型转换为 ONNX 后就会遵循这项标准,因此任何支持 ONNX 的系统都能理解并运行该模型。
- 向后兼容:即使 ONNX 持续改进,它也能确保旧模型仍可在新版本中运行。这意味着 ONNX 每次更新时,你都不必重新训练或重建模型。
- 基于计算图的模型设计:ONNX 模型以计算图的形式构建,每个节点代表一个操作(例如一层或一个数学函数),边则表示数据流向。这种基于计算图的设计便于与采用类似计算图结构的各种系统集成。
- 方便开发者使用的工具:ONNX 提供了大量工具,帮助你转换、验证和优化模型。这些工具简化了在不同框架之间迁移模型的流程,还能加快部署速度,尤其适用于计算机视觉应用。
ONNX 集成概览#
将 Ultralytics YOLO 模型(例如 Ultralytics YOLO11)导出为 ONNX 格式非常简单,只需几个步骤即可完成。
首先,使用 pip 等包管理器安装 Ultralytics Python 包。你可以在命令提示符或终端中运行 pip install ultralytics 来完成安装。
使用 Ultralytics 包,你可以轻松训练、测试、微调、导出和部署模型,以完成各种计算机视觉任务,让整个流程更快、更高效。安装过程中如果遇到困难,可以参考常见问题指南获取解决方案和建议。
安装 Ultralytics 包后,你可以使用以下代码加载 YOLO11 模型并将其导出为 ONNX 格式。此示例会加载一个预训练的 YOLO11 模型(yolo11n.pt),并将其导出为 ONNX 文件(yolo11n.onnx),以便在不同平台和设备上部署。
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="onnx")同样的步骤也适用于较新的模型,例如 Ultralytics YOLO26。将模型转换为 ONNX 格式并确认其结果与原始模型一致后,你就可以将模型部署到各种平台上。
下面的示例展示了如何加载导出的 YOLO11 模型(yolo11n.onnx)并运行推理。推理就是使用训练好的模型对新数据进行预测。在此示例中,我们将使用一张公交车图片的 URL 来测试模型。
onnx_model = YOLO("yolo11n.onnx")
results = onnx_model("https://ultralytics.com/images/bus.jpg", save=True)运行此代码后,输出图片将保存到 runs/detect/predict 文件夹中。

图 3。使用导出的 Ultralytics YOLO11 模型对图片进行推理。
何时选择 ONNX 集成?#
Ultralytics Python 包支持将模型导出为多种格式,包括 TorchScript、CoreML、TensorRT 和 ONNX。那么,为什么要选择 ONNX?
ONNX 的突出之处在于它与框架无关。许多其他导出格式都绑定到特定工具或环境,而 ONNX 使用标准化格式和通用运算符集。因此,它具有很强的可移植性,兼容各种硬件,非常适合跨平台部署,无论你使用的是云服务器、移动应用还是边缘设备。
以下是 ONNX 集成可能成为你的 Ultralytics YOLO11 项目理想选择的一些原因:
- 便于移植和部署:将 Ultralytics YOLO11 模型导出为 ONNX 后,你可以在各种平台上部署,无需更改代码或重新训练。
- 获得业界广泛支持:主要 AI 公司和框架都支持 ONNX,因此它是一种可靠且广受认可的格式。它能确保长期兼容性,就像 PDF 可以在各种设备上使用一样。
- 面向未来的开发:使用 ONNX 有助于保护你在模型上的投入。随着工具不断发展,ONNX 能让模型保持适用性,即使在全新或不同的环境中也能使用。
- 不受供应商绑定:有些工具会限制你只能使用其自有系统,从而限制模型的用途。ONNX 则让你可以选择最适合需求的平台,不必被单一配置束缚。
Ultralytics YOLO11 和 ONNX 模型格式的应用#
接下来,我们来看看一些实际应用,了解如何借助 ONNX 集成部署 Ultralytics YOLO11。
使用 Ultralytics YOLO11 跟踪仓库库存#
在繁忙的仓库里,要时刻关注每件产品和包裹并不容易。计算机视觉系统可以帮助员工找到货架上的产品,并获取产品数量、类型等信息。这类系统可以帮助企业自动管理庞大的库存,为仓库员工节省大量时间。
具体来说,在智能仓库中,导出为 ONNX 格式的 Ultralytics YOLO11 模型可以通过摄像头和边缘设备实时识别并计数物品。导出的模型可以扫描货架或托盘,检测库存水平、缺失物品或空位。由于 ONNX 模型可以在各种硬件上高效运行,因此模型能直接部署在智能摄像头等小型边缘设备上,无需昂贵的服务器或持续访问云端。

图 4。使用 YOLO11 检测并清点包裹的示例。
使用 Ultralytics YOLO11 管理医院废弃物#
世界各地的医院每天都会产生大量废弃物,从使用过的手套和注射器,到手术中使用的器械(例如一次性或受污染的剪刀和手术刀)。事实上,研究表明,医院每年产生的废弃物超过 500 万吨,相当于每张病床每天产生 29 磅废弃物。
正确分类这类废弃物对于卫生、安全和遵守法规至关重要。通过使用导出为 ONNX 格式的 Ultralytics YOLO11 模型,医院可以利用医疗健康领域的计算机视觉,实时自动处理和监控废弃物处置。
例如,在手术室或走廊等区域的垃圾桶附近安装摄像头,就能在物品被丢弃时进行监控。经过训练、能够识别不同类型医疗废弃物的定制 Ultralytics YOLO11 模型,可以分析录像并识别被丢弃的物品。如果物品被丢进错误的垃圾桶,例如把用过的注射器丢进普通垃圾桶,系统可以通过灯光或声音立即提醒工作人员,帮助防止污染并确保合规。

图 5。使用 Ultralytics YOLO11 检测医疗器械。
借助 Ultralytics YOLO11 监测作物#
掌握作物的最佳收获时机,会对农产品质量和农场整体生产力产生重大影响。传统上,农民依靠经验和人工检查来判断;但随着技术的进步,这种情况正在改变。
如今,借助 YOLO11 等计算机视觉技术并将模型导出为 ONNX 格式,农民可以在田间实现自动化和精准作业。农民可以使用无人机或安装在拖拉机、杆子上的摄像头拍摄作物(例如番茄、苹果或小麦)。随后,YOLO11 可以检测颜色、大小和作物分布等关键指标。根据这些信息,农民可以判断作物是已经成熟待收、仍在生长,还是已经过了最佳收获期。

图 6。YOLO11 可用于检测无人机航拍画面中的作物。
需要考虑的 ONNX 局限性#
ONNX 有许多优点,例如可移植性、跨平台兼容性和框架互操作性,但也有一些局限性需要注意:
- 模型大小:与原始格式相比,将模型转换为 ONNX 格式有时会导致文件变大。量化和剪枝等技术可以在不显著影响性能的前提下缩小模型,从而缓解这一问题。
- 运行时兼容性:虽然 ONNX Runtime 专为跨平台兼容而设计,但其性能和支持情况可能因硬件和操作系统而异。
- 调试难题:与 PyTorch 或 TensorFlow 等原生框架相比,调试 ONNX 模型可能更加复杂。错误消息可能不够详细,因此更难定位问题。不过,Netron 等模型可视化工具以及 ONNX Runtime 的日志功能可以帮助排查问题。
要点#
将 Ultralytics YOLO11 导出为 ONNX 格式,可以轻松地将训练好的计算机视觉模型部署到几乎任何地方,无论是笔记本电脑、移动设备,还是小型智能摄像头。借助 ONNX 集成,你不必局限于单一框架或平台,可以灵活地在最适合应用的环境中运行模型。
这样可以更快、更高效地完成从训练到实际部署的过渡。无论你是在仓库中跟踪库存,还是确保医院正确处理废弃物,这种方案都有助于系统更顺畅地运行、减少错误并节省宝贵时间。
想进一步了解计算机视觉和 AI?浏览我们的 GitHub 代码库,加入我们的社区,并查看我们的许可选项,开启你的计算机视觉项目。如果你正在探索制造业中的 AI和汽车行业中的计算机视觉等创新应用,请访问我们的解决方案页面,了解更多信息。
作者
评论
提出问题、分享你的结果,或帮助其他人。










