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

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

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

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

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

Фреймворк PyTorch ExecuTorch для мобильного инференса

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

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

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

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

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

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

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

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

Варианты развертывания с ExecuTorch

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

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

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

  • Edge AI устройства: Развертывание на специализированном Edge 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")
# Export a YOLO26n PyTorch model to ExecuTorch format
yolo export model=yolo26n.pt format=executorch # creates 'yolo26n_executorch_model' directory

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

Экспорт в ExecuTorch создает каталог, который включает в себя .pte file и метаданные. Используйте среду выполнения ExecuTorch в своем мобильном или встроенном приложении, чтобы загрузить .pte model и выполнить вывод.

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

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

АргументТипПо умолчаниюОписание
formatstr'executorch'Целевой формат для экспортируемой модели, определяющий совместимость с различными средами развертывания.
imgszint или tuple640Желаемый размер изображения для ввода модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для конкретных размеров.
batchint1Указывает размер пакета для модели экспорта или максимальное количество изображений, которые экспортируемая модель будет обрабатывать одновременно в режиме predict режиме.
devicestrNoneУказывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (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 Runtime: Включите библиотеку ExecuTorch runtime в свой мобильный проект
  2. Загрузка модели: Загрузите .pte file в вашем приложении
  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 используйте ExecuTorch C++ API:

#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)

Оптимизация скорости инференса

Для более быстрого inference:

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

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

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

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

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

Протестировано с Ultralytics 8.4.9

Примечание

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

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

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

Проблема: Python version error

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

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

Проблема: Export fails during first run

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

pip install --upgrade executorch

Проблема: Import errors for ExecuTorch modules

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

pip install executorch --force-reinstall

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

Обзор

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

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

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

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

Как экспортировать модель 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 files) предназначены для развертывания на мобильных и периферийных устройствах с использованием среды выполнения ExecuTorch. Их нельзя загружать напрямую с помощью YOLO() для инференса в python. Вам необходимо интегрировать их в целевое приложение, используя библиотеки времени выполнения ExecuTorch.

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

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

  • Мобильные устройства: iOS и Android
  • Embedded 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 delegates
  • NPU/DSP: Через платформо-специфичные делегаты
  • По умолчанию: XNNPACK для оптимизированного вывода на CPU

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



📅 Создано 6 месяцев назад ✏️ Обновлено 16 дней назад
glenn-jocherraimbekovmlakshanthadLaughing-qambitious-octopus

Комментарии