Salta para o conteúdo

Intel OpenVINO Exportação

OpenVINO Ecossistema

Neste guia, abordamos a exportação de modelos do YOLOv8 para o formato OpenVINO que pode fornecer até 3x CPU bem como a aceleração da inferência YOLO em hardware Intel GPU e no hardware 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.



Observa: Como exportar e otimizar um modelo Ultralytics YOLOv8 para inferência com OpenVINO.

Exemplos de utilização

Exporta um modelo YOLOv8n para o formato OpenVINO e executa a inferência com o modelo exportado.

Exemplo

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'

Argumentos

Chave Valor Descrição
format 'openvino' formato para o qual exportar
imgsz 640 tamanho da imagem como escalar ou lista (h, w), ou seja, (640, 480)
half False Quantização FP16
int8 False Quantização INT8
batch 1 batch size for inference
dynamic False permite tamanhos de entrada dinâmicos

Benefícios de OpenVINO

  1. Desempenho: OpenVINO oferece inferência de alto desempenho utilizando o poder das CPUs Intel , GPUs integradas e discretas e FPGAs.
  2. Suporte para execução heterogénea: OpenVINO fornece uma API para escrever uma vez e implementar em qualquer hardware Intel suportado (CPU, GPU, FPGA, VPU, etc.).
  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. Facilidade de utilização: O conjunto de ferramentas é fornecido com mais de 80 cadernos de tutoriais (incluindo YOLOv8 optimization) que ensinam diferentes aspectos do conjunto de ferramentas.

OpenVINO Estrutura de exportação

Quando exportas um modelo para o formato OpenVINO , o resultado é um diretório que contém o seguinte:

  1. Ficheiro XML: Descreve a topologia da rede.
  2. Ficheiro BIN: Contém os dados binários do weights and biases .
  3. Ficheiro de mapeamento: Mantém o mapeamento dos tensores de saída do modelo original para OpenVINO tensor nomes.

Podes utilizar estes ficheiros para executar a inferência com o motor de inferência OpenVINO .

Usando OpenVINO Exportar na implantação

Quando tiveres os ficheiros OpenVINO , podes utilizar o tempo de execução OpenVINO para executar o modelo. O Runtime fornece uma API unificada para inferência em todo o hardware Intel suportado. Também fornece recursos avançados, como balanceamento de carga no hardware Intel e execução assíncrona. Para obter mais informações sobre a execução da inferência, consulte o Guia de tempo de execução da inferência com OpenVINO .

Lembra-te de que precisarás dos ficheiros XML e BIN, bem como de quaisquer definições específicas da aplicação, como o tamanho da entrada, o fator de escala para normalização, etc., para configurar e utilizar corretamente o modelo com o Tempo de execução.

Na tua aplicação de implantação, normalmente fazes os seguintes passos:

  1. Inicializa OpenVINO criando core = Core().
  2. Carrega o modelo com o comando core.read_model() método.
  3. Compila o modelo com o comando core.compile_model() função.
  4. Prepara a entrada (imagem, texto, áudio, etc.).
  5. Executa a inferência utilizando compiled_model(input_data).

Para obter etapas mais detalhadas e trechos de código, consulta a documentaçãoOpenVINO ou o tutorial da API.

OpenVINO YOLOv8 Referências

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 argumento).

Nota

Os resultados dos testes de referência abaixo são para referência e podem variar com base na configuração exacta de hardware e software de um sistema, bem como na carga de trabalho atual do sistema no momento em que os testes de referência são executados.

Todos os benchmarks são executados com openvino Python versão do pacote 2023.0.1.

Intel Flex GPU

O Intel® Data Center GPU Flex Series é uma solução versátil e robusta concebida para a nuvem visual inteligente. Este GPU suporta uma vasta gama de cargas de trabalho, incluindo streaming de multimédia, jogos na nuvem, inferência visual de IA e cargas de trabalho de infraestrutura de ambiente de trabalho virtual. Destaca-se pela sua arquitetura aberta e suporte integrado para a codificação AV1, fornecendo uma pilha de software baseada em padrões para aplicações de alto desempenho e arquitetura cruzada. A série Flex GPU está otimizada para densidade e qualidade, oferecendo elevada fiabilidade, disponibilidade e escalabilidade.

