Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

ONNX (Open Neural Network Exchange)

ONNX — это открытый формат, в котором обученная модель хранится в виде графа стандартных операторов, поэтому модель, обученная в PyTorch, может запускаться во многих средах выполнения.

ONNX (Open Neural Network Exchange) — открытый стандарт формата файлов для моделей машинного обучения. Файл .onnx хранит обученную модель в виде графа вычислений из стандартных операторов вместе с её весами, поэтому модель, обученная в одном фреймворке, например PyTorch, может работать в других средах и на оборудовании разных типов. Facebook и Microsoft представили ONNX в сентябре 2017 года; с ноября 2019 года он стал зрелым проектом LF AI & Data — подразделения Linux Foundation, занимающегося ИИ. ONNX обычно служит промежуточным форматом между обучением и развёртыванием модели: один экспортированный файл можно использовать в ONNX Runtime, TensorRT, OpenVINO и компиляторах многих ускорителей периферийного ИИ.

Что содержит файл ONNX#

Модель ONNX сериализуется с помощью Protocol Buffers и состоит из четырёх частей:

  • Граф: Узлы, вызывающие операторы, например Conv, MatMul и Relu, которые соединены именованными тензорами. Для входных и выходных данных графа заданы типы данных и формы, а размер каждой оси может быть фиксированным или символическим, например для переменного размера батча.
  • Инициализаторы: Обученные веса. Protocol Buffers ограничивает размер одного файла 2 ГБ, поэтому более крупные модели хранят веса во внешних файлах данных рядом с файлом .onnx.
  • Версия набора операторов: Версии операторов задаются наборами операторов, и среда выполнения должна поддерживать тот набор, с которым экспортировали модель. Новые наборы добавляют операторы, не меняя старые, например оператор Attention, добавленный в набор версии 23.
  • Метаданные: Название производителя, версия модели и пользовательские пары «ключ — значение», например названия классов.

Вторая область операторов, ONNX-ML, охватывает классические модели, например древовидные ансамбли и линейные классификаторы. Поэтому конвертеры, такие как skl2onnx и onnxmltools, экспортируют модели scikit-learn, LightGBM и XGBoost в тот же формат. Средства просмотра, например Netron, отображают граф по узлам. На практике ONNX служит связующим звеном между множеством фреймворков обучения и сред выполнения:

Запуск моделей ONNX#

ONNX Runtime — разработанный Microsoft движок инференса с открытым исходным кодом, который запускает файлы ONNX на серверах, настольных компьютерах, телефонах и в браузерах. При загрузке модели он оптимизирует граф, например сворачивает константы и объединяет свёртку со следующей за ней пакетной нормализацией, а затем передаёт каждую часть графа провайдеру выполнения, соответствующему имеющемуся оборудованию: CUDA или TensorRT на GPU NVIDIA, OpenVINO на оборудовании Intel, DirectML на GPU под Windows, Core ML на устройствах Apple, QNN на NPU Qualcomm и WebGPU в браузерах. Windows ML, локальный фреймворк инференса от Microsoft, работает на ONNX Runtime; другие движки, например TensorRT и OpenVINO, импортируют файлы ONNX и компилируют их в собственные форматы.

Ultralytics YOLO26 экспортирует модель в ONNX с помощью model.export(format="onnx"), а экспорт Ultralytics в TensorRT собирает движок на основе того же файла ONNX. Экспортированный файл запускается в ONNX Runtime без PyTorch:

import onnxruntime as ort
from ultralytics import YOLO

# Экспортировать YOLO26n в ONNX с символическими размерами batch, height и width
model = YOLO("yolo26n.pt")
onnx_path = model.export(format="onnx", dynamic=True)

# Загрузить граф в ONNX Runtime, которому не нужны ни PyTorch, ни Ultralytics
session = ort.InferenceSession(onnx_path, providers=["CPUExecutionProvider"])
for tensor in session.get_inputs() + session.get_outputs():
    print(tensor.name, tensor.shape)

Выводятся входные данные графа — images с символическими размерами batch, height и width — и необработанный выход с предсказаниями — output0. Это сигнатура, которую использует любая среда выполнения ONNX, чтобы передать данные модели и получить результаты.

  • ONNX Runtime: движок инференса, выполняющий файлы ONNX. Это отдельный проект под руководством Microsoft, который часто сокращённо называют «ONNX».
  • TensorRT: компилятор NVIDIA, который преобразует файл ONNX в движок, оптимизированный для определённого типа GPU и версии TensorRT. Поэтому команды хранят файл ONNX как переносимый исходник и заново собирают движки для каждой целевой платформы.
  • Форматы PyTorch: контрольные точки .pt и файлы safetensors хранят веса для кода, который заново собирает модель, а TorchScript и torch.export сохраняют графы для собственных сред выполнения PyTorch.
  • Другие форматы развёртывания: OpenVINO IR, файлы LiteRT .tflite, пакеты Core ML и файлы GGUF для квантованных LLM — каждый из этих форматов предназначен для конкретной среды выполнения. Инструмент coremltools от Apple напрямую преобразует модели PyTorch и в версии 6 перестал принимать ONNX в качестве входных данных.

Примеры применения в реальных условиях#

  • Кроссплатформенные приложения: один файл ONNX подходит для серверов Linux, приложений Windows через Windows ML, а также приложений Android и iOS через ONNX Runtime Mobile.
  • Инференс в браузере: ONNX Runtime Web запускает модели на устройстве пользователя с помощью WebGPU или WebAssembly, поэтому кадры с камеры для таких функций, как оценка позы, не покидают браузер.
  • Периферийные ускорители: комплекты инструментов для NPU от таких производителей, как Hailo, Qualcomm и Rockchip, принимают модели ONNX и компилируют их, часто с квантованием до INT8, для своих чипов.
  • Классические модели в продакшене: деревья градиентного бустинга и конвейеры scikit-learn, преобразованные в ONNX, запускаются в сервисах на C#, Java и C++ через ONNX Runtime, без интерпретатора Python в контуре обслуживания.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения