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 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
Прежде чем мы перейдем к тому, как экспортировать модели YOLOv8 в формат ONNX, давай посмотрим, где обычно используются модели ONNX.
Развертывание процессора
Модели ONNX часто разворачиваются на центральных процессорах благодаря совместимости с ONNX Runtime. Эта среда выполнения оптимизирована для работы на CPU. Она значительно повышает скорость вывода и делает возможным развертывание моделей на ЦП в реальном времени.
Поддерживаемые варианты развертывания
Хотя модели ONNX обычно используются на процессорах, их также можно развернуть на следующих платформах:
-
Ускорение GPU: ONNX полностью поддерживает ускорение GPU, в частности NVIDIA CUDA. Это позволяет эффективно выполнять на графических процессорах NVIDIA задачи, требующие высокой вычислительной мощности.
-
Edge и мобильные устройства: ONNX распространяется на пограничные и мобильные устройства, что идеально подходит для сценариев вывода информации на устройстве и в реальном времени. Он легкий и совместим с аппаратным обеспечением edge.
-
Веб-браузеры: ONNX может работать непосредственно в веб-браузерах, обеспечивая работу интерактивных и динамичных веб-приложений ИИ.
Экспорт моделей YOLOv8 в ONNX
Ты можешь расширить совместимость моделей и гибкость развертывания, конвертируя модели YOLOv8 в формат ONNX.
Установка
Чтобы установить нужный пакет, выполни:
Для получения подробных инструкций и лучших практик, связанных с процессом установки, ознакомься с нашим руководством по установке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')
Более подробно о процессе экспорта можно узнать на странице документацииUltralytics , посвященной экспорту.
Развертывание экспортированных YOLOv8 ONNX моделей
После того как ты успешно экспортировал свои модели Ultralytics YOLOv8 в формат ONNX, следующим шагом будет развертывание этих моделей в различных средах. Для получения подробных инструкций по развертыванию твоих моделей в формате ONNX обрати внимание на следующие ресурсы:
-
ONNX Документация по API Runtime Python : Это руководство содержит важную информацию для загрузки и запуска моделей ONNX с помощью ONNX Runtime.
-
Развертывание на пограничных устройствах: Ознакомься с этой страницей документации, где приведены различные примеры развертывания моделей ONNX на граничных устройствах.
-
ONNX Учебные пособия на GitHub: Коллекция исчерпывающих туториалов, которые охватывают различные аспекты использования и реализации моделей ONNX в различных сценариях.
Резюме
В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLOv8 в формат ONNX, чтобы повысить их совместимость и производительность на различных платформах. Также ты познакомился с ONNX Runtime и вариантами развертывания ONNX.
Более подробную информацию об использовании можно найти в официальной документацииONNX .
Также, если ты хочешь узнать больше о других интеграциях Ultralytics YOLOv8 , посети страницу нашего руководства по интеграции. Там ты найдешь множество полезных ресурсов и идей.