Перейти к содержимому

Intel OpenVINO Экспорт

OpenVINO Экосистема

В этом руководстве мы расскажем об экспорте моделей YOLOv8 в OpenVINO формат, что может обеспечить до 3x CPU ускорение, а также об ускорении вывода YOLO на Intel GPU и аппаратном обеспечении NPU.

OpenVINO, short for Open Visual Inference & Neural Network Optimization toolkit, is a comprehensive toolkit for optimizing and deploying AI inference models. Even though the name contains Visual, OpenVINO also supports various additional tasks including language, audio, time series, etc.



Смотри: Как экспортировать и оптимизировать модель Ultralytics YOLOv8 для выводов с помощью OpenVINO.

Примеры использования

Экспортируй модель YOLOv8n в формат OpenVINO и проведи расчеты с экспортированной моделью.

Пример

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model
model.export(format="openvino")  # creates 'yolov8n_openvino_model/'

# Load the exported OpenVINO model
ov_model = YOLO("yolov8n_openvino_model/")

# Run inference
results = ov_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to OpenVINO format
yolo export model=yolov8n.pt format=openvino  # creates 'yolov8n_openvino_model/'

# Run inference with the exported model
yolo predict model=yolov8n_openvino_model source='https://ultralytics.com/images/bus.jpg'

Аргументы

Ключ Значение Описание
format 'openvino' Формат, в который нужно экспортировать
imgsz 640 Размер изображения в виде скаляра или списка (h, w), то есть (640, 480)
half False Квантование FP16
int8 False Квантование INT8
batch 1 batch size for inference
dynamic False позволяет динамически менять размеры входных данных

Преимущества OpenVINO

  1. Производительность: OpenVINO обеспечивает высокопроизводительные выводы, используя мощь Intel процессоров, интегрированных и дискретных графических процессоров и FPGA.
  2. Поддержка гетерогенного исполнения: OpenVINO предоставляет API для того, чтобы написать один раз и развернуть на любом поддерживаемом Intel оборудовании (CPU, GPU, FPGA, VPU и т.д.).
  3. Model Optimizer: OpenVINO provides a Model Optimizer that imports, converts, and optimizes models from popular deep learning frameworks such as PyTorch, TensorFlow, TensorFlow Lite, Keras, ONNX, PaddlePaddle, and Caffe.
  4. Простота использования: В комплекте с инструментарием поставляется более 80 обучающих блокнотов (включая YOLOv8 optimization), обучающих различным аспектам работы с инструментарием.

OpenVINO Структура экспорта

Когда ты экспортируешь модель в формат OpenVINO, получается каталог, содержащий следующее:

  1. XML-файл: Описывает топологию сети.
  2. BIN-файл: Содержит бинарные данные weights and biases .
  3. Файл отображения: В нем хранится отображение исходных выходных тензоров модели на имена OpenVINO tensor .

Ты можешь использовать эти файлы, чтобы запустить процесс вычисления с помощью OpenVINO Inference Engine.

Использование OpenVINO Export в развертывании

Когда у тебя есть файлы OpenVINO , ты можешь использовать OpenVINO Runtime для запуска модели. Runtime предоставляет единый API для проведения выводов на всех поддерживаемых Intel аппаратных средствах. Он также предоставляет расширенные возможности, такие как балансировка нагрузки на Intel оборудование и асинхронное выполнение. Более подробную информацию о выполнении выводов ты найдешь в руководстве Inference with OpenVINO Runtime Guide.

Помни, что для правильной настройки и использования модели в Runtime тебе понадобятся файлы XML и BIN, а также любые специфические для приложения настройки, такие как размер входных данных, масштабный коэффициент для нормализации и т.д.

В своем приложении для развертывания ты обычно выполняешь следующие действия:

  1. Инициализируй OpenVINO, создав core = Core().
  2. Загрузи модель с помощью core.read_model() метод.
  3. Скомпилируй модель, используя core.compile_model() Функция.
  4. Подготовь входные данные (изображение, текст, аудио и т.д.).
  5. Выполни умозаключение, используя compiled_model(input_data).

