Перейти к содержанию

Экспорт ONNX для моделей YOLO11

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

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

ONNX и ONNX Runtime

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

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

ONNX

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

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

ONNX с ONNX Runtime

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

Ключевые особенности моделей ONNX

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

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

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

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

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

Типичное использование ONNX

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

Развертывание на CPU

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

Поддерживаемые варианты развертывания

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

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

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

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

Экспорт моделей YOLO11 в ONNX

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

Установка

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

Установка

# Install the required package for YOLO11
pip install ultralytics

Подробные инструкции и рекомендации по процессу установки см. в нашем руководстве по установке 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")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='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 Добавляет Non-Maximum Suppression (NMS), необходимую для точной и эффективной постобработки обнаружения.
batch int 1 Указывает размер пакета для модели экспорта или максимальное количество изображений, которые экспортируемая модель будет обрабатывать одновременно в режиме predict режиме.
device str None Указывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps).

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

Развертывание экспортированных моделей YOLO11 ONNX

После успешного экспорта моделей Ultralytics YOLO11 в формат ONNX следующим шагом является развертывание этих моделей в различных средах. Подробные инструкции по развертыванию моделей ONNX см. в следующих ресурсах:

  • Документация по ONNX Runtime Python API: В этом руководстве представлена важная информация о загрузке и запуске моделей ONNX с использованием ONNX Runtime.

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

  • Учебные пособия по ONNX на GitHub: Коллекция подробных учебных пособий, охватывающих различные аспекты использования и внедрения моделей ONNX в различных сценариях.

  • Triton Inference Server: Узнайте, как развертывать ваши ONNX-модели с помощью NVIDIA Triton Inference Server для высокопроизводительных, масштабируемых развертываний.

Обзор

В этом руководстве вы узнали, как экспортировать модели 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")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

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

Каковы преимущества использования ONNX Runtime для развертывания моделей YOLO11?

Использование ONNX Runtime для развертывания моделей YOLO11 предоставляет ряд преимуществ:

  • Кроссплатформенная совместимость: ONNX Runtime поддерживает различные платформы, такие как Windows, macOS и Linux, обеспечивая бесперебойную работу ваших моделей в различных средах.
  • Аппаратное ускорение: ONNX Runtime может использовать аппаратные оптимизации для CPU, GPU и специализированных ускорителей, обеспечивая высокую производительность.
  • Совместимость фреймворков: Модели, обученные в популярных фреймворках, таких как PyTorch или TensorFlow, могут быть легко преобразованы в формат ONNX и запущены с использованием ONNX Runtime.
  • Оптимизация производительности: ONNX Runtime может обеспечить до 3-кратного увеличения скорости CPU по сравнению с нативными моделями PyTorch, что делает его идеальным для сценариев развертывания, где ресурсы GPU ограничены.

Узнайте больше, ознакомившись с документацией ONNX Runtime.

Какие варианты развертывания доступны для моделей YOLO11, экспортированных в ONNX?

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

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

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

Почему мне следует использовать формат ONNX для моделей Ultralytics YOLO11?

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

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

Обратитесь к подробному руководству по экспорту моделей YOLO11 в ONNX.

Как я могу устранить проблемы при экспорте моделей YOLO11 в ONNX?

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

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

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



📅 Создано 1 год назад ✏️ Обновлено 4 месяца назад

Комментарии