Ultralytics YOLO27:

Развёртывание YOLO26 на мобильных и периферийных устройствах с ExecuTorch#

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

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

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

PyTorch ExecuTorch mobile inference framework

ExecuTorch — комплексное решение PyTorch для реализации возможностей вывода непосредственно на устройстве на мобильных и периферийных устройствах. ExecuTorch создан с учётом портативности и эффективности и позволяет запускать программы PyTorch на широком спектре вычислительных платформ.

Ключевые возможности ExecuTorch#

ExecuTorch предоставляет несколько мощных возможностей для развёртывания моделей Ultralytics YOLO на периферийных устройствах:

  • Портативный формат модели: ExecuTorch использует формат .pte (PyTorch ExecuTorch), оптимизированный по размеру и скорости загрузки для устройств с ограниченными ресурсами.

  • Бэкенд XNNPACK: интеграция с XNNPACK по умолчанию обеспечивает высокооптимизированный вывод на мобильных CPU и высокую производительность без специализированного оборудования.

  • Готовность к квантованию: экосистема ExecuTorch поддерживает методы квантования для уменьшения размера модели и повышения скорости вывода; в настоящее время Ultralytics экспортирует модели FP32 через бэкенд XNNPACK.

  • Эффективное использование памяти: оптимизированное управление памятью уменьшает объём памяти, используемый во время выполнения, что делает решение подходящим для устройств с ограниченным объёмом RAM.

  • Метаданные модели: экспортированные модели содержат метаданные (размер изображения, названия классов и т. д.) в отдельном YAML-файле для удобной интеграции.

Варианты развёртывания с ExecuTorch#

Модели ExecuTorch можно развёртывать на различных периферийных и мобильных платформах:

  • Мобильные приложения: развёртывание в приложениях для iOS и Android с нативной производительностью, обеспечивающее обнаружение объектов в реальном времени в мобильных приложениях.

  • Встраиваемые системы: запуск на устройствах со встраиваемым Linux, таких как Raspberry Pi, NVIDIA Jetson и другие системы на базе ARM, с оптимизированной производительностью.

  • Периферийные устройства AI: развёртывание на специализированном оборудовании для периферийного AI с пользовательскими делегатами для ускоренного вывода.

  • Устройства IoT: интеграция в устройства IoT для выполнения вывода непосредственно на устройстве без необходимости подключения к облаку.

Поддерживаемые задачи#

Экспорт ExecuTorch поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе, поставляемом с этими головами.

Экспорт моделей Ultralytics YOLO26 в ExecuTorch#

Преобразование моделей Ultralytics YOLO26 в формат ExecuTorch обеспечивает эффективное развёртывание на мобильных и периферийных устройствах.

Установка#

Для экспорта в ExecuTorch требуются Python 3.10-3.13 и PyTorch >= 2.9.0. Ultralytics устанавливает совместимый пакет executorch при экспорте или загрузке модели ExecuTorch с жесткой привязкой к executorch<1.5 на версиях PyTorch старше 2.13, поэтому не обновляй его вручную.

Установка
# Install Ultralytics package
pip install ultralytics

Подробные инструкции и рекомендации по процессу установки см. в нашем руководстве по установке YOLO26. Если при установке необходимых пакетов для YOLO26 возникнут трудности, обратитесь к нашему руководству по распространённым проблемам, где приведены решения и советы.

Использование#

Экспорт моделей YOLO26 в ExecuTorch выполняется просто:

Формат ExecuTorch поддерживает режимы Export, Predict и Validate. Экспортируй модель, затем загрузи экспортированную модель, чтобы выполнить вывод или проверить её точность.

Экспорт
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to ExecuTorch format
model.export(format="executorch")  # creates 'yolo26n_executorch_model'
Predict
from ultralytics import YOLO

# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Валидация
from ultralytics import YOLO

# Load the exported ExecuTorch model
model = YOLO("yolo26n_executorch_model")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

При экспорте в ExecuTorch создаётся каталог, содержащий файл .pte и метаданные. Используй среду выполнения ExecuTorch в мобильном или встраиваемом приложении, чтобы загрузить модель .pte и выполнить вывод.

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

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

АргументТипПо умолчаниюОписание
formatstr'executorch'Целевой формат экспортированной модели, определяющий совместимость с различными средами развёртывания.
imgszint или tuple640Требуемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для указания конкретных размеров.
quantizeint или strNoneФиксированный экспорт FP32. Экспорт ExecuTorch не поддерживает преобразование точности FP16, INT8 или W8A16 во время экспорта.
batchint1Задаёт размер пакета при инференсе экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict.
devicestrNoneУказывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps).

Структура выходных данных#

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

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

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

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

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

Для мобильных приложений (iOS/Android) тебе потребуется:

  1. Добавить среду выполнения ExecuTorch: подключить библиотеку среды выполнения ExecuTorch к мобильному проекту
  2. Загрузить модель: загрузить файл .pte в приложение
  3. Выполнить вывод: обработать изображения и получить предсказания

iOS#

Пример интеграции с 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/model.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#

Добавь ExecuTorch Android AAR из Maven Central:

