Link to this sectionЭкспорт 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 🚀
Link to this sectionONNX и 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 предоставляет гибкое решение для развертывания моделей машинного обучения и обеспечения совместимости.
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 может работать непосредственно в веб-браузерах, обеспечивая работу интерактивных и динамических веб-приложений на базе AI.
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 поддерживает режимы Экспорта, Предсказания и Валидации. Экспортируй свою модель, а затем загрузи ее для выполнения вывода или проверки точности.
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", int8=True, 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 ты можешь настроить процесс, используя различные аргументы, чтобы оптимизировать его под свои конкретные нужды развертывания:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'onnx' | Целевой формат для экспортируемой модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения для ввода модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для определенных размеров. |
half | bool | False | Включает квантование FP16 (половинной точности), уменьшая размер модели и потенциально ускоряя вывод на поддерживаемом оборудовании. |
int8 | bool | False | Включает статическое квантование INT8 с помощью ONNX Runtime, используя калибровочные изображения из data, создавая модель _int8.onnx. |
data | str | None | YAML датасета, используемый для калибровки INT8. Если пропущено при int8=True, Ultralytics выбирает калибровочный датасет по умолчанию для задачи модели. |
fraction | float | 1.0 | Доля калибровочных изображений для использования при квантовании INT8. |
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 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 sectionЧасто задаваемые вопросы (FAQ)#
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 ты можешь столкнуться с распространенными проблемами, такими как несоответствие зависимостей или неподдерживаемые операции. Для устранения этих проблем:
- Убедись, что у тебя установлена правильная версия необходимых зависимостей.
- Проверь официальную документацию ONNX на предмет поддерживаемых операторов и функций.
- Изучи сообщения об ошибках в поисках подсказок и обратись к руководству Ultralytics по частым проблемам.
- Попробуй использовать другие аргументы экспорта, такие как
simplify=True, или скорректируй версиюopset. - Для проблем с динамическим размером ввода установи
dynamic=Trueво время экспорта.
Если проблемы не исчезли, свяжись со службой поддержки Ultralytics для дальнейшей помощи.