YOLO Vision 2026:

Экспорт моделей YOLO26 в формат ONNX#

~43% прирост скорости вывода.
  • Экспорт модели Ultralytics YOLO26 в ONNX может обеспечить до 43% прироста скорости вывода, что позволяет ускорить и оптимизировать развертывание.

Часто при развертывании моделей computer vision тебе нужен формат модели, который является одновременно гибким и совместимым с несколькими платформами.

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



Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀

ONNX и ONNX Runtime#

ONNX, что расшифровывается как Open Neural Network Exchange, — это общественный проект, первоначально разработанный Facebook и Microsoft. Дальнейшая разработка ONNX представляет собой совместные усилия, поддерживаемые различными организациями, такими как IBM, Amazon (через AWS) и Google. Проект нацелен на создание открытого формата файлов, предназначенного для представления моделей machine learning таким образом, чтобы их можно было использовать в различных фреймворках ИИ и на различном аппаратном обеспечении.

Модели ONNX можно использовать для бесшовного перехода между различными фреймворками. Например, модель deep learning, обученная в PyTorch, может быть экспортирована в формат ONNX, а затем легко импортирована в TensorFlow.

ONNX model portability across deep learning frameworks

В качестве альтернативы модели ONNX можно использовать с ONNX Runtime. ONNX Runtime — это универсальный кроссплатформенный ускоритель для моделей машинного обучения, совместимый с такими фреймворками, как PyTorch, TensorFlow, scikit-learn и др.

ONNX Runtime оптимизирует выполнение моделей ONNX, используя аппаратные возможности. Эта оптимизация позволяет моделям работать эффективно и с высокой производительностью на различных аппаратных платформах, включая CPU, GPU и специализированные ускорители.

ONNX Runtime cross-platform inference acceleration

Используется ли ONNX независимо или в паре с ONNX Runtime, он предоставляет гибкое решение для model deployment и совместимости машинного обучения.

Ключевые особенности моделей ONNX#

Способность ONNX работать с различными форматами обусловлена следующими ключевыми особенностями:

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

  • Версионность и обратная совместимость: ONNX поддерживает систему версий для своих операторов. Это гарантирует, что даже по мере развития стандарта модели, созданные в более старых версиях, остаются пригодными для использования. Обратная совместимость — это важнейшая функция, которая предотвращает быстрое устаревание моделей.

  • Графовое представление моделей: ONNX представляет модели как вычислительные графы. Эта графовая структура — универсальный способ представления моделей машинного обучения, где узлы представляют операции или вычисления, а ребра — тензоры, передаваемые между ними. Этот формат легко адаптируется к различным фреймворкам, которые также представляют модели в виде графов.

  • Инструменты и экосистема: Вокруг ONNX сформировалась богатая экосистема инструментов, помогающих в конвертации, визуализации и оптимизации моделей. Эти инструменты облегчают разработчикам работу с моделями ONNX и беспрепятственную конвертацию моделей между различными фреймворками.

Типичное использование ONNX#

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

Развертывание на CPU#

Модели ONNX часто развертываются на CPU из-за их совместимости с ONNX Runtime. Эта среда выполнения оптимизирована для работы на CPU. Она значительно повышает скорость вывода и делает возможным развертывание в реальном времени на CPU.

Поддерживаемые варианты развертывания#

Хотя модели ONNX обычно используются на CPU, их также можно развертывать на следующих платформах:

  • Ускорение GPU: ONNX полностью поддерживает ускорение GPU, в частности NVIDIA CUDA. Для нативного обучения и инференса на GPU от AMD используй PyTorch ROCm; для файла ONNX по-прежнему требуется среда выполнения, совместимая с AMD.

  • Периферийные и мобильные устройства: ONNX распространяется на периферийные и мобильные устройства, что идеально подходит для сценариев локального и реального времени инференса. Он легкий и совместим с периферийным оборудованием, а также служит основой для вендорских форматов NPU, таких как Huawei Ascend, Qualcomm QNN для устройств Snapdragon и RKNN для NPU Rockchip.

  • Веб-браузеры: ONNX может работать непосредственно в веб-браузерах, обеспечивая функционирование интерактивных и динамических веб-приложений с использованием ИИ.

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

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

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

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

