Intel OpenVINO Exportação
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, 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")
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
- Desempenho: OpenVINO oferece inferência de alto desempenho utilizando o poder das CPUs Intel , GPUs integradas e discretas e FPGAs.
- 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.).
- 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.
- 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:
- Ficheiro XML: Descreve a topologia da rede.
- Ficheiro BIN: Contém os dados binários do weights and biases .
- 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:
- Inicializa OpenVINO criando
core = Core()
. - Carrega o modelo com o comando
core.read_model()
método. - Compila o modelo com o comando
core.compile_model()
função. - Prepara a entrada (imagem, texto, áudio, etc.).
- 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 Intel Flex e Arc GPUs, e em Intel Xeon CPUs 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.
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](https://user-images.githubusercontent.com/26833433/253741543-62659bf8-1765-4d0b-b71c-8a4f9885506a.jpg)
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
A Intel® Arc™ representa a incursão da Intel no mercado dos computadores dedicados GPU . 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 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](https://user-images.githubusercontent.com/26833433/253741545-8530388f-8fd1-44f7-a4ae-f875d59dc282.jpg)
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
O Intel® Xeon® CPU é 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 no Intel® Xeon® Scalable de 4ª geração CPU com precisão FP32.
![Xeon CPU benchmarks](https://user-images.githubusercontent.com/26833433/253741546-dcd8e52a-fc38-424f-b87e-c8365b6f28dc.jpg)
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](https://user-images.githubusercontent.com/26833433/254559985-727bfa43-93fa-4fec-a417-800f869f3f9e.jpg)
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
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), or
data='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/'
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:
- Desempenho: Obtém uma aceleração de até 3x na inferência CPU e aproveita as GPUs e NPUs Intel para aceleração.
- Otimizador de modelos: Converte, optimiza e executa modelos de estruturas populares como PyTorch, TensorFlow, e ONNX.
- 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.
- 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")
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 on the COCO8 dataset for all export formats
results = model.benchmarks(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.
Criado em 2023-11-12, Atualizado em 2024-07-05
Autores: glenn-jocher (14), andrei-kochin (1), abirami-vina (1), RizwanMunawar (1), Burhan-Q (1)