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.

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

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

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

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

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

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

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

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

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

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

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

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

Установка#

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

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

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

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

Экспорт моделей YOLO26 в ExecuTorch — простая задача:

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

Экспорт
from ultralytics import YOLO

# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")

# Экспортируй модель в формат ExecuTorch
model.export(format="executorch")  # creates 'yolo26n_executorch_model'
Предсказание
from ultralytics import YOLO

# Загрузи экспортированную модель ExecuTorch
model = YOLO("yolo26n_executorch_model")

# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")
Проверка
from ultralytics import YOLO

# Загрузи экспортированную модель ExecuTorch
model = YOLO("yolo26n_executorch_model")

# Проверить точность на наборе данных COCO8
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#

Добавь AAR ExecuTorch для Android из 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 используй API ExecuTorch для C++:

#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 вне Ultralytics (экспорт Ultralytics в ExecuTorch поддерживает только FP32)

Оптимизация скорости инференса#

Чтобы ускорить инференс:

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

Бенчмарки#

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

Производительность
МодельФорматСтатусРазмер (МБ)metrics/mAP50-95(B)Время инференса (мс/изобр.)
YOLO26nPyTorch✅5.30.4790314.80
YOLO26nExecuTorch✅9.40.4800142
YOLO26sPyTorch✅19.50.5730930.90
YOLO26sExecuTorch✅36.50.5780376.1
Примечание

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

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

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

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

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

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

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

Итоги#

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

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

  • ExecuTorch обеспечивает развертывание на периферийных устройствах с нативной поддержкой PyTorch и высокой производительностью
  • Экспорт выполняется просто с параметром format='executorch'
  • Модели оптимизированы для мобильных CPU с помощью бэкенда XNNPACK
  • Поддерживаются платформы iOS, Android и встраиваемый Linux
  • Требуются Python 3.10–3.14 и 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.14
    • пакет 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.

Комментарии