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

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

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

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

PyTorch ExecuTorch mobile inference framework

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-системах с оптимизированной производительностью.

  • Периферийные AI-устройства: Развертывай на специализированном периферийном AI-оборудовании с пользовательскими делегатами для ускоренного вывода.

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

Экспорт моделей Ultralytics YOLO26 в ExecuTorch

Преобразование моделей Ultralytics YOLO26 в формат ExecuTorch обеспечивает эффективное развертывание на мобильных и периферийных устройствах.

Установка

Для экспорта в ExecuTorch требуется Python 3.10 или выше и определенные зависимости:

Установка
# Install Ultralytics package
pip install ultralytics

Для получения подробных инструкций и рекомендаций по процессу установки ознакомься с нашим Руководством по установке YOLO26. Если при установке необходимых пакетов для YOLO26 у тебя возникнут трудности, обратись к нашему Руководству по распространенным проблемам за решениями и советами.

Использование

Экспорт моделей YOLO26 в ExecuTorch выполняется просто:

Использование
from ultralytics import YOLO

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

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

# Load the exported ExecuTorch model
executorch_model = YOLO("yolo26n_executorch_model")

# Run inference on a single image
results = executorch_model.predict("https://ultralytics.com/images/bus.jpg")

При экспорте в ExecuTorch создается каталог, содержащий файл .pte и метаданные. Используй среду выполнения ExecuTorch в своем мобильном или встроенном приложении для загрузки модели .pte и выполнения вывода.

Аргументы экспорта

При экспорте в формат ExecuTorch ты можешь указать следующие аргументы:

АргументТипПо умолчаниюОписание
formatstr'executorch'Целевой формат для экспортируемой модели, определяющий совместимость с различными средами развертывания.
imgszint или tuple640Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для указания конкретных размеров.
batchint1Указывает размер пакетного инференса для экспортированной модели или максимальное количество изображений, которые модель будет обрабатывать одновременно в режиме predict.
devicestrNoneУказывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для процессоров Apple (device=mps).

Структура вывода

Экспорт в ExecuTorch создает каталог, содержащий модель и метаданные:

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

Использование экспортированных моделей ExecuTorch

После экспорта модели тебе нужно интегрировать её в целевое приложение, используя среду выполнения ExecuTorch.

Мобильная интеграция

Для мобильных приложений (iOS/Android) тебе нужно:

  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/yolo26n.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/yolo26n.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 используй C++ API ExecuTorch:

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

// Load model
auto module = torch::executor::Module("yolo26n.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.

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

Оптимизация размера модели

Чтобы уменьшить размер модели для развертывания:

  • Используй меньшие модели: Начни с YOLO26n (nano) для минимальных требований к ресурсам
  • Снизь разрешение входных данных: Используй меньшие размеры изображений (например, imgsz=320 или imgsz=416)
  • Квантование: Применяй методы квантования (поддерживаются в будущих версиях ExecuTorch)

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

Для ускорения вывода:

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

Бенчмарки

Команда Ultralytics провела тестирование моделей YOLO26, сравнив скорость и точность между PyTorch и ExecuTorch.

Производительность
МодельФорматСтатусРазмер (МБ)метрики/mAP50-95(B)Время инференса (мс/из)
YOLO26nPyTorch5.30.4790314.80
YOLO26nExecuTorch9.40.4800142
YOLO26sPyTorch19.50.5730930.90
YOLO26sExecuTorch36.50.5780376.1
Примечание

Время вывода не включает предварительную и последующую обработку.

Устранение неполадок

Распространенные проблемы

Issue: Python version error

Решение: ExecuTorch требует Python 3.10 или выше. Обнови установку Python:

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

Issue: Export fails during first run

Решение: При первом использовании ExecuTorch может потребоваться загрузка и компиляция компонентов. Убедись, что у тебя есть:

pip install --upgrade executorch

Issue: Import errors for ExecuTorch modules

Решение: Убедись, что ExecuTorch установлен правильно:

pip install executorch --force-reinstall

За дополнительной помощью по устранению неполадок обращайся к GitHub Issues Ultralytics или Документации ExecuTorch.

Резюме

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

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

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

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

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

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

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="executorch")

или

yolo export model=yolo26n.pt format=executorch

Каковы системные требования для экспорта в ExecuTorch?

Экспорт в 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 для настройки конкретного бэкенда.

Комментарии