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






