Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

ONNX (Открытая биржа нейронных сетей)

Узнайте, как ONNX улучшает переносимость и совместимость моделей ИИ, обеспечивая беспрепятственное развертывание моделей Ultralytics YOLO на различных платформах.

Open Neural Network ExchangeONNX) - это стандарт с открытым исходным кодом, предназначенный для представления моделей машинного обучения (ML) таким образом, чтобы обеспечивающим переносимость между различными фреймворками и аппаратными средствами. Изначально он был разработан такими компаниями, как Microsoft и Facebook, ONNX служит "универсальным переводчиком" для ИИ. Он позволяет разработчикам обучать модель в одной экосистеме, например PyTorchи без проблем развернуть ее в другой, например TensorFlow или специализированный механизм вывода. Такая совместимость устраняет необходимость перестраивать или переучивать сети при переходе от исследовательских сред к производственным приложениям, значительно упрощая значительно упрощает процесс развертывания моделей.

Как работает ONNX

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

Поскольку это представление графа стандартизировано, производители оборудования могут создавать оптимизированные провайдеры выполнения для ONNX. Это означает, что единый .onnx файл может быть ускорен на различном оборудовании, включая CPU, GPU (графический процессор)или специализированный TPU Tensor блокTensor обработки)часто используя высокопроизводительные Время выполнения ONNX.

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

Для пользователей ultralytics пакет, преобразование обученной модели в формат ONNX является простым процесс. Библиотека автоматически справляется со сложным сопоставлением слоев со стандартом ONNX . Следующий фрагмент кода фрагмент кода демонстрирует, как экспортировать модель YOLO11 модель, подготавливая для более широкого внедрения.

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
# This creates 'yolo11n.onnx' in the current directory
model.export(format="onnx")

Применение в реальном мире

Гибкость ONNX делает его важнейшим компонентом современной инфраструктуры искусственного интеллекта, особенно для задач компьютерного зрения (КВ).

  1. Кросс-платформенное мобильное развертывание: Разработчик может обучить модель обнаружения объектов с помощью PyTorch на мощной рабочей станции. Однако конечное приложение должно работать как на устройствах iOS , так и на Android . Экспортировав модель в ONNX, разработчик может интегрировать тот же файл модели в мобильные приложения с помощью ONNX Runtime for Mobile, обеспечивая согласованное поведение в различных операционных системах, не поддерживая отдельные кодовые базы.
  2. Интеграция с унаследованными системами: Многие промышленные приложения создаются с использованием таких языков, как C++ или C# для обеспечения производительности и стабильности. Хотя Python является стандартом для обучения, интеграция модели Python в производственную среду C++ в производственную среду может быть медленной и чреватой ошибками. ONNX устраняет этот пробел. Производственное предприятие, использующее компьютерное зрение в робототехнике может обучить модель на Python, экспортировать ее в ONNX, а затем загрузить ее непосредственно в управляющее программное обеспечение на C++ для высокоскоростных выводов в реальном времени на заводе этаже.

ONNX по сравнению со смежными понятиями

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

  • ONNX против TensorRT: В то время как ONNX - это формат файлов для представления моделей, TensorRT это высокопроизводительный SDK для оптимизации разработанный компанией NVIDIA специально для графических процессоров NVIDIA . Эти два формата часто работают вместе; разработчики экспортируют модели в ONNX и затем используют TensorRT для обработки ONNX , применяя агрессивную оптимизация модели такие техники, как слияние слоев и калибровка, для достижения максимальной скорости на оборудовании NVIDIA .
  • ONNX по сравнению с фреймовыми форматами (например, .pt, .h5): Нативные форматы, такие как PyTorch's .pt или Keras's .h5 отлично подходят для обучения и сохранения веса модели в своих конкретных экосистемах. Однако для запуска модели часто требуется установка оригинального фреймворка. ONNX отделяет модель от от обучающего фреймворка, что упрощает выполнение краевой ИИ развертывания, когда установка полной учебной библиотеки нецелесообразно из-за нехватки памяти или хранения данных.
  • ONNX против квантования: ONNX - это формат, в то время как квантование модели - это техника, позволяющая уменьшить размера модели и увеличения скорости за счет снижения точности (например, с float32 на int8). Стандарт ONNX поддерживает квантованные операторы, что позволяет разработчикам хранить и выполнять квантованные модели эффективно.

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас