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

Развертывание YOLO11 на мобильных и периферийных устройствах с помощью 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 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 можно указать следующие аргументы:

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

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

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

yolo11n_executorch_model/
├── yolo11n.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/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)Время инференса (мс/изобр.)
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, кроссплатформенной поддержке и оптимизированной производительности 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 для получения информации о настройке конкретного бэкенда.



📅 Создано 1 месяц назад ✏️ Обновлено 25 дней назад
glenn-jocherLaughing-qlakshanthadambitious-octopus

Комментарии