YOLO11 模型导出为 TorchScript 以实现快速部署
在不同的环境中部署计算机视觉模型,包括嵌入式系统、Web 浏览器或 Python 支持有限的平台,需要灵活且可移植的解决方案。TorchScript 专注于可移植性以及在无法使用整个 Python 框架的环境中运行模型的能力。这使其非常适合需要在各种设备或平台上部署计算机视觉功能的场景。
导出到 TorchScript 以序列化您的 Ultralytics YOLO11 模型,从而实现跨平台兼容性和简化的部署。在本指南中,我们将向您展示如何将 YOLO11 模型导出为 TorchScript 格式,从而更轻松地在更广泛的应用程序中使用它们。
为什么要导出到 TorchScript?
TorchScript 由 PyTorch 的创建者开发,是一个强大的工具,用于优化和部署各种平台上的 PyTorch 模型。将 YOLO11 模型导出到 TorchScript 对于从研究转向实际应用至关重要。TorchScript 是 PyTorch 框架的一部分,通过允许在不支持 Python 的环境中使用 PyTorch 模型,有助于使这种过渡更加顺畅。
该过程涉及两种技术:tracing 和 scripting。Tracing 记录模型执行期间的操作,而 scripting 允许使用 Python 的子集来定义模型。这些技术确保即使在 YOLO11 常规 Python 环境之外,它仍然可以发挥作用。
TorchScript 模型还可以通过诸如算子融合和内存使用优化等技术进行优化,从而确保高效执行。导出到 TorchScript 的另一个优势是它有可能加速各种硬件平台上的模型执行。它创建了 PyTorch 模型的独立、可用于生产环境的表示,可以集成到 C++ 环境、嵌入式系统或部署在 Web 或移动应用程序中。
TorchScript 模型的主要功能
TorchScript 是 PyTorch 生态系统的重要组成部分,为优化和部署深度学习模型提供了强大的功能。
以下是使 TorchScript 成为开发人员有价值的工具的关键特性:
-
静态图执行:TorchScript 使用模型计算的静态图表示,这与 PyTorch 的动态图执行不同。在静态图执行中,计算图在实际执行之前被定义和编译一次,从而提高了推理期间的性能。
-
模型序列化:TorchScript 允许您将 PyTorch 模型序列化为平台无关的格式。序列化模型可以在不需要原始 Python 代码的情况下加载,从而可以在不同的运行时环境中进行部署。
-
JIT 编译:TorchScript 使用即时 (JIT) 编译将 PyTorch 模型转换为优化的中间表示。JIT 编译模型的计算图,从而可以在目标设备上高效执行。
-
跨语言集成:使用 TorchScript,您可以将 PyTorch 模型导出到其他语言,例如 C++、Java 和 JavaScript。这使得将 PyTorch 模型集成到以不同语言编写的现有软件系统中变得更加容易。
-
渐进式转换:TorchScript 提供了一种渐进式转换方法,允许您逐步将 PyTorch 模型的各个部分转换为 TorchScript。当处理复杂的模型或想要优化代码的特定部分时,这种灵活性特别有用。
TorchScript 中的部署选项
在我们查看将 YOLO11 模型导出为 TorchScript 格式的代码之前,让我们了解一下 TorchScript 模型通常在哪些地方使用。
TorchScript 为机器学习模型提供了各种部署选项,例如:
-
C++ API:TorchScript 最常见的用例是其 C++ API,它允许您直接在 C++ 应用程序中加载和执行优化的 TorchScript 模型。这非常适合 Python 可能不合适或不可用的生产环境。C++ API 提供低开销和高效的 TorchScript 模型执行,从而最大限度地提高性能潜力。
-
移动部署:TorchScript 提供了用于将模型转换为可在移动设备上轻松部署的格式的工具。PyTorch Mobile 提供了一个运行时,用于在 iOS 和 Android 应用程序中执行这些模型。这实现了低延迟、离线推理能力,从而增强了用户体验和数据隐私。
-
云部署:TorchScript 模型可以使用 TorchServe 等解决方案部署到基于云的服务器。它提供了模型版本控制、批处理和指标监控等功能,用于在生产环境中进行可扩展的部署。使用 TorchScript 进行云部署可以使您的模型可以通过 API 或其他 Web 服务访问。
导出到 TorchScript:转换您的 YOLO11 模型
将 YOLO11 模型导出到 TorchScript 可以更轻松地在不同的地方使用它们,并有助于它们更快、更高效地运行。这对于希望在实际应用中更有效地使用深度学习模型的任何人来说都是非常棒的。
安装
要安装所需的软件包,请运行:
安装
# Install the required package for YOLO11
pip install ultralytics
有关安装过程的详细说明和最佳实践,请查看我们的 Ultralytics 安装指南。如果在为 YOLO11 安装所需软件包时遇到任何困难,请查阅我们的 常见问题指南以获取解决方案和提示。
用法
所有Ultralytics YOLO11 模型都设计为支持开箱即用的导出,从而可以轻松地将其集成到您首选的部署工作流程中。您可以查看支持的导出格式和配置选项的完整列表,以选择最适合您应用程序的设置。
用法
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TorchScript format
model.export(format="torchscript") # creates 'yolo11n.torchscript'
# Load the exported TorchScript model
torchscript_model = YOLO("yolo11n.torchscript")
# Run inference
results = torchscript_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TorchScript format
yolo export model=yolo11n.pt format=torchscript # creates 'yolo11n.torchscript'
# Run inference with the exported model
yolo predict model=yolo11n.torchscript source='https://ultralytics.com/images/bus.jpg'
导出参数
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
format |
str |
'torchscript' |
导出模型的目标格式,定义与各种部署环境的兼容性。 |
imgsz |
int 或 tuple |
640 |
模型输入的所需图像大小。 可以是正方形图像的整数或元组 (height, width) 用于指定特定维度。 |
dynamic |
bool |
False |
允许动态输入大小,从而增强了处理不同图像尺寸的灵活性。 |
optimize |
bool |
False |
应用针对移动设备的优化,可能会减小模型大小并提高性能。 |
nms |
bool |
False |
添加非极大值抑制 (NMS),这对于准确高效的检测后处理至关重要。 |
batch |
int |
1 |
指定导出模型批处理推理大小或导出模型将并发处理的最大图像数量,在 predict 模式下。 |
device |
str |
None |
指定导出设备:GPU (device=0 ),CPU(device=cpu ),适用于 Apple 芯片的 MPS(device=mps )。 |
有关导出过程的更多详细信息,请访问Ultralytics 文档页面上的导出。
部署导出的 YOLO11 TorchScript 模型
在成功将 Ultralytics YOLO11 模型导出为 TorchScript 格式后,您现在可以部署它们。运行 TorchScript 模型的主要和推荐的第一步是利用 YOLO("model.torchscript") 方法,如前面的用法代码片段中所述。但是,有关在各种其他设置中部署 TorchScript 模型的深入说明,请查看以下资源:
-
掌握服务器端部署:了解如何使用 TorchServe 在服务器端部署模型,提供可扩展、高效模型服务的循序渐进的教程。
-
实施 C++ 部署:深入研究在 C++ 中加载 TorchScript 模型的教程,从而促进将您的 TorchScript 模型集成到 C++ 应用程序中,以增强性能和多功能性。
总结
在本指南中,我们探讨了将 Ultralytics YOLO11 模型导出为 TorchScript 格式的过程。通过遵循所提供的说明,您可以优化 YOLO11 模型的性能,并灵活地将其部署到各种平台和环境中。
有关使用详情,请访问 TorchScript 官方文档。
此外,如果您想了解更多关于 Ultralytics YOLO11 集成的信息,请访问我们的集成指南页面。您将在那里找到大量有用的资源和见解。
常见问题
什么是 Ultralytics YOLO11 模型导出到 TorchScript?
将 Ultralytics YOLO11 模型导出到 TorchScript 可以实现灵活的跨平台部署。TorchScript 是 PyTorch 生态系统的一部分,有助于模型的序列化,然后可以在缺少 Python 支持的环境中执行。这使其非常适合在嵌入式系统、C++ 环境、移动应用程序甚至 Web 浏览器上部署模型。导出到 TorchScript 可以提高 YOLO11 模型在各种平台上的高效性能和更广泛的适用性。
如何使用 Ultralytics 将我的 YOLO11 模型导出到 TorchScript?
要将 YOLO11 模型导出到 TorchScript,您可以使用以下示例代码:
用法
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TorchScript format
model.export(format="torchscript") # creates 'yolo11n.torchscript'
# Load the exported TorchScript model
torchscript_model = YOLO("yolo11n.torchscript")
# Run inference
results = torchscript_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TorchScript format
yolo export model=yolo11n.pt format=torchscript # creates 'yolo11n.torchscript'
# Run inference with the exported model
yolo predict model=yolo11n.torchscript source='https://ultralytics.com/images/bus.jpg'
有关导出过程的更多详细信息,请参阅 Ultralytics 关于导出的文档。
为什么我应该使用 TorchScript 部署 YOLO11 模型?
使用 TorchScript 部署 YOLO11 模型具有以下几个优点:
- 可移植性:导出的模型可以在不需要 python 的环境中运行,例如 C++ 应用程序、嵌入式系统或移动设备。
- 优化:TorchScript 支持静态图执行和即时 (JIT) 编译,从而可以优化模型性能。
- 跨语言集成:TorchScript 模型可以集成到其他编程语言中,从而增强了灵活性和可扩展性。
- 序列化:模型可以序列化,从而允许独立于平台的加载和推理。
有关部署的更多见解,请访问 PyTorch Mobile 文档、TorchServe 文档 和 C++ 部署指南。
将 YOLO11 模型导出到 TorchScript 的安装步骤是什么?
要安装导出 YOLO11 模型所需的软件包,请使用以下命令:
安装
# Install the required package for YOLO11
pip install ultralytics
有关详细说明,请访问 Ultralytics 安装指南。如果在安装过程中出现任何问题,请查阅常见问题指南。
如何部署我导出的 TorchScript YOLO11 模型?
将 YOLO11 模型导出为 TorchScript 格式后,您可以将它们部署到各种平台:
- C++ API:非常适合低开销、高效的生产环境。
- 移动部署:将 PyTorch Mobile 用于 iOS 和 Android 应用程序。
- 云部署:利用 TorchServe 等服务进行可扩展的服务器端部署。
探索在这些设置中部署模型的综合指南,以充分利用 TorchScript 的功能。