Meet YOLO26: next-gen vision AI.

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

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

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

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



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

Link to this sectionONNX и ONNX Runtime#

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

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

ONNX model portability across deep learning frameworks

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

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

ONNX Runtime cross-platform inference acceleration

Независимо от того, используется ли ONNX самостоятельно или в тандеме с ONNX Runtime, он предоставляет гибкое решение для развертывания моделей машинного обучения и обеспечения их совместимости.

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

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

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

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

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

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

Link to this sectionТипичное использование ONNX#

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

Link to this sectionРазвертывание на CPU#

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

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

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

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

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

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

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

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

Link to this sectionУстановка#

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

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

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

Link to this sectionИспользование#

Прежде чем переходить к инструкциям по использованию, ознакомься с ассортиментом моделей 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")

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

При экспорте модели 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Задает размер пакета (batch) для вывода экспортированной модели или максимальное количество изображений, которые модель будет обрабатывать одновременно в режиме predict.
devicestrNoneУказывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps).

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

Link to this sectionРазвертывание экспортированных моделей 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 для высокопроизводительных и масштабируемых решений.

Link to this sectionРезюме#

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

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

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

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

Link to this sectionFAQ#

Link to this sectionКак экспортировать модели 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")

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

Link to this sectionКаковы преимущества использования 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.

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии