ONNX Экспорт для моделей YOLO11
Часто при развертывании моделей компьютерного зрения вам нужен формат модели, который был бы гибким и совместимым с несколькими платформами.
Экспорт Ultralytics YOLO11 моделей в формат ONNX упрощает развертывание и обеспечивает оптимальную производительность в различных средах. В этом руководстве вы узнаете, как легко преобразовать модели YOLO11 в формат ONNX и повысить их масштабируемость и эффективность в реальных приложениях.
ONNX и ONNX Runtime
ONNX, что расшифровывается как Open Neural Network Exchange, - это проект сообщества, который изначально разработали Facebook и Microsoft . Текущее развитие ONNX - это совместная работа, поддерживаемая различными организациями, такими как IBM, Amazon (через AWS) и Google. Цель проекта - создать открытый формат файлов, предназначенный для представления моделей машинного обучения таким образом, чтобы их можно было использовать в различных ИИ-фреймворках и аппаратном обеспечении.
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
Прежде чем перейти к экспорту моделей YOLO11 в формат ONNX , давайте посмотрим, где обычно используются модели ONNX .
CPU Развертывание
ONNX модели часто развертываются на центральных процессорах благодаря совместимости с ONNX Runtime. Эта среда выполнения оптимизирована для выполнения CPU . Она значительно повышает скорость вывода и делает возможным развертывание CPU в реальном времени.
Поддерживаемые варианты развертывания
Хотя модели ONNX обычно используются на центральных процессорах, они также могут быть развернуты на следующих платформах:
-
GPU Ускорение: ONNX полностью поддерживает ускорение GPU , в частности NVIDIA CUDA . Это позволяет эффективно выполнять на NVIDIA GPU задачи, требующие высокой вычислительной мощности.
-
Пограничные и мобильные устройства: ONNX распространяется на пограничные и мобильные устройства, что идеально подходит для сценариев вывода информации на устройстве и в режиме реального времени. Он легкий и совместим с аппаратным обеспечением пограничных устройств.
-
Веб-браузеры: ONNX может работать непосредственно в веб-браузерах, обеспечивая работу интерактивных и динамичных веб-приложений ИИ.
Экспорт моделей YOLO11 в ONNX
Вы можете расширить совместимость моделей и гибкость развертывания, конвертируя модели YOLO11 в формат ONNX . Ultralytics YOLO11 обеспечивает простой процесс экспорта, который может значительно повысить производительность вашей модели на различных платформах.
Установка
Чтобы установить необходимый пакет, выполните команду:
Для получения подробных инструкций и лучших практик, связанных с процессом установки, ознакомьтесь с нашим руководством по установкеYOLO11 . При установке необходимых пакетов для YOLO11, если вы столкнетесь с какими-либо трудностями, обратитесь к нашему руководству по общим проблемам, чтобы найти решения и советы.
Использование
Прежде чем приступить к изучению инструкции по эксплуатации, обязательно ознакомьтесь с ассортиментом моделейYOLO11 , предлагаемых компанией Ultralytics. Это поможет вам выбрать наиболее подходящую модель, соответствующую требованиям вашего проекта.
Использование
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
Аргументы экспорта
При экспорте модели YOLO11 в формат ONNX вы можете настроить процесс с помощью различных аргументов, чтобы оптимизировать его под конкретные нужды развертывания:
Аргумент | Тип | По умолчанию | Описание |
---|---|---|---|
format |
str |
'onnx' |
Целевой формат экспортируемой модели, определяющий совместимость с различными средами развертывания. |
imgsz |
int или tuple |
640 |
Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для получения конкретных размеров. |
half |
bool |
False |
Включает квантование FP16 (половина точности), уменьшая размер модели и потенциально ускоряя вывод на поддерживаемом оборудовании. |
dynamic |
bool |
False |
Позволяет вводить динамические размеры, что повышает гибкость при работе с изображениями разных размеров. |
simplify |
bool |
True |
Упрощает граф модели с помощью onnxslim , потенциально улучшая производительность и совместимость. |
opset |
int |
None |
Указывает версию ONNX opset для совместимости с различными ONNX парсерами и программами выполнения. Если не задано, используется последняя поддерживаемая версия. |
nms |
bool |
False |
Добавляет не максимальное подавление (NMS), необходимое для точной и эффективной постобработки обнаружения. |
batch |
int |
1 |
Указывает размер пакетного вывода экспортной модели или максимальное количество изображений, которые экспортируемая модель будет обрабатывать одновременно в predict режим. |
Более подробную информацию о процессе экспорта можно найти на странице документацииUltralytics , посвященной экспорту.
Развертывание экспортированных моделей YOLO11 ONNX
После того как вы успешно экспортировали модели Ultralytics YOLO11 в формат ONNX , следующим шагом будет развертывание этих моделей в различных средах. Для получения подробных инструкций по развертыванию моделей ONNX ознакомьтесь со следующими ресурсами:
-
ONNX Документация по API Runtime Python : Это руководство содержит важную информацию для загрузки и запуска моделей ONNX с помощью ONNX Runtime.
-
Развертывание на пограничных устройствах: Ознакомьтесь с этой страницей документации, где приведены различные примеры развертывания моделей ONNX на пограничных устройствах.
-
ONNX Учебники на GitHub: Коллекция исчерпывающих руководств, которые охватывают различные аспекты использования и реализации моделей ONNX в различных сценариях.
-
Triton Inference Server: Узнайте, как развернуть модели ONNX с помощью Triton Inference Server от NVIDIA для высокопроизводительного и масштабируемого развертывания.
Резюме
В этом руководстве вы узнали, как экспортировать модели Ultralytics YOLO11 в формат ONNX , чтобы повысить их совместимость и производительность на различных платформах. Вы также познакомились с вариантами развертывания ONNX Runtime и ONNX .
Экспорт ONNX - лишь один из многих форматов экспорта, поддерживаемых Ultralytics YOLO11, что позволяет развертывать модели практически в любой среде. В зависимости от ваших конкретных потребностей, вы можете изучить и другие варианты экспорта, например TensorRT для максимальной производительности GPU или CoreML для устройств Apple.
Более подробную информацию об использовании можно найти в официальной документацииONNX .
Также, если вы хотите узнать больше о других интеграциях Ultralytics YOLO11 , посетите нашу страницу руководства по интеграции. Там вы найдете множество полезных ресурсов и сведений.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как экспортировать модели YOLO11 в формат ONNX с помощью Ultralytics?
Чтобы экспортировать модели YOLO11 в формат ONNX с помощью Ultralytics, выполните следующие действия:
Использование
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
Более подробную информацию можно найти в документации по экспорту.
Каковы преимущества использования ONNX Runtime для развертывания моделей YOLO11 ?
Использование ONNX Runtime для развертывания моделей YOLO11 имеет ряд преимуществ:
- Кроссплатформенная совместимость: ONNX Runtime поддерживает различные платформы, такие как Windows, macOS и Linux, обеспечивая бесперебойную работу ваших моделей в различных средах.
- Аппаратное ускорение: ONNX Время выполнения может использовать аппаратные оптимизации для CPU, GPU и специальных ускорителей, обеспечивая высокопроизводительные выводы.
- Совместимость с фреймворками: Модели, обученные в таких популярных фреймворках, как PyTorch или TensorFlow , могут быть легко преобразованы в формат ONNX и запущены с помощью ONNX Runtime.
- Оптимизация производительности: ONNX Runtime может обеспечить до 3-кратного ускорения CPU по сравнению с собственными моделями PyTorch , что делает его идеальным для сценариев развертывания, где ресурсы GPU ограничены.
Более подробную информацию можно найти в документацииONNX Runtime.
Какие варианты развертывания доступны для моделей YOLO11 , экспортированных в ONNX?
YOLO11 Модели, экспортированные в ONNX , могут быть развернуты на различных платформах, включая:
- Процессоры: Использование ONNX Runtime для оптимизации вывода CPU .
- Графические процессоры: Использование NVIDIA CUDA для высокопроизводительного GPU ускорения.
- Краевые устройства: Запуск облегченных моделей на пограничных и мобильных устройствах для получения выводов в реальном времени на устройстве.
- Веб-браузеры: Выполнение моделей непосредственно в веб-браузерах для интерактивных веб-приложений.
- Облачные сервисы: Развертывание на облачных платформах, поддерживающих формат ONNX для масштабируемого вывода.
Для получения дополнительной информации изучите наше руководство по вариантам развертывания моделей.
Почему я должен использовать формат ONNX для моделей Ultralytics YOLO11 ?
Использование формата ONNX для моделей Ultralytics YOLO11 дает множество преимуществ:
- Совместимость: ONNX позволяет передавать модели между различными фреймворками машинного обучения.
- Оптимизация производительности: ONNX Время выполнения может повысить производительность модели за счет использования специфических для оборудования оптимизаций.
- Гибкость: ONNX поддерживает различные среды развертывания, позволяя использовать одну и ту же модель на разных платформах без модификации.
- Стандартизация: ONNX предоставляет стандартизированный формат, который широко поддерживается в отрасли, обеспечивая долгосрочную совместимость.
См. полное руководство по экспорту моделей YOLO11 на ONNX.
Как устранить неполадки при экспорте моделей YOLO11 в ONNX?
При экспорте моделей YOLO11 в ONNX вы можете столкнуться с такими распространенными проблемами, как несовпадение зависимостей или неподдерживаемые операции. Чтобы устранить эти проблемы, выполните следующие действия:
- Убедитесь, что установлена правильная версия необходимых зависимостей.
- Ознакомьтесь с официальной документациейONNX , чтобы узнать о поддерживаемых операторах и возможностях.
- Просмотрите сообщения об ошибках в поисках подсказок и обратитесь к руководству по общим проблемамUltralytics .
- Попробуйте использовать различные аргументы экспорта, например
simplify=True
или регулировкаopset
версия. - Для решения проблем с динамическим размером входных данных установите
dynamic=True
во время экспорта.
Если проблемы сохраняются, обратитесь в службу поддержки Ultralytics для получения дальнейшей помощи.