跳转至内容

使用 ExecuTorch 在移动和边缘部署YOLO11

在智能手机、平板电脑和嵌入式系统等边缘设备上部署计算机视觉模型,需要优化运行时,在性能与资源限制之间取得平衡。ExecuTorch是PyTorch为边缘计算提供的解决方案,它能在设备上实现高效推理,用于 Ultralytics YOLO模型的高效设备推理。

本指南概述了如何将Ultralytics YOLO 模型导出为 ExecuTorch 格式,使您能够在移动和边缘设备上部署模型并优化性能。

为什么要导出到 ExecuTorch?

PyTorch ExecuTorch 概览

ExecuTorch是PyTorch的端到端解决方案,用于在移动设备和边缘设备上实现设备推理功能。ExecuTorch 以便携、高效为目标,可用于在各种计算平台上运行PyTorch 程序。

ExecuTorch 的主要功能

ExecuTorch 为在边缘设备上部署Ultralytics YOLO 模型提供了多项强大功能:

  • 便携式模型格式:ExecuTorch 使用 .pte (PyTorch ExecuTorch)格式,该格式在资源有限的设备上对大小和加载速度进行了优化。

  • XNNPACK 后端:与 XNNPACK 的默认集成可在移动 CPU 上提供高度优化的推理,无需专用硬件即可实现卓越性能。

  • 量化支持:内置支持量化技术,以缩小模型大小,提高推理速度,同时保持准确性。

  • 内存效率:优化的内存管理减少了运行时的内存占用,使其适用于内存有限的设备。

  • 模型元数据:导出的模型在单独的 YAML 文件中包含元数据(图像大小、类名等),便于集成。

使用 ExecuTorch 的部署选项

ExecuTorch 模型可在各种边缘和移动平台上部署:

  • 移动应用:在具有本地性能的iOS 和Android 应用程序上部署,实现移动应用程序中的实时对象检测。

  • 嵌入式系统:在嵌入式 Linux 设备(如 Raspberry Pi、NVIDIA Jetson 和其他基于 ARM 的系统)上运行,并优化性能。

  • 边缘人工智能设备:在专门的边缘人工智能硬件上部署,使用定制的委托器进行加速推理。

  • 物联网设备:集成到物联网设备中,无需云连接即可进行设备推理。

将Ultralytics YOLO11 模型导出至 ExecuTorch

将Ultralytics YOLO11 模型转换为 ExecuTorch 格式,可以在移动设备和边缘设备上高效部署。

安装

ExecuTorch 的导出需要Python 3.10 或更高版本以及特定的依赖项:

安装

# Install Ultralytics package
pip install ultralytics

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

用法

将YOLO11 模型导出到 ExecuTorch 非常简单:

用法

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ExecuTorch format
model.export(format="executorch")  # creates 'yolo11n_executorch_model' directory

executorch_model = YOLO("yolo11n_executorch_model")

results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ExecuTorch format
yolo export model=yolo11n.pt format=executorch # creates 'yolo11n_executorch_model' directory

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

导出参数

导出 ExecuTorch 格式时,可以指定以下参数:

参数 类型 默认值 描述
imgsz intlist 640 模型输入的图像尺寸(高、宽)
device str 'cpu' 用于导出的设备 ('cpu')

输出结构

ExecuTorch 导出会创建一个包含模型和元数据的目录:

yolo11n_executorch_model/
├── yolo11n.pte              # ExecuTorch model file
└── metadata.yaml            # Model metadata (classes, image size, etc.)

使用导出的 ExecuTorch 模型

导出模型后,您需要使用 ExecuTorch 运行时将其集成到目标应用程序中。

移动集成

对于移动应用程序iOSAndroid),您需要

  1. 添加 ExecuTorch 运行库:在您的移动项目中加入 ExecuTorch 运行库
  2. 负载模式:加载 .pte 文件
  3. 运行推理处理图像并获得预测结果

iOS 集成示例(Objective-C/C++):

// iOS uses C++ APIs for model loading and inference
// See https://pytorch.org/executorch/stable/using-executorch-ios.html for complete examples

#include <executorch/extension/module/module.h>

using namespace ::executorch::extension;

// Load the model
Module module("/path/to/yolo11n.pte");

// Create input tensor
float input[1 * 3 * 640 * 640];
auto tensor = from_blob(input, {1, 3, 640, 640});

// Run inference
const auto result = module.forward(tensor);

Android 集成示例(Kotlin):

import org.pytorch.executorch.EValue
import org.pytorch.executorch.Module
import org.pytorch.executorch.Tensor

// Load the model
val module = Module.load("/path/to/yolo11n.pte")

// Prepare input tensor
val inputTensor = Tensor.fromBlob(floatData, longArrayOf(1, 3, 640, 640))
val inputEValue = EValue.from(inputTensor)

// Run inference
val outputs = module.forward(inputEValue)
val scores = outputs[0].toTensor().dataAsFloatArray

嵌入式 Linux

对于嵌入式 Linux 系统,请使用 ExecuTorch C++ API:

