Развертывание YOLO26 на мобильных и периферийных устройствах с помощью ExecuTorch
Развертывание моделей компьютерного зрения на периферийных устройствах, таких как смартфоны, планшеты и встроенные системы, требует оптимизированной среды выполнения, которая балансирует производительность и ограничения ресурсов. ExecuTorch, решение PyTorch для периферийных вычислений, обеспечивает эффективный вывод непосредственно на устройстве для моделей Ultralytics YOLO.
В этом руководстве описано, как экспортировать модели Ultralytics YOLO в формат ExecuTorch, что позволит тебе развертывать свои модели на мобильных и периферийных устройствах с оптимизированной производительностью.
Зачем экспортировать в 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-системах с оптимизированной производительностью.
-
Периферийные 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 ты можешь указать следующие аргументы:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'executorch' | Целевой формат для экспортируемой модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для указания конкретных размеров. |
batch | int | 1 | Указывает размер пакетного инференса для экспортированной модели или максимальное количество изображений, которые модель будет обрабатывать одновременно в режиме predict. |
device | str | None | Указывает устройство для экспорта: 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) тебе нужно:
- Добавить среду выполнения ExecuTorch: Включи библиотеку среды выполнения ExecuTorch в свой мобильный проект
- Загрузить модель: Загрузи файл
.pteв свое приложение - Запустить вывод: Обрабатывай изображения и получай предсказания
Пример интеграции для 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) | Время инференса (мс/из) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.4790 | 314.80 |
| YOLO26n | ExecuTorch | ✅ | 9.4 | 0.4800 | 142 |
| YOLO26s | PyTorch | ✅ | 19.5 | 0.5730 | 930.90 |
| YOLO26s | ExecuTorch | ✅ | 36.5 | 0.5780 | 376.1 |
Время вывода не включает предварительную и последующую обработку.
Устранение неполадок
Распространенные проблемы
Issue: Python version error
Решение: ExecuTorch требует Python 3.10 или выше. Обнови установку Python:
# Using conda
conda create -n executorch python=3.10
conda activate executorchIssue: Export fails during first run
Решение: При первом использовании ExecuTorch может потребоваться загрузка и компиляция компонентов. Убедись, что у тебя есть:
pip install --upgrade executorchIssue: 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 для настройки конкретного бэкенда.