YOLO Vision 2026:

Развертывание YOLO26 на мобильных устройствах и Edge с использованием 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, с оптимизированной производительностью.

  • Edge AI устройства: Развертывай на специализированном аппаратном обеспечении Edge AI с использованием пользовательских делегатов для ускоренного вывода.

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

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

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

ЗадачаYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

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

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

Установка#

Для экспорта в ExecuTorch требуются Python 3.10-3.13 и PyTorch >= 2.9.0, а также пакет executorch:

Установка
# 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'
Предсказание
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 (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 (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

Embedded Linux#

Для систем на базе Embedded 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.

Производительность
МодельФорматСтатусРазмер (МБ)метрики/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 или выше. Обнови свою установку Python:

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

Проблема: Export fails during first run

Решение: Убедись, что у тебя установлен последний предварительно собранный wheel-пакет executorch:

pip install --upgrade executorch

Проблема: Import errors for ExecuTorch modules

Решение: Убедись, что ExecuTorch установлен правильно:

pip install executorch --force-reinstall

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

Резюме#

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

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

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

FAQ#

  • Экспортируй модель 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 или выше
    • пакет executorch (установка через pip install executorch)
    • PyTorch (устанавливается автоматически вместе с ultralytics)

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

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

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

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

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

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

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

    • Mobile GPU: через делегаты Vulkan, Metal или OpenCL
    • NPU/DSP: через платформозависимые делегаты
    • Default: XNNPACK для оптимизированного вывода на CPU

    Обратись к документации ExecuTorch для настройки конкретного бэкенда.

Комментарии