Перейти к содержимому

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

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

Экспорт Ultralytics YOLOv8 моделей в формат ONNX упрощает развертывание и обеспечивает оптимальную производительность в различных средах. Это руководство покажет тебе, как легко преобразовать твои модели YOLOv8 в 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

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

CPU Развернуть

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

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

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

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

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

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

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

Ты можешь расширить совместимость моделей и гибкость развертывания, конвертируя модели YOLOv8 в формат ONNX.

Установка

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

Установка

# Install the required package for YOLOv8
pip install ultralytics

Для получения подробных инструкций и лучших практик, связанных с процессом установки, ознакомься с нашим руководством по установкеYOLOv8 . Во время установки необходимых пакетов для YOLOv8, если у тебя возникнут какие-либо трудности, обратись к нашему руководству по общим проблемам, чтобы найти решения и советы.

Использование

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

Использование

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolov8n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolov8n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to ONNX format
yolo export model=yolov8n.pt format=onnx  # creates 'yolov8n.onnx'

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

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

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

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

Резюме

В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLOv8 в формат ONNX, чтобы повысить их совместимость и производительность на различных платформах. Также ты познакомился с ONNX Runtime и вариантами развертывания ONNX.

Более подробную информацию об использовании можно найти в официальной документацииONNX .

Также, если ты хочешь узнать больше о других интеграциях Ultralytics YOLOv8 , посети страницу нашего руководства по интеграции. Там ты найдешь множество полезных ресурсов и идей.

ВОПРОСЫ И ОТВЕТЫ

Как экспортировать модели YOLOv8 в формат ONNX с помощью Ultralytics?

Чтобы экспортировать свои модели YOLOv8 в формат ONNX с помощью Ultralytics, выполни следующие шаги:

Использование

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolov8n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolov8n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to ONNX format
yolo export model=yolov8n.pt format=onnx  # creates 'yolov8n.onnx'

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

Более подробную информацию можно найти в документации по экспорту.

В чем преимущества использования ONNX Runtime для развертывания моделей YOLOv8 ?

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

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

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

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

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

  • Процессоры: Использование ONNX Runtime для оптимизации вывода CPU .
  • Графические процессоры: Leveraging NVIDIA CUDA for high-performance GPU acceleration.
  • Краевые устройства: Запускай легкие модели на пограничных и мобильных устройствах, чтобы делать выводы в реальном времени, на устройстве.
  • Веб-браузеры: Выполнение моделей непосредственно в веб-браузерах для создания интерактивных веб-приложений.

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

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

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

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

Обратись к исчерпывающему руководству по экспорту моделей YOLOv8 на ONNX.

Как устранить неполадки при экспорте моделей YOLOv8 в ONNX?

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

  1. Убедись, что у тебя установлена правильная версия необходимых зависимостей.
  2. Ознакомься с официальной документациейONNX , чтобы узнать о поддерживаемых операторах и возможностях.
  3. Просмотри сообщения об ошибках в поисках подсказок и обратись к руководствуUltralytics "Общие проблемы".

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



Создано 2024-01-25, Обновлено 2024-07-05
Авторы: glenn-jocher (6), abirami-vina (1)

Комментарии