За более подробными шагами и фрагментами кода обратись к документацииOpenVINO или учебнику по API.

OpenVINO YOLOv8 Бенчмарки

YOLOv8 benchmarks below were run by the Ultralytics team on 4 different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX and OpenVINO. Benchmarks were run on Intel Flex and Arc GPUs, and on Intel Xeon CPUs at FP32 precision (with the half=False аргумент).

Примечание

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

Все бенчмарки работают с openvino Python версия пакета 2023.0.1.

Intel Флекс GPU

Серия Intel® Data Center GPU Flex - это универсальное и надежное решение, созданное для интеллектуального визуального облака. Этот GPU поддерживает широкий спектр рабочих нагрузок, включая потоковое воспроизведение медиа, облачные игры, визуальные выводы ИИ и рабочие нагрузки инфраструктуры виртуальных рабочих столов. Его отличает открытая архитектура и встроенная поддержка кодировки AV1, обеспечивающая основанный на стандартах программный стек для высокопроизводительных, кросс-архитектурных приложений. Flex Series GPU оптимизированы для плотности и качества, обеспечивают высокую надежность, доступность и масштабируемость.

Бенчмарки ниже работают на Intel® Data Center GPU Flex 170 с точностью FP32.

Бенчмарки Flex GPU
Модель Формат Статус Размер (Мб) mAP50-95(B) Время вывода (мс/им)
YOLOv8n PyTorch 6.2 0.3709 21.79
YOLOv8n TorchScript 12.4 0.3704 23.24
YOLOv8n ONNX 12.2 0.3704 37.22
YOLOv8n OpenVINO 12.3 0.3703 3.29
YOLOv8s PyTorch 21.5 0.4471 31.89
YOLOv8s TorchScript 42.9 0.4472 32.71
YOLOv8s ONNX 42.8 0.4472 43.42
YOLOv8s OpenVINO 42.9 0.4470 3.92
YOLOv8m PyTorch 49.7 0.5013 50.75
YOLOv8m TorchScript 99.2 0.4999 47.90
YOLOv8m ONNX 99.0 0.4999 63.16
YOLOv8m OpenVINO 49.8 0.4997 7.11
YOLOv8l PyTorch 83.7 0.5293 77.45
YOLOv8l TorchScript 167.2 0.5268 85.71
YOLOv8l ONNX 166.8 0.5268 88.94
YOLOv8l OpenVINO 167.0 0.5264 9.37
YOLOv8x PyTorch 130.5 0.5404 100.09
YOLOv8x TorchScript 260.7 0.5371 114.64
YOLOv8x ONNX 260.4 0.5371 110.32
YOLOv8x OpenVINO 260.6 0.5367 15.02

В этой таблице представлены результаты бенчмарка для пяти различных моделей (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) в четырех различных форматах (PyTorch, TorchScript, ONNX, OpenVINO), дающие нам статус, размер, метрику mAP50-95(B) и время вывода для каждой комбинации.

Intel Дуга GPU

Intel® Arc™ represents Intel's foray into the dedicated GPU market. The Arc™ series, designed to compete with leading GPU manufacturers like AMD and NVIDIA, caters to both the laptop and desktop markets. The series includes mobile versions for compact devices like laptops, and larger, more powerful versions for desktop computers.

Серия Arc™ делится на три категории: Arc™ 3, Arc™ 5 и Arc™ 7, причем каждый номер обозначает уровень производительности. Каждая категория включает в себя несколько моделей, а буква 'M' в названии модели GPU означает мобильный, интегрированный вариант.

Первые отзывы высоко оценили серию Arc™, особенно интегрированную модель A770M GPU, за впечатляющую графическую производительность. Доступность серии Arc™ зависит от региона, и в ближайшее время ожидается выпуск дополнительных моделей. Графические процессоры Intel® Arc™ - это высокопроизводительные решения для самых разных вычислительных задач, от игр до создания контента.

