Salta para o conteúdo

Intel OpenVINO Exportar

OpenVINO Ecossistema

Neste guia, abordamos a exportação de modelos YOLOv8 para o formato OpenVINO que pode fornecer até 3x a velocidade da CPU, além de acelerar em outro hardware Intel(iGPU, dGPU, VPU, etc.).

OpenVINO, abreviatura de Open Visual Inference & Neural Network Optimization toolkit, é um conjunto de ferramentas abrangente para otimizar e implementar modelos de inferência de IA. Embora o nome contenha Visual, OpenVINO também suporta várias tarefas adicionais, incluindo linguagem, áudio, séries temporais, 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

Benefícios de OpenVINO

  1. Desempenho: OpenVINO fornece 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. Optimizador de modelos: OpenVINO fornece um optimizador de modelos que importa, converte e optimiza modelos de estruturas populares de aprendizagem profunda, como PyTorch, TensorFlow, TensorFlow Lite, Keras, ONNX, PaddlePaddle, e 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 tempo de execução 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 que precisas 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 Os testes de referência abaixo foram executados pela equipa Ultralytics em 4 formatos de modelos diferentes, medindo a velocidade e a precisão: PyTorch, TorchScript, ONNX e OpenVINO. Os testes de referência foram efectuados em GPUs Intel Flex e Arc, e em CPUs Intel Xeon com precisão FP32 (com o 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.

GPU Intel Flex

A série Intel® Data Center GPU Flex é uma solução versátil e robusta projetada para a nuvem visual inteligente. Esta GPU suporta uma ampla gama de cargas de trabalho, incluindo streaming de mídia, jogos em nuvem, inferência visual de IA e cargas de trabalho de infraestrutura de desktop 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 GPU da série Flex é otimizada para densidade e qualidade, oferecendo alta confiabilidade, disponibilidade e escalabilidade.

Os testes de referência abaixo são executados na GPU Flex 170 do Intel® Data Center com precisão FP32.

Benchmarks de GPU Flex
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.

GPU Intel Arc

A Intel® Arc™ representa a incursão da Intel no mercado das GPU dedicadas. A série Arc™, concebida para competir com os principais fabricantes de GPU, como a AMD e a Nvidia, destina-se aos mercados de computadores portáteis e de secretária. A série inclui versões móveis para dispositivos compactos, como computadores portáteis, e versões maiores e mais potentes para computadores de secretária.

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 da GPU significa uma variante móvel e integrada.

As primeiras análises elogiaram a série Arc™, em particular a GPU A770M integrada, 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 na GPU Intel® Arc 770 com precisão FP32.

Benchmarks de GPU Arc
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

CPU Intel Xeon

A CPU Intel® Xeon® é um processador de alto desempenho, de nível de servidor, projetado para cargas de trabalho complexas e exigentes. Desde a computação em nuvem e virtualização de ponta até aplicativos de inteligência artificial e aprendizado de máquina, as CPUs Xeon® fornecem a potência, a confiabilidade e a flexibilidade necessárias para os centros de dados atuais.

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 na CPU escalável Intel® Xeon® de 4ª geração com precisão FP32.

Benchmarks de CPU Xeon
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

CPU Intel Core

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 na CPU Intel® Core® i7-13700H de 13ª geração com precisão FP32.

Comparativos de CPU de núcleo
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

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 COCO128 dataset for all all export formats
results= model.benchmarks(data='coco128.yaml')
# Benchmark YOLOv8n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco128.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 a série Intel® Data Center GPU Flex, o formato OpenVINO foi capaz de fornecer velocidades de inferência quase 10 vezes mais rápidas do que o formato original PyTorch . Na CPU Xeon, o formato OpenVINO foi duas vezes mais rápido 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 .



Criado em 2023-11-12, Atualizado em 2024-02-13
Autores: chr043416@gmail.com (1), glenn-jocher (7), Burhan-Q (1)

Comentários