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

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

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

ONNX с ONNX Runtime

Независимо от того, используется ли он самостоятельно или в тандеме с 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 обеспечивает простой процесс экспорта, который может значительно повысить производительность вашей модели на различных платформах.

Установка

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

Установка

# 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 Добавляет не максимальное подавление (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")
# 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 Время выполнения может использовать аппаратные оптимизации для 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 вы можете столкнуться с такими распространенными проблемами, как несовпадение зависимостей или неподдерживаемые операции. Чтобы устранить эти проблемы, выполните следующие действия:

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

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

📅 Создано 1 год назад ✏️ Обновлено 3 дня назад

Комментарии