Бенчмарки ниже работают на Intel® Arc 770 GPU с точностью FP32.

Дуга GPU ориентиры
Модель Формат Статус Размер (Мб) метрики/mAP50-95(B) Время вывода (мс/им)
YOLOv8n PyTorch 6.2 0.3709 88.79
YOLOv8n TorchScript 12.4 0.3704 102.66
YOLOv8n ONNX 12.2 0.3704 57.98
YOLOv8n OpenVINO 12.3 0.3703 8.52
YOLOv8s PyTorch 21.5 0.4471 189.83
YOLOv8s TorchScript 42.9 0.4472 227.58
YOLOv8s ONNX 42.7 0.4472 142.03
YOLOv8s OpenVINO 42.9 0.4469 9.19
YOLOv8m PyTorch 49.7 0.5013 411.64
YOLOv8m TorchScript 99.2 0.4999 517.12
YOLOv8m ONNX 98.9 0.4999 298.68
YOLOv8m OpenVINO 99.1 0.4996 12.55
YOLOv8l PyTorch 83.7 0.5293 725.73
YOLOv8l TorchScript 167.1 0.5268 892.83
YOLOv8l ONNX 166.8 0.5268 576.11
YOLOv8l OpenVINO 167.0 0.5262 17.62
YOLOv8x PyTorch 130.5 0.5404 988.92
YOLOv8x TorchScript 260.7 0.5371 1186.42
YOLOv8x ONNX 260.4 0.5371 768.90
YOLOv8x OpenVINO 260.6 0.5367 19

Intel Xeon CPU

The Intel® Xeon® CPU is a high-performance, server-grade processor designed for complex and demanding workloads. From high-end cloud computing and virtualization to artificial intelligence and machine learning applications, Xeon® CPUs provide the power, reliability, and flexibility required for today's data centers.

Примечательно, что процессоры Xeon® обеспечивают высокую плотность вычислений и масштабируемость, что делает их идеальными как для малого бизнеса, так и для крупных предприятий. Выбирая процессоры Intel® Xeon®, организации могут уверенно справляться с самыми требовательными вычислительными задачами и способствовать инновациям, сохраняя при этом экономичность и операционную эффективность.

Бенчмарки ниже работают на масштабируемых процессорах Intel® Xeon® 4-го поколения CPU с точностью FP32.

Бенчмарки Xeon CPU
Модель Формат Статус Размер (Мб) метрики/mAP50-95(B) Время вывода (мс/им)
YOLOv8n PyTorch 6.2 0.3709 24.36
YOLOv8n TorchScript 12.4 0.3704 23.93
YOLOv8n ONNX 12.2 0.3704 39.86
YOLOv8n OpenVINO 12.3 0.3704 11.34
YOLOv8s PyTorch 21.5 0.4471 33.77
YOLOv8s TorchScript 42.9 0.4472 34.84
YOLOv8s ONNX 42.8 0.4472 43.23
YOLOv8s OpenVINO 42.9 0.4471 13.86
YOLOv8m PyTorch 49.7 0.5013 53.91
YOLOv8m TorchScript 99.2 0.4999 53.51
YOLOv8m ONNX 99.0 0.4999 64.16
YOLOv8m OpenVINO 99.1 0.4996 28.79
YOLOv8l PyTorch 83.7 0.5293 75.78
YOLOv8l TorchScript 167.2 0.5268 79.13
YOLOv8l ONNX 166.8 0.5268 88.45
YOLOv8l OpenVINO 167.0 0.5263 56.23
YOLOv8x PyTorch 130.5 0.5404 96.60
YOLOv8x TorchScript 260.7 0.5371 114.28
YOLOv8x ONNX 260.4 0.5371 111.02
YOLOv8x OpenVINO 260.6 0.5371 83.28

Intel Ядро CPU