Ты можешь расширить совместимость моделей и гибкость развертывания, конвертируя модели YOLO26 в формат ONNX. Ultralytics YOLO26 предоставляет простой процесс экспорта, который может значительно повысить производительность твоей модели на различных платформах.

Установка#

Чтобы установить необходимый пакет, выполни:

Установка
# Install the required package for YOLO26
pip install ultralytics

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

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

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

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

Экспорт
from ultralytics import YOLO

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

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo26n.onnx'

# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml")  # creates 'yolo26n_int8.onnx'
Предсказание
from ultralytics import YOLO

# Load the exported ONNX model
model = YOLO("yolo26n.onnx")

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

# Load the exported ONNX model
model = YOLO("yolo26n.onnx")

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

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

При экспорте модели YOLO26 в формат ONNX ты можешь настроить процесс с помощью различных аргументов, чтобы оптимизировать его под конкретные нужды развертывания:

АргументТипПо умолчаниюОписание
formatstr'onnx'Целевой формат для экспортированной модели, определяющий совместимость с различными средами развертывания.
imgszint или tuple640Желаемый размер изображения для входа модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для конкретных размеров.
quantizeint или strNoneТочность квантования: 16 (FP16) или 8 (статическое квантование INT8 с использованием ONNX Runtime с использованием калибровочных изображений из data, создающее модель _int8.onnx); 32/не задано — FP32. Заменяет устаревшие флаги half/int8.
datastrNoneYAML датасета, используемый для калибровки INT8; для классификации вместо этого используется каталог датасета или имя встроенного датасета. Если параметр опущен при использовании quantize=8, Ultralytics выбирает датасет калибровки по умолчанию для задачи модели.
fractionfloat1.0Доля калибровочных изображений, используемых для квантования INT8.
dynamicboolFalseПозволяет использовать динамические размеры входных данных, повышая гибкость при обработке изображений с различными размерами.
simplifyboolTrueУпрощает граф модели с помощью onnxslim, что потенциально улучшает производительность и совместимость.
opsetintNoneУказывает версию ONNX opset для обеспечения совместимости с различными парсерами и средами выполнения ONNX. Если не задано, используется последняя поддерживаемая версия.
nmsboolFalseДобавляет подавление немаксимумов (NMS), что необходимо для точной и эффективной постобработки обнаружений.
batchint1Указывает размер батча для экспорта модели или максимальное количество изображений, которое экспортированная модель будет обрабатывать одновременно в режиме predict.
devicestrNoneУказывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps).

Дополнительную информацию о процессе экспорта см. на странице документации Ultralytics по экспорту.

Развертывание экспортированных моделей YOLO26 ONNX#

После успешного экспорта моделей Ultralytics YOLO26 в формат ONNX следующим шагом будет развертывание этих моделей в различных средах. Для получения подробных инструкций по развертыванию моделей ONNX ознакомься со следующими ресурсами:

  • Документация по Python API ONNX Runtime: Это руководство предоставляет важную информацию для загрузки и запуска моделей ONNX с помощью ONNX Runtime.

  • Развертывание на периферийных устройствах: Ознакомься с этой страницей документации, чтобы найти различные примеры развертывания моделей ONNX на периферии.

  • Учебные материалы по ONNX на GitHub: Коллекция исчерпывающих руководств, охватывающих различные аспекты использования и реализации моделей ONNX в различных сценариях.

  • Triton Inference Server: Узнай, как развертывать свои модели ONNX с помощью Triton Inference Server от NVIDIA для высокопроизводительных и масштабируемых развертываний.

Резюме#

В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLO26 в формат ONNX для повышения их интероперабельности и производительности на различных платформах. Ты также познакомился с ONNX Runtime и вариантами развертывания ONNX.

Экспорт в ONNX — это лишь один из многих форматов экспорта, поддерживаемых Ultralytics YOLO26, что позволяет тебе развертывать твои модели практически в любой среде. В зависимости от твоих конкретных потребностей ты также можешь изучить другие варианты экспорта, такие как TensorRT для максимальной производительности GPU или CoreML для устройств Apple.

