Развертывание YOLO11 на мобильных и граничных устройствах с помощью 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, с оптимизированной производительностью.
-
Устройства краевого ИИ: Развертывание на специализированном оборудовании краевого ИИ с пользовательскими делегатами для ускоренного вывода данных.
-
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) вам потребуется:
- Добавьте ExecuTorch Runtime: Включите библиотеку времени выполнения ExecuTorch в свой мобильный проект
- Модель нагрузки: Загрузить
.pte
файл в вашем приложении - Запускайте функцию 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.