Экспорт моделей YOLO26 в ONNX#
Инференс ONNX на CPU примерно на 43% быстрее: YOLO26n и YOLO11n
- Инференс YOLO26n в ONNX на CPU работает до 43% быстрее, чем YOLO11n (процессор Intel Xeon @ 2.00 GHz). Полное сравнение смотри на странице модели YOLO26.
При развертывании моделей компьютерного зрения часто нужен формат модели, который одновременно гибок и совместим с несколькими платформами.
Экспорт моделей Ultralytics YOLO26 в формат ONNX упрощает развертывание и обеспечивает оптимальную производительность в различных средах. В этом руководстве показано, как легко преобразовать модели YOLO26 в ONNX и повысить их масштабируемость и эффективность в реальных приложениях.
Смотри: Сравнение инференса Ultralytics YOLO26 и Ultralytics YOLO11 в ONNX | YOLO26 обеспечивает инференс примерно на 43% быстрее 🚀
ONNX и ONNX Runtime#
ONNX, аббревиатура которого расшифровывается как «Открытый обмен нейронными сетями», — это проект сообщества, первоначально разработанный Facebook и Microsoft. Дальнейшая разработка ONNX ведётся совместными усилиями при поддержке различных организаций, таких как IBM, Amazon (через AWS) и Google. Цель проекта — создать открытый формат файлов для представления моделей машинного обучения, позволяющий использовать их в различных фреймворках ИИ и на разном оборудовании.
Модели ONNX позволяют легко переходить между разными фреймворками. Например, модель глубокого обучения, обученную в PyTorch, можно экспортировать в формат ONNX, а затем без труда импортировать в TensorFlow.
Модели ONNX также можно использовать с ONNX Runtime. ONNX Runtime — универсальный кроссплатформенный ускоритель моделей машинного обучения, совместимый с такими фреймворками, как PyTorch, TensorFlow, scikit-learn и другими.
ONNX Runtime оптимизирует выполнение моделей ONNX, используя возможности конкретного оборудования. Благодаря такой оптимизации модели эффективно и быстро работают на различных аппаратных платформах, включая CPU, GPU и специализированные ускорители.
ONNX можно использовать отдельно или вместе с ONNX Runtime: этот формат обеспечивает гибкость при развертывании моделей машинного обучения и их совместимости.
Основные особенности моделей 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 через ROCm и MIGraphX.
-
Периферийные и мобильные устройства: ONNX подходит для периферийных и мобильных устройств, в том числе для инференса непосредственно на устройстве и в реальном времени. Формат отличается малым размером и совместимостью с периферийным оборудованием, а также служит основой для фирменных форматов NPU, таких как Huawei Ascend, Qualcomm QNN для устройств Snapdragon и RKNN для NPU Rockchip.
-
Веб-браузеры: ONNX можно запускать непосредственно в веб-браузерах, чтобы создавать интерактивные и динамичные веб-приложения на базе ИИ.
Поддерживаемые задачи#
Экспорт ONNX поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе, в которое входят соответствующие выходные головы.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Обнаружение | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Глубина | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Оценка позы | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Экспорт моделей YOLO26 в ONNX#
Преобразование моделей YOLO26 в формат ONNX расширяет их совместимость и дает больше гибкости при развертывании. Ultralytics YOLO26 предлагает простой процесс экспорта, который может значительно повысить производительность модели на разных платформах.
Установка#
Чтобы установить необходимый пакет, выполни команду:
# Install the required package for YOLO26
pip install ultralyticsПодробные инструкции и рекомендации по установке смотри в нашем руководстве по установке YOLO26. Если при установке необходимых пакетов для YOLO26 возникнут трудности, решения и полезные советы найдёшь в нашем руководстве по распространённым проблемам.
Использование#
Прежде чем перейти к инструкциям по использованию, ознакомься с линейкой моделей YOLO26 от Ultralytics. Это поможет выбрать модель, которая лучше всего подходит для требований твоего проекта.
Формат ONNX поддерживает режимы Экспорт, Предсказание и Валидация. Экспортируй модель, а затем загрузи ее, чтобы запустить инференс или проверить точность.
from ultralytics import YOLO
# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")
# Экспортировать модель в формат ONNX
model.export(format="onnx") # создаёт 'yolo26n.onnx'
# Экспорт ONNX-модели с квантованием INT8 и калибровочными данными
model.export(format="onnx", quantize=8, data="coco8.yaml") # создает 'yolo26n_int8.onnx'from ultralytics import YOLO
# Загрузи экспортированную модель ONNX
model = YOLO("yolo26n.onnx")
# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Загрузи экспортированную модель ONNX
model = YOLO("yolo26n.onnx")
# Проверить точность на наборе данных COCO8
metrics = model.val(data="coco8.yaml")Аргументы экспорта#
При экспорте модели YOLO26 в формат ONNX можно настроить процесс с помощью различных аргументов в соответствии с требованиями развертывания:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'onnx' | Целевой формат экспортируемой модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Заданный размер изображения на входе модели. Можно указать целое число для квадратных изображений или кортеж (height, width) для конкретных размеров. |
quantize | int или str | None | Точность квантования: 16 (FP16) или 8 (статическое квантование INT8 с помощью ONNX Runtime и калибровочных изображений из data, в результате создается модель _int8.onnx); 32/не задано — FP32. Контрольная точка, обученная с quantize=8, всегда экспортируется в INT8 как узлы Q/DQ на основе содержащихся в ней диапазонов, без калибровки и под обычным именем .onnx. Заменяет устаревшие флаги half/int8. |
data | str | None | YAML-файл датасета, используемый для калибровки INT8; для классификации вместо него указывают каталог датасета или имя встроенного датасета. Если параметр не задан вместе с quantize=8, Ultralytics выбирает стандартный калибровочный датасет для задачи модели; контрольной точке, обученной с quantize=8, он не требуется. |
fraction | float, int или list | 1.0 | Подмножество для калибровки, заданное как доля, количество изображений или [train, val, test] отношения/количества. Если список содержит два элемента, test остаётся без изменений, а 0 пропускает его. |
dynamic | bool | False | Позволяет использовать динамические размеры входных данных, повышая гибкость при обработке изображений разных размеров. |
simplify | bool | True | Упрощает граф модели с помощью onnxslim, что потенциально повышает производительность и совместимость. |
opset | int | None | Задает версию ONNX opset для совместимости с различными парсерами и средами выполнения ONNX. Если версия не указана, используется последняя поддерживаемая. |
nms | bool, необязательно | None | Выбери необработанный выход (None, по умолчанию), встроенный NMS (True) или голову без NMS (False). |
batch | int | 1 | Задаёт размер пакета изображений для инференса экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict. |
device | str | None | Задает устройство для экспорта: 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: узнай, как развертывать модели ONNX с помощью Triton Inference Server от NVIDIA для высокопроизводительных и масштабируемых решений.
Инференс на GPU AMD с MIGraphX#
Ultralytics запускает экспортированные модели ONNX на GPU AMD с помощью провайдера выполнения MIGraphX в ONNX Runtime. В системе с ROCm (HIP) бэкенд ONNX при первом использовании устанавливает плагин onnxruntime-ep-migraphx и автоматически выбирает MIGraphXExecutionProvider без изменения кода; поддерживаются все задачи YOLO26. Требования, установку, использование, результаты тестирования производительности и кэш скомпилированных программ смотри в руководстве по инференсу на GPU AMD.
Итоги#
В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLO26 в формат ONNX, чтобы повысить их совместимость и производительность на различных платформах. Также ты познакомился с ONNX Runtime и вариантами развертывания ONNX-моделей.
Экспорт в ONNX — лишь один из множества форматов экспорта, поддерживаемых Ultralytics YOLO26, которые позволяют развертывать модели практически в любой среде. В зависимости от задач также стоит рассмотреть другие варианты экспорта, например TensorRT для максимальной производительности GPU или CoreML для устройств Apple.
Дополнительные сведения об использовании смотри в официальной документации ONNX.
Если хочешь узнать больше о других вариантах интеграции Ultralytics YOLO26, посети нашу страницу руководства по интеграциям. Там ты найдешь множество полезных материалов и рекомендаций.
Часто задаваемые вопросы#
Чтобы экспортировать модели YOLO26 в формат ONNX с помощью Ultralytics, выполни следующие действия:
Использованиеfrom ultralytics import YOLO # Загрузи модель YOLO26 model = YOLO("yolo26n.pt") # Экспортировать модель в формат ONNX model.export(format="onnx") # создаёт 'yolo26n.onnx' # Загрузи экспортированную модель ONNX onnx_model = YOLO("yolo26n.onnx") # Выполнить инференс results = onnx_model("https://ultralytics.com/images/bus.jpg")Подробнее смотри в документации по экспорту.
Использование ONNX Runtime для развертывания моделей YOLO26 дает несколько преимуществ:
- Кроссплатформенная совместимость: ONNX Runtime поддерживает различные платформы, включая Windows, macOS и Linux, поэтому модели будут стабильно работать в разных средах.
- Аппаратное ускорение: ONNX Runtime использует оптимизации для конкретного оборудования — CPU, GPU и специализированных ускорителей, обеспечивая высокую производительность инференса.
- Совместимость с разными фреймворками: модели, обученные в популярных фреймворках, например PyTorch или TensorFlow, можно легко преобразовать в формат ONNX и запускать с помощью ONNX Runtime.
- Оптимизация производительности: ONNX Runtime может ускорить работу на CPU до 3 раз по сравнению с нативными моделями PyTorch, что делает его отличным выбором для развертывания при ограниченных ресурсах GPU.
Подробнее читай в документации ONNX Runtime.
Модели YOLO26, экспортированные в ONNX, можно развернуть на различных платформах, включая:
- CPU: использование ONNX Runtime для оптимизированного инференса на CPU.
- GPU NVIDIA: использование NVIDIA CUDA для высокопроизводительного ускорения вычислений на GPU.
- GPU AMD: использование провайдера выполнения AMD ROCm и MIGraphX для высокопроизводительного ускорения вычислений на GPU в Linux.
- Периферийные устройства: запуск облегчённых моделей на периферийных и мобильных устройствах для инференса в реальном времени непосредственно на устройстве.
- Веб-браузеры: выполнение моделей непосредственно в браузерах для интерактивных веб-приложений.
- Облачные сервисы: развёртывание на облачных платформах с поддержкой формата ONNX для масштабируемого инференса.
Дополнительную информацию смотри в нашем руководстве по вариантам развёртывания моделей.
Использование формата ONNX для моделей Ultralytics YOLO26 даёт множество преимуществ:
- Совместимость: ONNX позволяет легко переносить модели между различными фреймворками машинного обучения.
- Оптимизация производительности: ONNX Runtime может повысить производительность модели за счёт аппаратно-зависимых оптимизаций.
- Гибкость: ONNX поддерживает различные среды развёртывания, позволяя использовать одну и ту же модель на разных платформах без изменений.
- Стандартизация: ONNX обеспечивает стандартизированный формат с широкой отраслевой поддержкой, гарантируя долгосрочную совместимость.
Смотри подробное руководство по экспорту моделей YOLO26 в ONNX.
При экспорте моделей YOLO26 в ONNX могут возникнуть распространённые проблемы, например несовместимость зависимостей или неподдерживаемые операции. Чтобы устранить эти проблемы:
- Убедись, что установлена правильная версия необходимых зависимостей.
- Проверь официальную документацию ONNX, чтобы узнать о поддерживаемых операторах и функциях.
- Изучи сообщения об ошибках — в них могут быть полезные подсказки, — и обратись к руководству Ultralytics по распространённым проблемам.
- Попробуй использовать другие аргументы экспорта, например
simplify=True, или изменить версиюopset. - Если возникли проблемы с динамическим размером входных данных, задай
dynamic=Trueпри экспорте.
Если проблемы не исчезнут, обратись в службу поддержки Ultralytics за дополнительной помощью.