跳至内容

YOLOv8 将模型导出至TorchScript 以实现快速部署

在不同的环境(包括嵌入式系统、网络浏览器或支持有限的Python 的平台)中部署计算机视觉模型,需要一个灵活、可移植的解决方案。TorchScript 注重可移植性以及在无法使用整个Python 框架的环境中运行模型的能力。因此,它非常适合需要在各种设备或平台上部署计算机视觉功能的场景。

导出到Torchscript 以序列化您的 Ultralytics YOLOv8模型,以实现跨平台兼容性和简化部署。在本指南中,我们将向您展示如何将YOLOv8 模型导出为TorchScript 格式,使您可以更轻松地在更广泛的应用程序中使用这些模型。

为什么要导出到TorchScript ?

Torchscript 概述

TorchScript 由PyTorch 的创建者开发,是在各种平台上优化和部署PyTorch 模型的强大工具。将YOLOv8 模型导出到 TorchScript是将研究成果转化为实际应用的关键。TorchScript作为PyTorch 框架的一部分,它允许在不支持Python 的环境中使用PyTorch 模型,从而使这一过渡更加顺利。

这一过程涉及两种技术:跟踪和脚本。跟踪记录模型执行过程中的操作,而脚本则允许使用Python 的子集来定义模型。这些技术确保YOLOv8 等模型即使在其通常的Python 环境之外也能发挥其魔力。

TorchScript 脚本和跟踪

TorchScript 此外,还可以通过运算符融合和改进内存使用等技术对模型进行优化,确保高效执行。导出到TorchScript 的另一个优势是它可以加速模型在各种硬件平台上的执行。它为PyTorch 模型创建了一个独立的、生产就绪的表示,可以集成到 C++ 环境、嵌入式系统中,或部署到网络或移动应用程序中。

TorchScript 机型的主要特点

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

TorchScript 特点

以下是TorchScript 成为开发人员宝贵工具的主要功能:

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

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

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

  • 跨语言集成:通过TorchScript ,您可以将PyTorch 模型导出为其他语言,如 C++、Java 和 JavaScript。这使PyTorch 模型更容易集成到用不同语言编写的现有软件系统中。

  • 逐步转换:TorchScript 提供了一种逐步转换方法,允许您逐步将PyTorch 模型的部分内容转换为TorchScript 。这种灵活性在处理复杂模型或优化特定部分代码时特别有用。

中的部署选项TorchScript

在了解将YOLOv8 模型导出为TorchScript 格式的代码之前,让我们先了解一下TorchScript 模型通常用于何处。

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

  • C++ API:TorchScript 最常见的用例是其 C++ API,它允许您在 C++ 应用程序中直接加载和执行经过优化的TorchScript 模型。这非常适合于Python 可能不适合或不可用的生产环境。C++ API 可以低开销、高效地执行TorchScript 模型,最大限度地发挥性能潜力。

  • 移动部署:TorchScript 提供将模型转换为可在移动设备上随时部署的格式的工具。PyTorch 移动设备提供了在 iOS 和 Android 应用程序中执行这些模型的运行时。这就实现了低延迟、离线推理功能,增强了用户体验和数据隐私。

  • 云部署:可使用 TorchServe 等解决方案将TorchScript 模型部署到基于云的服务器上。它提供了模型版本化、批处理和指标监控等功能,可在生产环境中进行可扩展的部署。通过TorchScript 进行云部署,可以通过 API 或其他网络服务访问您的模型。

导出到TorchScript :转换您的YOLOv8 模型

将YOLOv8 模型导出到TorchScript 可以更方便地在不同地方使用它们,并帮助它们更快、更高效地运行。这对任何希望在实际应用中更有效地使用深度学习模型的人来说都是一件好事。

安装

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

安装

# Install the required package for YOLOv8
pip install ultralytics

有关安装过程的详细说明和最佳实践,请查阅我们的Ultralytics 安装指南。在安装YOLOv8 所需的软件包时,如果遇到任何困难,请查阅我们的常见问题指南,了解解决方案和技巧。

使用方法

在了解使用说明之前,需要注意的是,虽然Ultralytics YOLOv8 的所有 型号都可以导出,但您可以在此确保您选择的型号支持导出功能。

使用方法

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.pt')

# Export the model to TorchScript format
model.export(format='torchscript')  # creates 'yolov8n.torchscript'

# Load the exported TorchScript model
torchscript_model = YOLO('yolov8n.torchscript')

# Run inference
results = torchscript_model('https://ultralytics.com/images/bus.jpg')
# Export a YOLOv8n PyTorch model to TorchScript format
yolo export model=yolov8n.pt format=torchscript  # creates 'yolov8n.torchscript'

# Run inference with the exported model
yolo predict model=yolov8n.torchscript source='https://ultralytics.com/images/bus.jpg'

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

部署导出的YOLOv8 TorchScript 模型

成功将Ultralytics YOLOv8 模型导出为TorchScript 格式后,现在就可以部署它们了。运行TorchScript 模型的主要和推荐的第一步是使用YOLO("model.torchscript") 方法,如前面的使用代码片段所述。不过,有关在其他各种设置中部署TorchScript 模型的深入说明,请参阅以下资源:

  • 探索移动部署:PyTorch 移动文档为在移动设备上部署模型提供了全面的指导,确保您的应用程序高效、反应灵敏。

  • 主服务器端部署:了解如何使用 TorchServe 在服务器端部署模型,为可扩展的高效模型服务提供分步教程。

  • 实施 C++ 部署:深入学习在 C++ 中加载TorchScript 模型的教程,便于将TorchScript 模型集成到 C++ 应用程序中,从而提高性能和通用性。

摘要

在本指南中,我们探讨了将Ultralytics YOLOv8 模型导出为TorchScript 格式的过程。按照提供的说明,您可以优化YOLOv8 模型的性能,并获得在各种平台和环境中部署这些模型的灵活性。

有关使用的详细信息,请访问TorchScript的官方文档

此外,如果您想了解有关Ultralytics YOLOv8 集成的更多信息,请访问我们的集成指南页面。您将在那里找到大量有用的资源和见解。



创建于 2024-03-01,更新于 2024-03-03
作者:glenn-jocher(1)、abirami-vina(2)

评论