Ultralytics YOLO27:
Get Started

将 YOLO26 模型导出为 TorchScript,以便快速部署#

PyTorch 正在逐步淘汰 TorchScript

PyTorch 已将 TorchScript 标记为弃用,并正逐步移除其功能。对于新的移动端和边缘端部署,请使用受支持的 ExecuTorch 集成。Ultralytics 仍保留常规 TorchScript 导出,以兼容旧版 C++。

在不使用 Python 的 C++ 环境中部署计算机视觉模型,需要一种可移植的序列化表示。TorchScript 为旧版 LibTorch 应用提供了这种兼容性。

导出为 TorchScript,将你的 Ultralytics YOLO26 模型序列化,以实现跨平台兼容和简化部署。本指南将介绍如何将 YOLO26 模型导出为 TorchScript 格式,方便你在更多应用中使用这些模型。

为什么应该导出为 TorchScript?#

TorchScript 模型序列化和部署工作流程概览

TorchScript 由 PyTorch 的创建者开发,是一款功能强大的工具,可在各种平台上优化和部署 PyTorch 模型。将 YOLO26 模型导出为 TorchScript,对于从研究走向实际应用至关重要。TorchScript 是 PyTorch 框架的一部分,它允许在不支持 Python 的环境中使用 PyTorch 模型,从而让这一过渡更加顺畅。

这一过程涉及两种技术:跟踪和脚本化。跟踪会记录模型执行期间的运算,而脚本化则允许你使用 Python 的一个子集定义模型。这些技术确保 YOLO26 等模型即使离开常用的 Python 环境,也能继续发挥作用。

TorchScript 脚本化与跟踪对比

TorchScript 模型还可以通过算子融合和内存使用优化等技术进行优化,从而确保高效执行。导出为 TorchScript 的另一项优势是,它有可能加速模型在各种硬件平台上的执行。它会生成独立且可用于生产环境的 PyTorch 模型表示,可集成到 C++ 环境中。

TorchScript 模型的主要特性#

TorchScript 是 PyTorch 生态系统的重要组成部分,为优化和部署深度学习模型提供了强大的功能。

TorchScript 主要特性概览

以下是使 TorchScript 成为开发者实用工具的主要特性:

  • 静态图执行:TorchScript 使用模型计算的静态图表示,这与 PyTorch 的动态图执行不同。在静态图执行中,计算图会在实际执行前定义并编译一次,从而提升推理期间的性能。

  • 模型序列化:TorchScript 支持将 PyTorch 模型序列化为与平台无关的格式。无需原始 Python 代码即可加载序列化模型,从而支持在不同的运行时环境中部署。

  • JIT 编译:TorchScript 使用即时 (JIT) 编译,将 PyTorch 模型转换为经过优化的中间表示。JIT 会编译模型的计算图,从而让模型能够在目标设备上高效运行。

  • 渐进式转换:TorchScript 提供渐进式转换方式,让你可以逐步将 PyTorch 模型的各个部分转换为 TorchScript。当处理复杂模型或希望优化代码的特定部分时,这种灵活性尤其有用。

TorchScript 的部署选项#

在查看将 YOLO26 模型导出为 TorchScript 格式的代码之前,我们先了解一下 TorchScript 模型通常用于哪些场景。

TorchScript 为机器学习模型提供多种部署选项,例如:

  • C++ API:TorchScript 最常见的用例是使用 LibTorch C++ API,在 C++ 应用中直接加载并运行经过优化的 TorchScript 模型。这非常适合 Python 不适用或不可用的生产环境。C++ API 能够以较低开销高效运行 TorchScript 模型,充分发挥性能潜力。

  • 移动端部署:如需在移动设备上实现低延迟、离线推理和数据隐私,请使用 ExecuTorch,它是 PyTorch 对 TorchScript Mobile 的替代方案。

  • 云端部署:可以使用 TorchServe 等解决方案,将 TorchScript 模型部署到云端服务器。TorchServe 提供模型版本管理、批处理和指标监控等功能,支持在生产环境中进行可扩展部署。使用 TorchScript 进行云端部署,可以通过 API 或其他 Web 服务访问模型。

支持的任务#

TorchScript 导出支持 Ultralytics 的全部七项任务。语义分割和深度估计仅适用于 YOLO26,因为只有 YOLO26 系列包含这两种检测头。

任务YOLOv8YOLO11YOLO26
检测✅✅✅
分割✅✅✅
语义分割❌❌✅
深度估计❌❌✅
分类✅✅✅
姿态✅✅✅
OBB✅✅✅

导出为 TorchScript:转换 YOLO26 模型#

将 YOLO26 模型导出为 TorchScript,能让你更轻松地在不同场景中使用模型,并帮助模型运行得更快、更高效。这对于希望在实际应用中更有效地使用深度学习模型的人来说非常有用。

安装#

要安装所需软件包,请运行:

安装
# Install the required package for YOLO26
pip install ultralytics

有关安装流程的详细说明和最佳实践,请查看我们的 Ultralytics 安装指南。安装 YOLO26 所需的软件包时,如果遇到困难,请查阅我们的常见问题指南,获取解决方案和建议。

用法#

所有 Ultralytics YOLO26 模型均支持开箱即用的导出,便于你将模型集成到首选的部署工作流中。你可以查看支持的导出格式和配置选项的完整列表,为你的应用选择最佳配置。