Серия Intel® Core® - это линейка высокопроизводительных процессоров от Intel. В линейку входят Core i3 (начальный уровень), Core i5 (средний уровень), Core i7 (высокий уровень) и Core i9 (экстремальная производительность). Каждая серия рассчитана на разные вычислительные потребности и бюджеты - от повседневных задач до сложных профессиональных нагрузок. С каждым новым поколением улучшается производительность, энергоэффективность и функциональность.

Бенчмарки ниже работают на процессорах 13-го поколения Intel® Core® i7-13700H CPU с точностью FP32.

Контрольные точки Core CPU
Модель Формат Статус Размер (Мб) метрики/mAP50-95(B) Время вывода (мс/им)
YOLOv8n PyTorch 6.2 0.4478 104.61
YOLOv8n TorchScript 12.4 0.4525 112.39
YOLOv8n ONNX 12.2 0.4525 28.02
YOLOv8n OpenVINO 12.3 0.4504 23.53
YOLOv8s PyTorch 21.5 0.5885 194.83
YOLOv8s TorchScript 43.0 0.5962 202.01
YOLOv8s ONNX 42.8 0.5962 65.74
YOLOv8s OpenVINO 42.9 0.5966 38.66
YOLOv8m PyTorch 49.7 0.6101 355.23
YOLOv8m TorchScript 99.2 0.6120 424.78
YOLOv8m ONNX 99.0 0.6120 173.39
YOLOv8m OpenVINO 99.1 0.6091 69.80
YOLOv8l PyTorch 83.7 0.6591 593.00
YOLOv8l TorchScript 167.2 0.6580 697.54
YOLOv8l ONNX 166.8 0.6580 342.15
YOLOv8l OpenVINO 167.0 0.0708 117.69
YOLOv8x PyTorch 130.5 0.6651 804.65
YOLOv8x TorchScript 260.8 0.6650 921.46
YOLOv8x ONNX 260.4 0.6650 526.66
YOLOv8x OpenVINO 260.6 0.6619 158.73

Intel Ultra 7 155H Meteor Lake CPU

The Intel® Ultra™ 7 155H represents a new benchmark in high-performance computing, designed to cater to the most demanding users, from gamers to content creators. The Ultra™ 7 155H is not just a CPU; it integrates a powerful GPU and an advanced NPU (Neural Processing Unit) within a single chip, offering a comprehensive solution for diverse computing needs.

This hybrid architecture allows the Ultra™ 7 155H to excel in both traditional CPU tasks and GPU-accelerated workloads, while the NPU enhances AI-driven processes, enabling faster and more efficient machine learning operations. This makes the Ultra™ 7 155H a versatile choice for applications requiring high-performance graphics, complex computations, and AI inference.

The Ultra™ 7 series includes multiple models, each offering different levels of performance, with the 'H' designation indicating a high-power variant suitable for laptops and compact devices. Early benchmarks have highlighted the exceptional performance of the Ultra™ 7 155H, particularly in multitasking environments, where the combined power of the CPU, GPU, and NPU leads to remarkable efficiency and speed.

As part of Intel's commitment to cutting-edge technology, the Ultra™ 7 155H is designed to meet the needs of future computing, with more models expected to be released. The availability of the Ultra™ 7 155H varies by region, and it continues to receive praise for its integration of three powerful processing units in a single chip, setting new standards in computing performance.

Benchmarks below run on Intel® Ultra™ 7 155H at FP32 and INT8 precision.

Бенчмарки

Модель Формат Точность Статус Размер (Мб) метрики/mAP50-95(B) Время вывода (мс/им)
YOLOv8n PyTorch FP32 6.2 0.6381 35.95
YOLOv8n OpenVINO FP32 12.3 0.6117 8.32
YOLOv8n OpenVINO INT8 3.6 0.5791 9.88
YOLOv8s PyTorch FP32 21.5 0.6967 79.72
YOLOv8s OpenVINO FP32 42.9 0.7136 13.37
YOLOv8s OpenVINO INT8 11.2 0.7086 9.96
YOLOv8m PyTorch FP32 49.7 0.737 202.05
YOLOv8m OpenVINO FP32 99.1 0.7331 28.07
YOLOv8m OpenVINO INT8 25.5 0.7259 21.11
YOLOv8l PyTorch FP32 83.7 0.7769 393.37
YOLOv8l OpenVINO FP32 167.0 0.0 52.73
YOLOv8l OpenVINO INT8 42.6 0.7861 28.11
YOLOv8x PyTorch FP32 130.5 0.7759 610.71
YOLOv8x OpenVINO FP32 260.6 0.748 73.51
YOLOv8x OpenVINO INT8 66.0 0.8085 51.71

