Ultralytics YOLO27:

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

PyTorch 正在弃用 TorchScript

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

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

将你的 Ultralytics YOLO26 模型导出为 TorchScript,以实现跨平台兼容和简化部署。在本指南中,我们将介绍如何将你的 YOLO26 模型导出为 TorchScript 格式,帮助你在更广泛的应用中使用这些模型。

为什么要导出为 TorchScript?#

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

TorchScript 由 PyTorch 的创建者开发,是一款功能强大的工具,可用于在各种平台上优化和部署 PyTorch 模型。将 YOLO26 模型导出为 TorchScript,对于将研究成果转化为实际应用至关重要。TorchScript 是 PyTorch 框架的一部分,可让 PyTorch 模型在不支持 Python 的环境中运行,从而帮助顺利完成这一转变。

这一过程涉及两种技术:跟踪和脚本化。跟踪会记录模型执行期间的操作,而脚本化允许使用 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 的替代方案。

  • 云端部署: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 格式支持 ExportPredictValidate 模式。导出模型,然后加载导出的模型以运行推理或验证其准确性。

导出
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to TorchScript format
model.export(format="torchscript")  # creates 'yolo26n.torchscript'
Predict
from ultralytics import YOLO

# Load the exported TorchScript model
model = YOLO("yolo26n.torchscript")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

# Load the exported TorchScript model
model = YOLO("yolo26n.torchscript")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

导出参数#

参数类型默认值描述
formatstr'torchscript'导出模型的目标格式,用于定义其与各种部署环境的兼容性。
imgszinttuple640模型输入所需的图像尺寸。可以使用表示正方形图像的整数,也可以使用元组 (height, width) 指定具体尺寸。
dynamicboolFalse允许使用动态输入尺寸,从而提高处理不同图像尺寸时的灵活性。
quantizeintstrNone量化精度: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 silicon 的 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
    
    # Load a YOLO26 model
    model = YOLO("yolo26n.pt")
    
    # Export the model to TorchScript format
    model.export(format="torchscript")  # creates 'yolo26n.torchscript'
    
    # Load the exported TorchScript model
    torchscript_model = YOLO("yolo26n.torchscript")
    
    # Run inference
    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 的功能。

评论