TorchScript 格式支持导出、预测和验证模式。导出模型后,加载导出的模型即可运行推理或验证其准确率。

导出
from ultralytics import YOLO

# 加载 YOLO26 模型
model = YOLO("yolo26n.pt")

# 将模型导出为 TorchScript 格式
model.export(format="torchscript")  # 创建 'yolo26n.torchscript'
预测
from ultralytics import YOLO

# 加载导出的 TorchScript 模型
model = YOLO("yolo26n.torchscript")

# 运行推理
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

# 加载导出的 TorchScript 模型
model = YOLO("yolo26n.torchscript")

# 在 COCO8 数据集上验证准确率
metrics = model.val(data="coco8.yaml")

导出参数#

参数类型默认值说明
formatstr'torchscript'导出模型的目标格式,用于定义与各种部署环境的兼容性。
imgszint 或 tuple640模型输入所需的图像尺寸。正方形图像可使用整数;若要指定具体尺寸,则可使用元组 (height, width)。
dynamicboolFalse允许使用动态输入尺寸,从而更灵活地处理不同图像尺寸。
quantizeint 或 strNone量化精度:16 (FP16) 需要使用 device=0 进行 GPU 导出;32/未设置时使用 FP32。此设置替代了已弃用的 half 标志。
nmsbool,可选None选择原始输出(None,默认)、嵌入式 NMS(True)或无 NMS 检测头(False)。
batchint1指定导出模型的批量推理大小,或导出模型在 predict 模式下可同时处理的最大图像数。
devicestrNone指定导出设备:GPU(device=0)、CPU(device=cpu)、Apple 芯片的 MPS(device=mps)。

有关导出流程的更多详情,请访问 Ultralytics 导出文档页面。

部署导出的 YOLO26 TorchScript 模型#

成功将 Ultralytics YOLO26 模型导出为 TorchScript 格式后,你就可以部署这些模型了。运行 TorchScript 模型的首选且推荐的第一步,是使用 YOLO("model.torchscript") 方法,如前面的用法代码片段所示。若要详细了解如何在其他环境中部署 TorchScript 模型,请参阅以下资源:

  • 了解移动端部署:使用 ExecuTorch 独立的 torch.export() → .pte 流程进行当前 PyTorch 移动端部署。

  • 掌握服务器端部署:了解如何使用 TorchServe 在服务器端部署模型,其中包含可扩展、高效模型服务的分步教程。

  • 实现 C++ 部署:深入了解《在 C++ 中加载 TorchScript 模型教程》,将 TorchScript 模型集成到 C++ 应用中,以提升性能和灵活性。

总结#

本指南介绍了将 Ultralytics YOLO26 模型导出为 TorchScript 格式的流程。按照提供的说明操作,你可以优化 YOLO26 模型的性能,并灵活地将其部署到各种平台和环境中。

如需了解更多用法详情,请访问 TorchScript 官方文档。

此外,如果你想进一步了解其他 Ultralytics YOLO26 集成方案,请访问我们的集成指南页面。页面上有许多实用资源和见解。

常见问题#

  • 将 Ultralytics YOLO26 模型导出为 TorchScript,可以灵活地进行跨平台部署。TorchScript 是 PyTorch 生态系统的一部分,可对模型进行序列化,使其能够在不支持 Python 的环境中运行。因此,它适用于在 C++ 环境中部署模型。

  • 要将 YOLO26 模型导出为 TorchScript,可以使用以下示例代码:

    用法
    from ultralytics import YOLO
    
    # 加载 YOLO26 模型
    model = YOLO("yolo26n.pt")
    
    # 将模型导出为 TorchScript 格式
    model.export(format="torchscript")  # 创建 'yolo26n.torchscript'
    
    # 加载导出的 TorchScript 模型
    torchscript_model = YOLO("yolo26n.torchscript")
    
    # 运行推理
    results = torchscript_model("https://ultralytics.com/images/bus.jpg")

    有关导出流程的更多详情,请参阅 Ultralytics 导出文档。

  • 使用 TorchScript 部署 YOLO26 模型有以下几项优势:

    • 可移植性:导出的模型可以在不使用 Python 的 C++ 应用中运行。
    • 优化:TorchScript 支持静态图执行和即时 (JIT) 编译,有助于优化模型性能。
    • 跨语言集成:TorchScript 模型可以集成到其他编程语言中,增强灵活性和可扩展性。
    • 序列化:模型可以序列化,从而支持与平台无关的加载和推理。

    如需深入了解部署,请访问 TorchServe 文档和 C++ 部署指南。对于移动设备端部署,PyTorch 现在推荐使用 ExecuTorch,它采用独立的 torch.export() → .pte 流程,而非 TorchScript。

  • 要安装导出 YOLO26 模型所需的软件包,请使用以下命令:

    安装
    # Install the required package for YOLO26
    pip install ultralytics

    如需详细说明,请访问 Ultralytics 安装指南。如果安装过程中遇到问题,请参阅常见问题指南。

  • 将 YOLO26 模型导出为 TorchScript 格式后,你可以在各种平台上部署它们:

    • C++ API:在需要低开销、高效率的生产环境中使用 LibTorch。
    • 移动端部署:使用 ExecuTorch,这是 PyTorch 支持的替代方案,具有独立的 .pte 导出流程。
    • 云端部署:使用 TorchServe 等服务进行可扩展的服务器端部署。

    查看这些场景下的全面部署指南,充分发挥 TorchScript 的能力。

评论