Intel Core Ultra GPU benchmarks

Модель Формат Точность Статус Размер (Мб) метрики/mAP50-95(B) Время вывода (мс/им)
YOLOv8n PyTorch FP32 6.2 0.6381 34.69
YOLOv8n OpenVINO FP32 12.3 0.6092 39.06
YOLOv8n OpenVINO INT8 3.6 0.5968 18.37
YOLOv8s PyTorch FP32 21.5 0.6967 79.9
YOLOv8s OpenVINO FP32 42.9 0.7136 82.6
YOLOv8s OpenVINO INT8 11.2 0.7083 29.51
YOLOv8m PyTorch FP32 49.7 0.737 202.43
YOLOv8m OpenVINO FP32 99.1 0.728 181.27
YOLOv8m OpenVINO INT8 25.5 0.7285 51.25
YOLOv8l PyTorch FP32 83.7 0.7769 385.87
YOLOv8l OpenVINO FP32 167.0 0.7551 347.75
YOLOv8l OpenVINO INT8 42.6 0.7675 91.66
YOLOv8x PyTorch FP32 130.5 0.7759 603.63
YOLOv8x OpenVINO FP32 260.6 0.7479 516.39
YOLOv8x OpenVINO INT8 66.0 0.8119 142.42

Intel Core Ultra CPU benchmarks

Модель Формат Точность Статус Размер (Мб) метрики/mAP50-95(B) Время вывода (мс/им)
YOLOv8n PyTorch FP32 6.2 0.6381 36.98
YOLOv8n OpenVINO FP32 12.3 0.6103 16.68
YOLOv8n OpenVINO INT8 3.6 0.5941 14.6
YOLOv8s PyTorch FP32 21.5 0.6967 79.76
YOLOv8s OpenVINO FP32 42.9 0.7144 32.89
YOLOv8s OpenVINO INT8 11.2 0.7062 26.13
YOLOv8m PyTorch FP32 49.7 0.737 201.44
YOLOv8m OpenVINO FP32 99.1 0.7284 54.4
YOLOv8m OpenVINO INT8 25.5 0.7268 30.76
YOLOv8l PyTorch FP32 83.7 0.7769 385.46
YOLOv8l OpenVINO FP32 167.0 0.7539 80.1
YOLOv8l OpenVINO INT8 42.6 0.7508 52.25
YOLOv8x PyTorch FP32 130.5 0.7759 609.4
YOLOv8x OpenVINO FP32 260.6 0.7637 104.79
YOLOv8x OpenVINO INT8 66.0 0.8077 64.96

Intel Core Ultra NPU benchmarks

Воспроизведи наши результаты

Чтобы воспроизвести приведенные выше бенчмарки Ultralytics на всех форматах экспорта, выполни этот код:

Пример

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all export formats
results = model.benchmarks(data="coco8.yaml")
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml

