Экспорт ONNX для моделей YOLO26
~43% более быстрое выполнение вывода.
- Экспорт модели Ultralytics YOLO26 в ONNX может обеспечить ускорение вывода до 43%, что позволит выполнить более быстрое и эффективное развертывание.
Часто при развертывании моделей компьютерного зрения тебе требуется формат модели, который является одновременно гибким и совместимым с различными платформами.
Экспорт моделей 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. Проект нацелен на создание открытого формата файлов, предназначенного для представления моделей машинного обучения таким образом, чтобы их можно было использовать в различных AI-фреймворках и на разном оборудовании.
Модели ONNX можно использовать для плавного перехода между различными фреймворками. Например, модель глубокого обучения, обученная в PyTorch, может быть экспортирована в формат ONNX, а затем легко импортирована в TensorFlow.
Альтернативно, модели ONNX можно использовать с ONNX Runtime. ONNX Runtime — это универсальный кроссплатформенный ускоритель для моделей машинного обучения, совместимый с такими фреймворками, как PyTorch, TensorFlow, TFLite, scikit-learn и другими.
ONNX Runtime оптимизирует выполнение моделей ONNX за счет использования аппаратных возможностей. Эта оптимизация позволяет моделям работать эффективно и с высокой производительностью на различных аппаратных платформах, включая CPU, GPU и специализированные ускорители.
Будь то независимое использование или совместная работа с ONNX Runtime, ONNX предоставляет гибкое решение для развертывания моделей машинного обучения и обеспечения их совместимости.
Основные особенности моделей 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 NVIDIA для задач, требующих высокой вычислительной мощности.
-
Edge и мобильные устройства: ONNX распространяется на edge и мобильные устройства, что идеально подходит для сценариев вывода на самом устройстве в режиме реального времени. Он легкий и совместим с аппаратным обеспечением edge.
-
Веб-браузеры: ONNX может работать непосредственно в веб-браузерах, обеспечивая функционирование интерактивных и динамических веб-приложений на базе AI.
Экспорт моделей YOLO26 в ONNX
Ты можешь расширить совместимость моделей и гибкость развертывания, преобразовав модели YOLO26 в формат ONNX. Ultralytics YOLO26 предоставляет простой процесс экспорта, который может значительно повысить производительность твоей модели на различных платформах.
Установка
Чтобы установить необходимый пакет, выполни:
# Install the required package for YOLO26
pip install ultralyticsДля получения подробных инструкций и рекомендаций по процессу установки ознакомься с нашим Руководством по установке YOLO26. Если при установке необходимых пакетов для YOLO26 у тебя возникнут трудности, обратись к нашему Руководству по распространенным проблемам за решениями и советами.
Использование
Прежде чем переходить к инструкциям по использованию, обязательно ознакомься с ассортиментом моделей YOLO26, предлагаемых Ultralytics. Это поможет тебе выбрать наиболее подходящую модель для требований твоего проекта.
from ultralytics import YOLO
# Load the 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")Аргументы экспорта
При экспорте твоей модели YOLO26 в формат ONNX ты можешь настроить процесс, используя различные аргументы для оптимизации под конкретные нужды развертывания:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'onnx' | Целевой формат для экспортируемой модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для указания конкретных размеров. |
half | bool | False | Включает квантование FP16 (половинной точности), уменьшая размер модели и потенциально ускоряя логический вывод на поддерживаемом оборудовании. |
dynamic | bool | False | Позволяет использовать динамические размеры входных данных, что повышает гибкость при обработке изображений разных размеров. |
simplify | bool | True | Упрощает граф модели с помощью onnxslim, потенциально улучшая производительность и совместимость. |
opset | int | None | Указывает версию opset ONNX для совместимости с различными парсерами и средами выполнения ONNX. Если не задано, используется последняя поддерживаемая версия. |
nms | bool | False | Добавляет подавление немаксимумов (NMS), необходимое для точной и эффективной постобработки обнаружений. |
batch | int | 1 | Указывает размер пакетного инференса для экспортированной модели или максимальное количество изображений, которые модель будет обрабатывать одновременно в режиме predict. |
device | str | None | Указывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для процессоров Apple (device=mps). |
Для получения более подробной информации о процессе экспорта посети страницу документации Ultralytics по экспорту.
Развертывание экспортированных моделей YOLO26 ONNX
Как только ты успешно экспортируешь свои модели Ultralytics YOLO26 в формат ONNX, следующим шагом станет развертывание этих моделей в различных средах. Для получения подробных инструкций по развертыванию твоих моделей ONNX ознакомься со следующими ресурсами:
-
Документация по Python API для ONNX Runtime: Это руководство содержит важную информацию по загрузке и запуску моделей ONNX с использованием ONNX Runtime.
-
Развертывание на Edge устройствах: Ознакомься с этой страницей документации, чтобы увидеть различные примеры развертывания моделей ONNX на edge-устройствах.
-
Учебные материалы по 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 the 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 может обеспечить ускорение работы на CPU до 3 раз по сравнению с нативными моделями PyTorch, что делает его идеальным для сценариев развертывания, где ресурсы GPU ограничены.
Узнай больше, ознакомившись с документацией ONNX Runtime.
Какие варианты развертывания доступны для моделей YOLO26, экспортированных в ONNX?
Модели YOLO26, экспортированные в ONNX, могут быть развернуты на различных платформах, включая:
- CPU: Использование ONNX Runtime для оптимизированного вывода на CPU.
- GPU: Использование NVIDIA CUDA для высокопроизводительного ускорения на GPU.
- Edge устройства: Запуск легких моделей на edge и мобильных устройствах для вывода в реальном времени прямо на устройстве.
- Веб-браузеры: Выполнение моделей непосредственно внутри веб-браузеров для интерактивных веб-приложений.
- Облачные сервисы: Развертывание на облачных платформах, поддерживающих формат ONNX, для масштабируемого вывода.
Для получения дополнительной информации изучи наше руководство по вариантам развертывания моделей.
Почему мне следует использовать формат ONNX для моделей Ultralytics YOLO26?
Использование формата ONNX для моделей Ultralytics YOLO26 дает множество преимуществ:
- Интероперабельность: ONNX позволяет легко переносить модели между различными фреймворками машинного обучения.
- Оптимизация производительности: ONNX Runtime может повысить производительность модели за счет использования аппаратных оптимизаций.
- Гибкость: ONNX поддерживает различные среды развертывания, позволяя использовать одну и ту же модель на разных платформах без изменений.
- Стандартизация: ONNX предоставляет стандартизированный формат, который широко поддерживается в индустрии, обеспечивая долгосрочную совместимость.
Обратись к исчерпывающему руководству по экспорту моделей YOLO26 в ONNX.
Как я могу устранить неполадки при экспорте моделей YOLO26 в ONNX?
При экспорте моделей YOLO26 в ONNX ты можешь столкнуться с распространенными проблемами, такими как несоответствие версий зависимостей или поддержка не всех операторов. Чтобы устранить эти проблемы:
- Убедись, что у тебя установлены правильные версии необходимых зависимостей.
- Проверь официальную документацию ONNX на предмет поддерживаемых операторов и функций.
- Изучи сообщения об ошибках в поиске подсказок и обратись к руководству по общим проблемам Ultralytics.
- Попробуй использовать другие аргументы экспорта, такие как
simplify=True, или измени версиюopset. - Для решения проблем с динамическим размером входных данных установи
dynamic=Trueво время экспорта.
Если проблемы сохраняются, свяжись со службой поддержки Ultralytics для получения дальнейшей помощи.