Перейти к содержанию

Развертывание YOLO11 на мобильных и граничных устройствах с помощью ExecuTorch

Развертывание моделей компьютерного зрения на периферийных устройствах, таких как смартфоны, планшеты и встраиваемые системы, требует оптимизированной среды выполнения, которая обеспечивает баланс между производительностью и ограниченностью ресурсов. ExecuTorch, решение PyTorch для пограничных вычислений, позволяет эффективно выполнять выводы на устройстве для Ultralytics YOLO модели.

В этом руководстве описано, как экспортировать модели Ultralytics YOLO в формат ExecuTorch, что позволит вам развернуть модели на мобильных и пограничных устройствах с оптимизированной производительностью.

Зачем экспортировать в ExecuTorch?

Обзор PyTorch ExecuTorch

ExecuTorch - это комплексное решение PyTorch, позволяющее выполнять вычисления на мобильных и периферийных устройствах. Созданный с целью обеспечения портативности и эффективности, ExecuTorch может быть использован для запуска программ PyTorch на широком спектре вычислительных платформ.

Ключевые особенности ExecuTorch

ExecuTorch предоставляет несколько мощных функций для развертывания моделей Ultralytics YOLO на пограничных устройствах:

  • Формат переносимой модели: ExecuTorch использует .pte PyTorch ExecuTorch), который оптимизирован по размеру и скорости загрузки на устройствах с ограниченными ресурсами.

  • Бэкэнд XNNPACK: Интеграция с XNNPACK по умолчанию обеспечивает высокую оптимизацию вычислений на мобильных процессорах, обеспечивая отличную производительность без необходимости использования специализированного оборудования.

  • Поддержка квантования: Встроенная поддержка методов квантования для уменьшения размера модели и повышения скорости вычислений при сохранении точности.

  • Эффективность использования памяти: Оптимизированное управление памятью сокращает объем памяти во время выполнения программы, что позволяет использовать ее на устройствах с ограниченным объемом оперативной памяти.

  • Метаданные модели: Экспортируемые модели включают метаданные (размер изображения, названия классов и т. д.) в отдельном файле YAML для упрощения интеграции.

Варианты развертывания с помощью ExecuTorch

Модели ExecuTorch могут быть развернуты на различных пограничных и мобильных платформах:

  • Мобильные приложения: Развертывание на приложениях iOS и Android с собственной производительностью, позволяющее обнаруживать объекты в мобильных приложениях в режиме реального времени.

  • Встраиваемые системы: Работайте на встраиваемых Linux-устройствах, таких как Raspberry Pi, NVIDIA Jetson и других системах на базе ARM, с оптимизированной производительностью.

  • Устройства краевого ИИ: Развертывание на специализированном оборудовании краевого ИИ с пользовательскими делегатами для ускоренного вывода данных.

  • IoT-устройства: Интеграция в IoT-устройства для получения выводов на самом устройстве без необходимости подключения к облаку.

Экспорт моделей 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 int или list 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 Runtime: Включите библиотеку времени выполнения ExecuTorch в свой мобильный проект
  2. Модель нагрузки: Загрузить .pte файл в вашем приложении
  3. Запускайте функцию Inference: Обрабатывайте изображения и получайте предсказания

Пример интеграции 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 (nano) - он занимает меньше всего места.
  • Низкое входное разрешение: Используйте меньшие размеры изображений (например, imgsz=320 или imgsz=416)
  • Квантование: Применение методов квантования (поддерживается в будущих версиях ExecuTorch)

Оптимизация скорости вывода

Для более быстрого вывода:

  • Бэкэнд XNNPACK: Бэкэнд XNNPACK по умолчанию обеспечивает оптимизированный вывод на CPU
  • Аппаратное ускорение: Используйте делегаты для конкретной платформы (например, CoreML для iOS).
  • Пакетная обработка: По возможности обрабатывайте несколько изображений

Оценка производительности

Команда Ultralytics провела бенчмаркинг моделей YOLO11 , сравнив скорость и точность PyTorch и ExecuTorch.

Производительность

Модель Формат Статус Размер (МБ) metrics/mAP50-95(B) Время инференса (мс/изобр.)
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 Issues или документацию ExecuTorch.

Обзор

Экспорт моделей YOLO11 в формат ExecuTorch обеспечивает эффективное развертывание на мобильных и пограничных устройствах. Благодаря PyTorch интеграции PyTorch, кроссплатформенной поддержке и оптимизированной производительности ExecuTorch является отличным выбором для приложений ИИ на границах.

Основные выводы:

  • ExecuTorch обеспечивает PyTorch пограничное развертывание с отличной производительностью
  • Экспорт прост с помощью format='executorch' параметр
  • Модели оптимизированы для мобильных процессоров с помощью бэкенда XNNPACK
  • Поддержка платформ iOS, Android и встроенных платформ Linux.
  • Требуется Python 3.10+ и компилятор FlatBuffers

Часто задаваемые вопросы

Как экспортировать модель YOLO11 в формат ExecuTorch?

Экспортируйте модель YOLO11 в ExecuTorch с помощью Python или CLI:

```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.

Могу ли я проводить расчеты с моделями ExecuTorch непосредственно в Python?

Модели ExecuTorch (.pte файлы) предназначены для развертывания на мобильных и пограничных устройствах с использованием среды выполнения ExecuTorch. Они не могут быть загружены напрямую с помощью YOLO() для выводов в Python. Вам необходимо интегрировать их в целевое приложение с помощью библиотек времени выполнения ExecuTorch.

Какие платформы поддерживает ExecuTorch?

ExecuTorch поддерживает:

  • Мобильные устройства: iOS и Android
  • Встраиваемый Linux: Raspberry Pi, NVIDIA Jetson и другие ARM-устройства
  • Рабочий стол: Linux, macOS и Windows (для разработки)

Чем ExecuTorch отличается от TFLite при мобильном развертывании?

И ExecuTorch, и TFLite отлично подходят для мобильного развертывания:

  • ExecuTorch: Лучшая интеграция с PyTorch , собственный рабочий процесс PyTorch , растущая экосистема
  • TFLite: Более зрелая разработка, более широкая поддержка оборудования, больше примеров развертывания

Выбирайте ExecuTorch, если вы уже используете PyTorch и хотите иметь собственный путь развертывания. Выбирайте TFLite за максимальную совместимость и развитый инструментарий.

Можно ли использовать модели ExecuTorch с ускорением GPU ?

Да! ExecuTorch поддерживает аппаратное ускорение с помощью различных бэкендов:

  • Мобильный GPU: Делегаты Vulkan, Metal или OpenCL
  • NPU/DSP: через делегатов, специфичных для конкретной платформы
  • По умолчанию: XNNPACK для оптимизированных выводов CPU

Для настройки конкретного бэкенда обратитесь к документации ExecuTorch.



📅 Создано 0 дней назад ✏️ Обновлено 0 дней назад

Комментарии