ONNX (Open Neural Network Exchange)
Изучи формат открытого обмена нейронными сетями (ONNX). Узнай, как экспортировать Ultralytics YOLO26 в ONNX для быстрого кроссплатформенного развёртывания и оптимизации аппаратного обеспечения.
ONNX (обмен открытыми нейронными сетями) — это формат с открытым исходным кодом, предназначенный для представления моделей машинного обучения и обеспечивающий совместимость между различными фреймворками и инструментами искусственного интеллекта. Он служит универсальным переводчиком для глубокого обучения, позволяя разработчикам создавать модели в одном фреймворке — например, в PyTorch, TensorFlow или Scikit-learn — и без проблем разворачивать их в другой среде, оптимизированной для инференса. Определяя общий набор операторов и стандартный формат файлов, ONNX устраняет необходимость в сложных пользовательских скриптах конвертации, которые исторически требовались для переноса моделей из исследовательской среды в рабочую. Такая гибкость крайне важна для современных рабочих процессов искусственного интеллекта, в которых обучение может выполняться на мощных облачных GPU, а развертывание — на разнообразном оборудовании, например периферийных устройствах, мобильных телефонах или веб-браузерах.
Роль ONNX в современном искусственном интеллекте#
В быстро развивающейся сфере искусственного интеллекта исследователи и инженеры часто используют разные инструменты на разных этапах жизненного цикла разработки. Специалист по обработке данных может предпочитать гибкость PyTorch для экспериментов и обучения, тогда как инженер по внедрению нуждается в оптимизированной производительности TensorRT или OpenVINO. Без стандартного формата обмена перенос модели между этими экосистемами оказывается сложным и чреватым ошибками.
ONNX устраняет этот разрыв, предоставляя общее определение вычислительного графа. При экспорте модели в ONNX она сериализуется в формате, который описывает структуру сети (слои, связи) и параметры (веса, смещения) независимо от фреймворка. Благодаря этому движки инференса, специально оптимизированные для аппаратного ускорения, например ONNX Runtime, могут эффективно выполнять модель на различных платформах, включая Linux, Windows, macOS, Android и iOS.
Ключевые преимущества использования ONNX#
Внедрение формата обмена открытыми нейронными сетями дает проектам в области искусственного интеллекта несколько стратегических преимуществ:
- Совместимость фреймворков: разработчики могут переходить между фреймворками, не привязываясь к одной экосистеме. Ты можешь обучить модель с помощью удобного Ultralytics Python API, а затем экспортировать ее для использования в приложении на C++ или в веб-среде на JavaScript.
- Оптимизация оборудования: многие производители оборудования предоставляют специализированные провайдеры выполнения, взаимодействующие с ONNX. Это означает, что один файл
.onnxможно ускорить на GPU NVIDIA, CPU Intel или мобильных NPU (нейропроцессорах) с помощью таких инструментов, как OpenVINO или CoreML. - Более быстрый инференс: ONNX Runtime применяет оптимизации графа, например объединение узлов и свертывание констант, которые могут значительно сократить задержку инференса. Это необходимо для приложений реального времени, таких как автономные транспортные средства или высокоскоростные производственные линии.
- Упрощенное развертывание: вместо поддержки отдельных конвейеров развертывания для каждого фреймворка обучения инженерные команды могут стандартизировать формат поставки на ONNX, упрощая процессы ModelOps.
Практические применения#
Универсальность ONNX делает его стандартным инструментом в самых разных отраслях. Ниже приведены два конкретных примера его применения:
1. Периферийный искусственный интеллект на мобильных устройствах#
Рассмотрим мобильное приложение, предназначенное для мониторинга состояния посевов в реальном времени. Модель может обучаться на мощном облачном сервере с использованием большого набора изображений растений. Однако приложение должно работать в автономном режиме на смартфоне фермера. Экспортировав обученную модель в ONNX, разработчики могут интегрировать ее в мобильное приложение с помощью ONNX Runtime Mobile. Это позволяет процессору телефона локально выполнять детекцию объектов, мгновенно выявляя вредителей или заболевания без подключения к интернету.
2. Кроссплатформенный веб-инференс#
В электронной коммерции функция «виртуальной примерки» может использовать оценку позы, чтобы наложить одежду на изображение с веб-камеры пользователя. Обучение этой модели может выполняться в Python, но целевой средой развертывания является веб-браузер. С помощью ONNX модель можно преобразовать и запустить непосредственно в браузере пользователя через ONNX Runtime Web. При этом используются возможности устройства клиента (WebGL или WebAssembly) для выполнения задач компьютерного зрения, что обеспечивает плавную работу с сохранением конфиденциальности: видеоданные никогда не покидают компьютер пользователя.
Сравнение со связанными терминами#
Полезно отличать ONNX от других форматов моделей и инструментов:
- В сравнении с TensorRT: ONNX является форматом обмена, а TensorRT — движком инференса и оптимизатором, специально предназначенным для GPU NVIDIA. Распространенный рабочий процесс включает сначала экспорт модели в ONNX, а затем разбор этого файла ONNX в TensorRT для достижения максимальной пропускной способности на оборудовании NVIDIA.
- В сравнении с TensorFlow SavedModel: SavedModel — это собственный формат сериализации TensorFlow. Несмотря на надежность в экосистеме Google, он совместим с меньшим числом платформ, чем ONNX. Часто существуют инструменты для преобразования SavedModel в ONNX, чтобы получить более широкую поддержку платформ.
- В сравнении с CoreML: CoreML — это фреймворк Apple для машинного обучения на устройстве. Хотя это отдельная технология, модели часто преобразуют из PyTorch в ONNX, а затем из ONNX в CoreML (или выполняют преобразование напрямую), чтобы эффективно запускать их на iPhone и iPad.
Экспорт в ONNX с помощью Ultralytics#
Экосистема Ultralytics упрощает преобразование современных моделей, таких как YOLO26, в формат ONNX. Функция экспорта встроена непосредственно в библиотеку и автоматически обрабатывает сложный обход графа и сопоставление операторов.
В следующем примере показано, как экспортировать предварительно обученную модель Ultralytics YOLO26 в формат ONNX для развертывания:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")После экспорта этот файл .onnx можно использовать в Ultralytics Platform для управления или напрямую развернуть на периферийных устройствах с помощью ONNX Runtime, сделав высокопроизводительное компьютерное зрение доступным практически в любой среде.