Учти, что результаты бенчмарков могут отличаться в зависимости от точной аппаратной и программной конфигурации системы, а также от текущей загруженности системы на момент запуска бенчмарков. Для получения наиболее достоверных результатов используй набор данных с большим количеством изображений, то есть data='coco128.yaml' (128 val images), ordata='coco.yaml'` (5000 val изображений).

Заключение

Результаты бенчмарков наглядно демонстрируют преимущества экспорта модели YOLOv8 в формат OpenVINO. Для разных моделей и аппаратных платформ формат OpenVINO неизменно превосходит другие форматы по скорости вывода, сохраняя при этом сопоставимую точность.

Для ЦОД Intel® серии GPU Flex формат OpenVINO обеспечил скорость вывода почти в 10 раз выше, чем оригинальный формат PyTorch . На процессорах Xeon CPU формат OpenVINO был в два раза быстрее формата PyTorch . Точность моделей оставалась практически одинаковой для разных форматов.

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

За более подробной информацией и инструкциями по использованию OpenVINO обращайся к официальной документации OpenVINO .

ВОПРОСЫ И ОТВЕТЫ

Как экспортировать модели YOLOv8 в формат OpenVINO ?

Экспорт моделей YOLOv8 в формат OpenVINO может значительно повысить скорость работы CPU и обеспечить ускорение GPU и NPU на оборудовании Intel . Для экспорта ты можешь использовать либо Python , либо CLI , как показано ниже:

Пример

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model
model.export(format="openvino")  # creates 'yolov8n_openvino_model/'
# Export a YOLOv8n PyTorch model to OpenVINO format
yolo export model=yolov8n.pt format=openvino  # creates 'yolov8n_openvino_model/'

За дополнительной информацией обращайся к документации по форматам экспорта.

В чем преимущества использования OpenVINO с моделями YOLOv8 ?

Использование Intel' OpenVINO toolkit с YOLOv8 моделями дает несколько преимуществ:

  1. Производительность: Достигни 3-кратного ускорения при выводе CPU и используй для ускорения Intel GPU и NPU.
  2. Оптимизатор моделей: Конвертируй, оптимизируй и выполняй модели из таких популярных фреймворков, как PyTorch, TensorFlow и ONNX.
  3. Простота использования: Чтобы помочь пользователям начать работу, доступно более 80 обучающих блокнотов, в том числе для YOLOv8.
  4. Гетерогенное исполнение: Развертывай модели на различном оборудовании Intel с помощью унифицированного API.

Для детального сравнения производительности посети наш раздел бенчмарков.

Как запустить вывод по модели YOLOv8 , экспортированной в OpenVINO?

После экспорта модели YOLOv8 в формат OpenVINO ты можешь запустить вывод с помощью Python или CLI:

Пример

from ultralytics import YOLO

# Load the exported OpenVINO model
ov_model = YOLO("yolov8n_openvino_model/")

# Run inference
results = ov_model("https://ultralytics.com/images/bus.jpg")
# Run inference with the exported model
yolo predict model=yolov8n_openvino_model source='https://ultralytics.com/images/bus.jpg'

За подробностями обращайся к нашей документации по режиму предсказаний.

Почему мне стоит выбрать Ultralytics YOLOv8 , а не другие модели для экспорта OpenVINO ?

Ultralytics YOLOv8 оптимизирован для обнаружения объектов в реальном времени с высокой точностью и скоростью. В частности, в сочетании с OpenVINO, YOLOv8 обеспечивает:

  • Ускорение до 3 раз на процессорах Intel
  • Бесшовное развертывание на Intel GPU и NPU
  • Последовательная и сопоставимая точность в различных форматах экспорта

Для глубокого анализа производительности посмотри наши подробные бенчмаркиYOLOv8 на разных аппаратных средствах.

Могу ли я сравнить модели YOLOv8 на разных форматах, таких как PyTorch, ONNX и OpenVINO?

Да, ты можешь проводить бенчмарки моделей YOLOv8 в различных форматах, включая PyTorch, TorchScript, ONNX и OpenVINO. Используй следующий фрагмент кода, чтобы запустить бенчмарки на выбранном тобой наборе данных:

Пример

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Benchmark YOLOv8n speed and [accuracy](https://www.ultralytics.com/glossary/accuracy) on the COCO8 dataset for all export formats
results = model.benchmarks(data="coco8.yaml")
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml

За подробными результатами бенчмарков обращайся к нашему разделу бенчмарков и документации по экспортным форматам.


📅 Created 11 months ago ✏️ Updated 5 days ago

Комментарии