ONNX (Open Neural Network Exchange)
Исследуй формат Open Neural Network Exchange (ONNX). Узнай, как экспортировать Ultralytics YOLO26 в ONNX для быстрого кроссплатформенного развертывания и оптимизации оборудования.
ONNX (Open Neural Network Exchange) — это формат с открытым исходным кодом, предназначенный для представления моделей машинного обучения, который обеспечивает совместимость между различными ИИ-фреймворками и инструментами. Он служит универсальным переводчиком для глубокого обучения, позволяя разработчикам создавать модели в одном фреймворке — например, PyTorch, TensorFlow или Scikit-learn — и беспрепятственно развертывать их в другой среде, оптимизированной для вывода. Определяя общий набор операторов и стандартный формат файлов, ONNX устраняет необходимость в сложных пользовательских скриптах конвертации, которые исторически требовались для переноса моделей из исследований в производство. Эта гибкость критически важна для современных ИИ-рабочих процессов, где обучение может проходить на мощных облачных GPU, в то время как развертывание нацелено на разнообразное оборудование, такое как периферийные устройства, мобильные телефоны или веб-браузеры.
Link to this sectionРоль ONNX в современном ИИ#
В быстро меняющемся ландшафте искусственного интеллекта исследователи и инженеры часто используют разные инструменты для разных этапов жизненного цикла разработки. Специалист по анализу данных может предпочесть гибкость PyTorch для экспериментов и обучения, тогда как производственному инженеру для развертывания потребуется оптимизированная производительность TensorRT или OpenVINO. Без стандартного формата обмена перенос модели между этими экосистемами оказывается сложным и подверженным ошибкам процессом.
ONNX заполняет этот пробел, предоставляя общее определение графа вычислений. Когда модель экспортируется в ONNX, она сериализуется в формат, который фиксирует структуру сети (слои, связи) и параметры (веса, смещения) независимо от конкретного фреймворка. Это позволяет движкам вывода, специально настроенным для аппаратного ускорения — таким как ONNX Runtime — эффективно выполнять модель на различных платформах, включая Linux, Windows, macOS, Android и iOS.
Link to this sectionОсновные преимущества использования ONNX#
Принятие формата Open Neural Network Exchange дает несколько стратегических преимуществ для ИИ-проектов:
- Совместимость фреймворков: Разработчики могут переключаться между фреймворками, не оказываясь запертыми в рамках одной экосистемы. Ты можешь обучить модель, используя удобный Ultralytics Python API, и экспортировать ее для использования в C++ приложении или веб-среде на JavaScript.
- Аппаратная оптимизация: Многие производители оборудования предоставляют специализированные исполнительные провайдеры (execution providers), взаимодействующие с ONNX. Это означает, что один файл
.onnxможет быть ускорен на NVIDIA GPU, Intel CPU или мобильных NPU (нейронных процессорах) с использованием инструментов типа OpenVINO или CoreML. - Более быстрый вывод: ONNX Runtime применяет оптимизации графа, такие как объединение узлов (node fusion) и свертка констант (constant folding), которые могут значительно снизить задержку вывода. Это необходимо для приложений реального времени, таких как беспилотные транспортные средства или высокоскоростные производственные линии.
- Упрощенное развертывание: Вместо поддержки отдельных конвейеров развертывания для каждого фреймворка обучения инженерные команды могут стандартизировать ONNX как формат доставки, оптимизируя процессы ModelOps.
Link to this sectionРеальные приложения#
Универсальность ONNX делает его востребованным в самых разных отраслях. Вот два конкретных примера его применения:
Link to this sectionПериферийный ИИ на мобильных устройствах#
Представь мобильное приложение, разработанное для мониторинга состояния сельскохозяйственных культур в реальном времени. Модель может быть обучена на мощном облачном сервере с использованием большого набора изображений растений. Однако приложению необходимо работать в офлайне на смартфоне фермера. Экспортировав обученную модель в ONNX, разработчики могут интегрировать ее в мобильное приложение с помощью ONNX Runtime Mobile. Это позволит процессору телефона выполнять обнаружение объектов локально, мгновенно выявляя вредителей или болезни без необходимости подключения к интернету.
Link to this sectionКроссплатформенный веб-вывод#
В электронной коммерции функция «виртуальной примерки» может использовать оценку позы для наложения одежды на изображение с веб-камеры пользователя. Обучение этой модели может происходить на Python, но целью развертывания является веб-браузер. С помощью ONNX модель можно конвертировать и запускать непосредственно в браузере пользователя через ONNX Runtime Web. Это задействует возможности устройства клиента (WebGL или WebAssembly) для выполнения задач компьютерного зрения, обеспечивая плавный и конфиденциальный опыт, поскольку видеоданные никогда не покидают компьютер пользователя.
Link to this sectionСравнение с похожими терминами#
Полезно различать ONNX и другие форматы и инструменты моделей:
- vs. TensorRT: В то время как ONNX — это формат обмена, TensorRT — это движок вывода и оптимизатор, специально предназначенный для NVIDIA GPU. Стандартный рабочий процесс включает экспорт модели в ONNX с последующим парсингом этого ONNX-файла в TensorRT для достижения максимальной пропускной способности на оборудовании NVIDIA.
- vs. TensorFlow SavedModel: SavedModel — это нативный формат сериализации для TensorFlow. Несмотря на надежность внутри экосистемы Google, он менее универсально совместим, чем ONNX. Часто существуют инструменты для конвертации SavedModel в ONNX для получения более широкой поддержки платформ.
- vs. CoreML: CoreML — это фреймворк Apple для машинного обучения на устройствах. Хотя это разные вещи, модели часто конвертируются из PyTorch в ONNX, а затем из ONNX в CoreML (или напрямую) для эффективной работы на iPhone и iPad.
Link to this sectionЭкспорт в ONNX с помощью Ultralytics#
Экосистема Ultralytics упрощает процесс конвертации передовых моделей, таких как YOLO26, в формат ONNX. Функциональность экспорта встроена непосредственно в библиотеку, автоматически выполняя сложный обход графа и сопоставление операторов.
Следующий пример демонстрирует, как экспортировать предварительно обученную модель 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 для управления или развертывать напрямую на периферийные устройства с помощью ONNX Runtime, что делает высокопроизводительное компьютерное зрение доступным практически в любой среде.