Os benchmarks abaixo são executados no Intel® Data Center GPU Flex 170 com precisão FP32.

Flex GPU benchmarks
Modelo Formato Estado Tamanho (MB) mAP50-95(B) Tempo de inferência (ms/im)
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

Esta tabela representa os resultados do benchmark para cinco modelos diferentes (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) em quatro formatos diferentes (PyTorch, TorchScript, ONNX, OpenVINO), dando-nos o estado, o tamanho, a métrica mAP50-95(B) e o tempo de inferência para cada combinação.

Intel Arco 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.

A série Arc™ está dividida em três categorias: Arc™ 3, Arc™ 5 e Arc™ 7, com cada número a indicar o nível de desempenho. Cada categoria inclui vários modelos, e o "M" no nome do modelo GPU significa uma variante móvel e integrada.

As primeiras análises elogiaram a série Arc™, em particular o A770M GPU integrado, pelo seu impressionante desempenho gráfico. A disponibilidade da série Arc™ varia consoante a região, e espera-se que sejam lançados modelos adicionais em breve. As GPUs Intel® Arc™ oferecem soluções de alto desempenho para uma série de necessidades de computação, desde jogos até criação de conteúdo.

Os testes de referência abaixo são executados no Intel® Arc 770 GPU com precisão FP32.

Arco GPU benchmarks
Modelo Formato Estado Tamanho (MB) métricas/mAP50-95(B) Tempo de inferência (ms/im)
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.

Notavelmente, as CPUs Xeon® oferecem alta densidade de computação e escalabilidade, tornando-as ideais tanto para pequenas empresas quanto para grandes corporações. Ao escolher as CPUs Intel® Xeon®, as organizações podem lidar com confiança com as suas tarefas de computação mais exigentes e promover a inovação, mantendo a rentabilidade e a eficiência operacional.

Os testes de referência abaixo são executados no Intel® Xeon® Scalable de 4ª geração CPU com precisão FP32.

Xeon CPU benchmarks
Modelo Formato Estado Tamanho (MB) métricas/mAP50-95(B) Tempo de inferência (ms/im)
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 Núcleo CPU

A série Intel® Core® é uma gama de processadores de alto desempenho da Intel. A linha inclui o Core i3 (nível de entrada), Core i5 (gama média), Core i7 (topo de gama) e Core i9 (desempenho extremo). Cada série atende a diferentes necessidades e orçamentos de computação, desde tarefas diárias até cargas de trabalho profissionais exigentes. A cada nova geração, são introduzidas melhorias no desempenho, na eficiência energética e nas funcionalidades.

Os testes de referência abaixo são executados no Intel® Core® i7-13700H de 13ª geração CPU com precisão FP32.

Core CPU benchmarks
Modelo Formato Estado Tamanho (MB) métricas/mAP50-95(B) Tempo de inferência (ms/im)
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.

Referências

Modelo Formato Precisão Estado Tamanho (MB) métricas/mAP50-95(B) Tempo de inferência (ms/im)
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

Modelo Formato Precisão Estado Tamanho (MB) métricas/mAP50-95(B) Tempo de inferência (ms/im)
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

Modelo Formato Precisão Estado Tamanho (MB) métricas/mAP50-95(B) Tempo de inferência (ms/im)
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

Reproduzir os nossos resultados

Para reproduzir os benchmarks Ultralytics acima em todos os formatos de exportação, executa este código:

Exemplo

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