#include <executorch/extension/module/module.h>

// Load model
auto module = torch::executor::Module("yolo11n.pte");

// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = torch::executor::Tensor(input_data, {1, 3, 640, 640});

// Run inference
auto outputs = module.forward({input_tensor});

有关将 ExecuTorch 集成到您的应用程序中的更多详情,请访问ExecuTorch 文档

性能优化

模型尺寸优化

缩小模型尺寸,以便部署:

  • 使用较小的型号:从占地面积最小的 YOLO11n(纳米)开始
  • 较低的输入分辨率:使用较小的图像尺寸(例如:、 imgsz=320imgsz=416)
  • 量化:应用量化技术(未来的 ExecuTorch 版本将支持该技术)

推理速度优化

为了加快推理速度:

  • XNNPACK 后端默认的 XNNPACK 后端提供优化的CPU 推理功能
  • 硬件加速:使用特定平台的委托(如iOS 的CoreML
  • 批量处理:尽可能处理多个图像

基准测试

Ultralytics 团队对YOLO11 模型进行了基准测试,比较了PyTorch 和 ExecuTorch 的速度和准确性。

性能

模型 格式 状态 大小 (MB) metrics/mAP50-95(B) 推理时间 (ms/im)
YOLO11n PyTorch 5.4 0.5060 337.67
YOLO11n ExecuTorch 11 0.5080 167.28
YOLO11s PyTorch 19 0.5770 928.80
YOLO11s ExecuTorch 37 0.5780 388.31

注意

推理时间不包括预处理/后处理。

故障排除

常见问题

问题: Python version error

解决方案ExecuTorch 需要Python 3.10 或更高版本。升级你的Python 安装:

```bash
# Using conda
conda create -n executorch python=3.10
conda activate executorch
```

问题: Export fails during first run

解决方案:第一次使用 ExecuTorch 时,可能需要下载和编译组件。确保您有

```bash
pip install --upgrade executorch
```

问题: Import errors for ExecuTorch modules

解决方案:确保 ExecuTorch 安装正确:

```bash
pip install executorch --force-reinstall
```

如需更多故障排除帮助,请访问Ultralytics GitHub IssuesExecuTorch 文档

总结

将YOLO11 模型导出为 ExecuTorch 格式,可以在移动设备和边缘设备上高效部署。凭借与PyTorch集成、跨平台支持和优化的性能,ExecuTorch 是边缘人工智能应用的绝佳选择。

主要启示

  • ExecuTorch 提供性能卓越PyTorch边缘部署功能
  • 导出简单 format='executorch' 规范
  • 通过 XNNPACK 后端为移动 CPU 优化模型
  • 支持iOS、Android 和嵌入式 Linux 平台
  • 需要Python 3.10+ 和 FlatBuffers 编译器

常见问题

如何将YOLO11 模型导出为 ExecuTorch 格式?

使用Python 或CLI 将YOLO11 模型导出到 ExecuTorch:

```python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="executorch")
```

```bash
yolo export model=yolo11n.pt format=executorch
```

ExecuTorch export 的系统要求是什么?

ExecuTorch 出口要求

  • Python 3.10 或更高版本
  • executorch 软件包(通过 pip install executorch)
  • PyTorch (随ultralytics 自动安装)

注意:在第一次导出时,ExecuTorch 将自动下载和编译必要的组件,包括 FlatBuffers 编译器。

我能直接在Python 中使用 ExecuTorch 模型进行推理吗?

ExecuTorch 型号 (.pte 文件)设计用于使用 ExecuTorch 运行时在移动设备和边缘设备上部署。它们不能直接用 YOLO() 用于Python 中的推理。您需要使用 ExecuTorch 运行库将它们集成到您的目标应用程序中。

ExecuTorch 支持哪些平台?

ExecuTorch 支持

  • 移动:iOS 和Android
  • 嵌入式 Linux:树莓派、NVIDIA Jetson 和其他 ARM 设备
  • 桌面:Linux、macOS 和 Windows(用于开发)

在移动部署方面,ExecuTorch 与 TFLite 相比如何?

ExecuTorch 和 TFLite 都非常适合移动部署:

  • ExecuTorch:更好地集成PyTorch 、原生PyTorch 工作流程、不断壮大的生态系统
  • TFLite:更成熟、更广泛的硬件支持、更多的部署实例

如果你已经在使用PyTorch 并希望使用本地部署路径,请选择PyTorch 。选择 TFLite,以获得最大的兼容性和成熟的工具。

我可以使用带有GPU 加速功能的 ExecuTorch 模型吗?

是的!ExecuTorch 通过各种后端支持硬件加速:

  • 移动GPU:通过 Vulkan、Metal 或 OpenCL 代表
  • NPU/DSP: 通过特定平台代表
  • 默认值:XNNPACK 用于优化CPU 推理

有关后端具体设置,请参阅ExecuTorch 文档



📅 创建于 0 天前 ✏️ 最近更新 0 天前

评论