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

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

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

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

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

Обзор PyTorch 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 создается каталог, содержащий .pte файл и метаданные. Используйте среду выполнения ExecuTorch в мобильном или встроенном приложении, чтобы загрузить .pte модель и выполнить вывод.

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

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

АргументТипПо умолчаниюОписание
imgszint или list640Размер изображения для ввода модели (высота, ширина)
devicestr'cpu'Устройство, используемое для экспорта ('cpu')

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

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

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

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

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

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

Для мобильных приложенийiOSAndroid) вам потребуется:

  1. Добавьте ExecuTorch Runtime: Включите библиотеку времени выполнения ExecuTorch в свой мобильный проект
  2. Модель нагрузки: Загрузить .pte файл в вашем приложении
  3. Запускайте функцию 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)Время инференса (мс/изобр.)
YOLO11nPyTorch5.40.5060337.67
YOLO11nExecuTorch110.5080167.28
YOLO11sPyTorch190.5770928.80
YOLO11sExecuTorch370.5780388.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 интеграции PyTorch, кроссплатформенной поддержке и оптимизированной производительности ExecuTorch является отличным выбором для приложений ИИ на границах.

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

  • ExecuTorch обеспечивает PyTorch пограничное развертывание с отличной производительностью
  • Экспорт прост с помощью format='executorch' параметр
  • Модели оптимизированы для мобильных процессоров с помощью бэкенда 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 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.



📅 Создано 28 дней назад ✏️ Обновлено 3 дня назад
glenn-jocherLaughing-qlakshanthadambitious-octopus

Комментарии