Развертывание YOLO11 на мобильных и периферийных устройствах с помощью ExecuTorch
Развертывание моделей компьютерного зрения на периферийных устройствах, таких как смартфоны, планшеты и встроенные системы, требует оптимизированной среды выполнения, которая обеспечивает баланс между производительностью и ограничениями ресурсов. ExecuTorch, решение PyTorch для периферийных вычислений, обеспечивает эффективный вывод на устройстве для моделей Ultralytics YOLO.
В этом руководстве описывается, как экспортировать модели Ultralytics YOLO в формат ExecuTorch, что позволяет развертывать ваши модели на мобильных и периферийных устройствах с оптимизированной производительностью.
Зачем экспортировать в 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 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 создает каталог, который включает в себя .pte file и метаданные. Используйте среду выполнения ExecuTorch в своем мобильном или встроенном приложении, чтобы загрузить .pte model и выполнить вывод.
Аргументы экспорта
При экспорте в формат 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.
Интеграция с мобильными устройствами
Для мобильных приложений (iOS/Android) вам необходимо:
- Добавить ExecuTorch Runtime: Включите библиотеку ExecuTorch runtime в свой мобильный проект
- Загрузка модели: Загрузите
.ptefile в вашем приложении - Запуск вывода: Обработка изображений и получение прогнозов
Пример интеграции с 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)
Оптимизация скорости инференса
Для более быстрого inference:
- Бэкенд XNNPACK: Бэкенд XNNPACK по умолчанию обеспечивает оптимизированный вывод на CPU.
- Аппаратное ускорение: Используйте специфичные для платформы delegates (например, 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:
# 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.
Обзор
Экспорт моделей YOLO11 в формат ExecuTorch обеспечивает эффективное развертывание на мобильных и периферийных устройствах. Благодаря встроенной интеграции PyTorch, кроссплатформенной поддержке и оптимизированной производительности ExecuTorch является отличным выбором для периферийных AI-приложений.
Основные выводы:
- ExecuTorch предоставляет встроенное в PyTorch развертывание на периферийных устройствах с отличной производительностью
- Экспорт прост с
format='executorch'параметр - Модели оптимизированы для мобильных CPU через бэкенд XNNPACK
- Поддержка платформ iOS, Android и встроенных систем Linux
- Требуется python 3.10+ и компилятор FlatBuffers
Часто задаваемые вопросы
Как экспортировать модель YOLO11 в формат ExecuTorch?
Экспортируйте модель YOLO11 в ExecuTorch с помощью Python или CLI:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="executorch")
или
yolo export model=yolo11n.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 для получения информации о настройке конкретного бэкенда.