dependencies {
    implementation("org.pytorch:executorch-android:<version>")
}

Пример интеграции с 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/model.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>
#include <executorch/extension/tensor/tensor.h>

using namespace ::executorch::extension;

// Load model
Module module("model.pte");

// Prepare input
std::vector<float> input_data = preprocessImage(image);
auto input_tensor = from_blob(input_data.data(), {1, 3, 640, 640});

// Run inference
const auto outputs = module.forward(input_tensor);

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

Оптимизация производительности#

Оптимизация размера модели#

Чтобы уменьшить размер модели для развёртывания:

  • Используй модели меньшего размера: начни с YOLO26n (nano), чтобы минимизировать занимаемое пространство
  • Уменьши разрешение входных данных: используй изображения меньшего размера (например, imgsz=320 или imgsz=416)
  • Квантование: применяй методы квантования (поддержка появится в будущих версиях ExecuTorch)

Оптимизация скорости вывода#

Для ускорения вывода:

  • Бэкенд XNNPACK: бэкенд XNNPACK по умолчанию обеспечивает оптимизированный вывод на CPU
  • Аппаратное ускорение: используй платформенные делегаты (например, CoreML для iOS)
  • Пакетная обработка: обрабатывай несколько изображений, когда это возможно

Бенчмарки#

Команда Ultralytics протестировала модели YOLO26, сравнив скорость и точность в PyTorch и ExecuTorch.

Производительность
МодельФорматСтатусРазмер (МБ)metrics/mAP50-95(B)Время инференции (мс/изображение)
YOLO26nPyTorch5.30.4790314.80
YOLO26nExecuTorch9.40.4800142
YOLO26sPyTorch19.50.5730930.90
YOLO26sExecuTorch36.50.5780376.1
Примечание

Время инференции не включает предварительную и последующую обработку.

Устранение неполадок#

Распространённые проблемы#

Проблема: Python version error

Решение: ExecuTorch требует Python с версии 3.10 по 3.13. Создай окружение с поддерживаемой версией:

# Using conda
conda create -n executorch python=3.10
conda activate executorch

Дополнительную помощь в устранении неполадок см. в разделе проблем Ultralytics на GitHub или в документации ExecuTorch.

Итоги#

Экспорт моделей YOLO26 в формат ExecuTorch обеспечивает эффективное развёртывание на мобильных и периферийных устройствах. Благодаря нативной интеграции с PyTorch, кроссплатформенной поддержке и оптимизированной производительности ExecuTorch отлично подходит для периферийных AI-приложений.

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

  • ExecuTorch обеспечивает развёртывание на периферийных устройствах с нативной поддержкой PyTorch и отличной производительностью
  • Экспорт выполняется просто с параметром format='executorch'
  • Модели оптимизированы для мобильных CPU с помощью бэкенда XNNPACK
  • Поддерживаются платформы iOS, Android и встраиваемый Linux
  • Требуются Python 3.10–3.13 и PyTorch >= 2.9.0

Часто задаваемые вопросы#

  • Экспортируй модель YOLO26 в ExecuTorch с помощью Python или CLI:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="executorch")

    или

    yolo export model=yolo26n.pt format=executorch
  • Для экспорта в ExecuTorch требуются:

    • Python с версии 3.10 по 3.13
    • Пакет executorch, устанавливаемый автоматически (executorch<1.5 на версиях PyTorch старше 2.13, которые не поддерживаются более новыми средами выполнения ExecuTorch)
    • PyTorch (устанавливается автоматически вместе с ultralytics)

    Примечание: пакет executorch поставляется с предварительно собранными колёсами (с бэкендом XNNPACK), поэтому во время экспорта дополнительная компиляция не требуется.

  • Модели ExecuTorch можно напрямую загружать с помощью YOLO() для вывода и валидации в Python (см. приведённые выше примеры Predict/Validate), а также развёртывать на мобильных и периферийных устройствах с использованием библиотек среды выполнения ExecuTorch.

  • ExecuTorch поддерживает:

    • Мобильные устройства: iOS и Android
    • Встраиваемый Linux: Raspberry Pi, NVIDIA Jetson и другие устройства ARM
    • Настольные системы: Linux, macOS и Windows (для разработки)
  • И ExecuTorch, и LiteRT отлично подходят для мобильного развёртывания:

    • ExecuTorch: лучшая интеграция с PyTorch, нативный рабочий процесс PyTorch, развивающаяся экосистема
    • LiteRT: более зрелое решение, более широкая поддержка оборудования, больше примеров развёртывания и запуск одной и той же модели на Android, iOS и в браузере

    Выбирай ExecuTorch, если уже используешь PyTorch и хочешь нативный путь развёртывания. Выбирай LiteRT для максимальной совместимости и зрелых инструментов.

  • Да! ExecuTorch поддерживает аппаратное ускорение через различные бэкенды:

    • Мобильный GPU: через делегаты Vulkan, Metal или OpenCL
    • NPU/DSP: через платформенные делегаты
    • По умолчанию: XNNPACK для оптимизированного вывода на CPU

    Настройки для конкретных бэкендов см. в документации ExecuTorch.

Комментарии