Nota que os resultados dos testes de referência podem variar com base na configuração exacta de hardware e software de um sistema, bem como na carga de trabalho atual do sistema no momento em que os testes de referência são executados. Para obter os resultados mais fiáveis, utiliza um conjunto de dados com um grande número de imagens, ou seja data='coco128.yaml' (128 val images), ordata='coco.yaml'` (5000 imagens val).

Conclusão

Os resultados da avaliação comparativa demonstram claramente as vantagens de exportar o modelo YOLOv8 para o formato OpenVINO . Em diferentes modelos e plataformas de hardware, o formato OpenVINO supera consistentemente outros formatos em termos de velocidade de inferência, mantendo uma precisão comparável.

Para o Intel® Data Center GPU Flex Series, o formato OpenVINO foi capaz de fornecer velocidades de inferência quase 10 vezes mais rápidas do que o formato PyTorch original. No Xeon CPU, o formato OpenVINO foi duas vezes mais rápido do que o formato PyTorch . A precisão dos modelos permaneceu quase idêntica entre os diferentes formatos.

Os benchmarks sublinham a eficácia do OpenVINO como uma ferramenta para implementar modelos de aprendizagem profunda. Ao converter modelos para o formato OpenVINO , os programadores podem obter melhorias de desempenho significativas, facilitando a implementação destes modelos em aplicações do mundo real.

Para obter informações e instruções mais detalhadas sobre a utilização do OpenVINO, consulta a documentação oficial do OpenVINO .

FAQ

Como é que exporto os modelos YOLOv8 para o formato OpenVINO ?

Exportar modelos YOLOv8 para o formato OpenVINO pode aumentar significativamente a velocidade CPU e permitir acelerações GPU e NPU no hardware Intel . Para exportar, podes usar Python ou CLI como mostrado abaixo:

Exemplo

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/'

Para mais informações, consulta a documentação sobre formatos de exportação.

Quais são as vantagens de utilizar OpenVINO com os modelos YOLOv8 ?

A utilização do conjunto de ferramentas Intel's OpenVINO com modelos YOLOv8 oferece vários benefícios:

  1. Desempenho: Obtém uma aceleração de até 3x na inferência CPU e aproveita as GPUs e NPUs Intel para aceleração.
  2. Otimizador de modelos: Converte, optimiza e executa modelos de estruturas populares como PyTorch, TensorFlow, e ONNX.
  3. Facilidade de utilização: Estão disponíveis mais de 80 blocos de notas tutoriais para ajudar os utilizadores a começar, incluindo os de YOLOv8.
  4. Execução heterogénea: Implementa modelos em vários hardwares Intel com uma API unificada.

Para comparações de desempenho pormenorizadas, visita a nossa secção de referências.

Como é que posso fazer inferência utilizando um modelo YOLOv8 exportado para OpenVINO?

Depois de exportar um modelo YOLOv8 para o formato OpenVINO , podes executar a inferência utilizando Python ou CLI:

Exemplo

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'

Consulta a nossa documentação sobre o modo de previsão para obteres mais informações.

Por que razão devo escolher Ultralytics YOLOv8 em vez de outros modelos para OpenVINO exportação?

Ultralytics YOLOv8 está optimizado para a deteção de objectos em tempo real com elevada precisão e velocidade. Especificamente, quando combinado com OpenVINO, YOLOv8 fornece:

  • Aumenta a velocidade até 3x em CPUs Intel
  • Implementação sem problemas em Intel GPUs e NPUs
  • Precisão consistente e comparável em vários formatos de exportação

Para uma análise aprofundada do desempenho, consulta os nossos benchmarksYOLOv8 detalhados em diferentes hardwares.

Posso comparar os modelos YOLOv8 em diferentes formatos, como PyTorch, ONNX e OpenVINO?

Sim, podes comparar os modelos YOLOv8 em vários formatos, incluindo PyTorch, TorchScript, ONNX, e OpenVINO. Utiliza o seguinte fragmento de código para executar testes de referência no conjunto de dados escolhido:

Exemplo

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

Para obteres resultados de benchmark detalhados, consulta a nossa secção de benchmarks e a documentação sobre formatos de exportação.


📅 Created 11 months ago ✏️ Updated 5 days ago

Comentários