Для получения более подробной информации об использовании посетите официальную документацию ONNX.

Кроме того, если ты хочешь узнать больше о других интеграциях Ultralytics YOLO26, посети нашу страницу руководства по интеграции. Там ты найдешь множество полезных ресурсов и идей.

FAQ#

Как экспортировать модели YOLO26 в формат ONNX с помощью Ultralytics?#

Чтобы экспортировать модели YOLO26 в формат ONNX с помощью Ultralytics, выполни следующие действия:

Использование
from ultralytics import YOLO

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

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo26n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")

Для получения более подробной информации посети документацию по экспорту.

Каковы преимущества использования ONNX Runtime для развертывания моделей YOLO26?#

Использование ONNX Runtime для развертывания моделей YOLO26 дает ряд преимуществ:

  • Кроссплатформенная совместимость: ONNX Runtime поддерживает различные платформы, такие как Windows, macOS и Linux, обеспечивая плавную работу твоих моделей в различных средах.
  • Аппаратное ускорение: ONNX Runtime может использовать аппаратные оптимизации для CPU, GPU и специализированных ускорителей, обеспечивая высокопроизводительный вывод.
  • Интероперабельность фреймворков: Модели, обученные в популярных фреймворках, таких как PyTorch или TensorFlow, могут быть легко конвертированы в формат ONNX и запущены с помощью ONNX Runtime.
  • Оптимизация производительности: ONNX Runtime может обеспечить до 3-кратного ускорения на CPU по сравнению с нативными моделями PyTorch, что делает его идеальным для сценариев развертывания с ограниченными ресурсами GPU.

Узнай больше, ознакомившись с документацией ONNX Runtime.

Какие варианты развертывания доступны для моделей YOLO26, экспортированных в ONNX?#

Модели YOLO26, экспортированные в ONNX, могут быть развернуты на различных платформах, включая:

  • CPU: Использование ONNX Runtime для оптимизированного вывода на CPU.
  • GPU: Использование NVIDIA CUDA для высокопроизводительного ускорения на GPU.
  • Периферийные устройства: Запуск облегченных моделей на периферийных и мобильных устройствах для локального вывода в реальном времени.
  • Веб-браузеры: Выполнение моделей непосредственно в веб-браузерах для интерактивных веб-приложений.
  • Облачные сервисы: Развертывание на облачных платформах, поддерживающих формат ONNX, для масштабируемого вывода.

Для получения дополнительной информации изучи наше руководство по опциям развертывания моделей.

Почему стоит использовать формат ONNX для моделей Ultralytics YOLO26?#

Использование формата ONNX для моделей Ultralytics YOLO26 дает многочисленные преимущества:

  • Интероперабельность: ONNX позволяет легко переносить модели между различными фреймворками машинного обучения.
  • Оптимизация производительности: ONNX Runtime может повысить производительность модели за счет использования специфических для оборудования оптимизаций.
  • Гибкость: ONNX поддерживает различные среды развертывания, что позволяет использовать одну и ту же модель на разных платформах без модификации.
  • Стандартизация: ONNX предоставляет стандартизированный формат, который широко поддерживается в индустрии, обеспечивая долгосрочную совместимость.

Обратись к подробному руководству по экспорту моделей YOLO26 в ONNX.

Как устранить неполадки при экспорте моделей YOLO26 в ONNX?#

При экспорте моделей YOLO26 в ONNX ты можешь столкнуться с распространенными проблемами, такими как несоответствие зависимостей или поддержка не всех операторов. Чтобы устранить эти неполадки:

  1. Проверь, установлена ли у тебя правильная версия необходимых зависимостей.
  2. Проверь официальную документацию ONNX на предмет поддерживаемых операторов и функций.
  3. Изучи сообщения об ошибках в поисках подсказок и обратись к руководству Ultralytics по общим проблемам.
  4. Попробуй использовать другие аргументы экспорта, такие как simplify=True, или настроить версию opset.
  5. При проблемах с динамическим размером входа установи dynamic=True во время экспорта.

Если проблемы сохраняются, обратись в службу поддержки Ultralytics за дополнительной помощью.

Комментарии