Salta para o conte√ļdo

ONNX Exportação para YOLOv8 Modelos

Muitas vezes, ao implementar modelos de visão por computador, precisas de um formato de modelo que seja flexível e compatível com várias plataformas.

Exportar Ultralytics YOLOv8 modelos para o formato ONNX simplifica a implanta√ß√£o e garante um desempenho ideal em v√°rios ambientes. Este guia ir√° mostrar-te como converter facilmente os teus modelos YOLOv8 para ONNX e melhorar a sua escalabilidade e efic√°cia em aplica√ß√Ķes reais.

ONNX e ONNX Tempo de execução

ONNX, que significa Open Neural Network Exchange, √© um projeto comunit√°rio que o Facebook e a Microsoft desenvolveram inicialmente. O desenvolvimento cont√≠nuo do ONNX √© um esfor√ßo de colabora√ß√£o apoiado por v√°rias organiza√ß√Ķes como a IBM, a Amazon (atrav√©s da AWS) e a Google. O projeto visa criar um formato de ficheiro aberto concebido para representar modelos de aprendizagem autom√°tica de uma forma que permita a sua utiliza√ß√£o em diferentes estruturas e hardware de IA.

ONNX podem ser usados para fazer a transição entre diferentes estruturas sem problemas. Por exemplo, um modelo de aprendizagem profunda treinado em PyTorch pode ser exportado para o formato ONNX e depois facilmente importado para TensorFlow.

ONNX

Em alternativa, os modelos ONNX podem ser utilizados com o ONNX Runtime. ONNX O tempo de execução é um acelerador multiplataforma versátil para modelos de aprendizagem automática, compatível com estruturas como PyTorch, TensorFlow, TFLite, scikit-learn, etc.

ONNX O tempo de execução optimiza a execução dos modelos ONNX , tirando partido das capacidades específicas do hardware. Essa otimização permite que os modelos sejam executados de forma eficiente e com alto desempenho em várias plataformas de hardware, incluindo CPUs, GPUs e aceleradores especializados.

ONNX com ONNX Tempo de execução

Quer seja utilizado de forma independente ou em conjunto com o ONNX Runtime, o ONNX fornece uma solução flexível para a implementação e compatibilidade de modelos de aprendizagem automática.

Principais características dos modelos ONNX

A capacidade do ONNX para lidar com vários formatos pode ser atribuída às seguintes características principais:

  • Representa√ß√£o comum do modelo: ONNX define um conjunto comum de operadores (como convolu√ß√Ķes, camadas, etc.) e um formato de dados padr√£o. Quando um modelo √© convertido para o formato ONNX , a sua arquitetura e pesos s√£o traduzidos para esta representa√ß√£o comum. Esta uniformidade garante que o modelo pode ser entendido por qualquer estrutura que suporte ONNX.

  • Controlo de vers√Ķes e compatibilidade com vers√Ķes anteriores: ONNX mant√©m um sistema de controlo de vers√Ķes para os seus operadores. Isto garante que, mesmo com a evolu√ß√£o da norma, os modelos criados em vers√Ķes mais antigas permanecem utiliz√°veis. A retrocompatibilidade √© uma carater√≠stica crucial que evita que os modelos se tornem obsoletos rapidamente.

  • Representa√ß√£o de modelos baseada em gr√°ficos: ONNX representa modelos como gr√°ficos computacionais. Esta estrutura baseada em gr√°ficos √© uma forma universal de representar modelos de aprendizagem autom√°tica, em que os n√≥s representam opera√ß√Ķes ou c√°lculos e as arestas representam os tensores que fluem entre eles. Este formato √© facilmente adapt√°vel a v√°rias estruturas que tamb√©m representam modelos como gr√°ficos.

  • Ferramentas e ecossistema: Existe um rico ecossistema de ferramentas em torno do ONNX que ajudam na convers√£o, visualiza√ß√£o e otimiza√ß√£o de modelos. Estas ferramentas facilitam o trabalho dos programadores com modelos ONNX e a convers√£o de modelos entre diferentes estruturas sem problemas.

Utilização comum de ONNX

Antes de falarmos sobre como exportar os modelos YOLOv8 para o formato ONNX , vamos ver onde os modelos ONNX s√£o normalmente utilizados.

Implantação da CPU

ONNX s√£o frequentemente implementados em CPUs devido √† sua compatibilidade com o ONNX Runtime. Este tempo de execu√ß√£o √© optimizado para execu√ß√£o em CPU. Melhora significativamente a velocidade de infer√™ncia e viabiliza implanta√ß√Ķes de CPU em tempo real.

Op√ß√Ķes de implementa√ß√£o suportadas

Embora os modelos ONNX sejam normalmente utilizados em CPUs, também podem ser implementados nas seguintes plataformas:

  • Acelera√ß√£o de GPU: ONNX suporta totalmente a acelera√ß√£o de GPU, particularmente NVIDIA CUDA. Isso permite a execu√ß√£o eficiente em GPUs NVIDIA para tarefas que exigem alto poder computacional.

  • Dispositivos m√≥veis e de ponta: ONNX estende-se a dispositivos m√≥veis e de ponta, perfeito para cen√°rios de infer√™ncia no dispositivo e em tempo real. √Č leve e compat√≠vel com hardware de ponta.

  • Navegadores Web: ONNX pode ser executado diretamente em navegadores Web, alimentando aplica√ß√Ķes de IA interactivas e din√Ęmicas baseadas na Web.

Exportação de modelos YOLOv8 para ONNX

Podes expandir a compatibilidade de modelos e a flexibilidade de implementação convertendo os modelos YOLOv8 para o formato ONNX .

Instalação

Para instalar o pacote necess√°rio, executa:

Instalação

# Install the required package for YOLOv8
pip install ultralytics

Para obter instru√ß√Ķes detalhadas e melhores pr√°ticas relacionadas com o processo de instala√ß√£o, consulta o nosso guia de instala√ß√£oYOLOv8 . Durante a instala√ß√£o dos pacotes necess√°rios para YOLOv8, se tiveres alguma dificuldade, consulta o nosso guia de Problemas comuns para obteres solu√ß√Ķes e sugest√Ķes.

Utilização

Antes de mergulhar nas instru√ß√Ķes de utiliza√ß√£o, n√£o te esque√ßas de verificar a gama de modelosYOLOv8 oferecidos por Ultralytics. Isto ajudar-te-√° a escolher o modelo mais adequado √†s necessidades do teu projeto.

Utilização

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.pt')

# Export the model to ONNX format
model.export(format='onnx')  # creates 'yolov8n.onnx'

# Load the exported ONNX model
onnx_model = YOLO('yolov8n.onnx')

# Run inference
results = onnx_model('https://ultralytics.com/images/bus.jpg')
# Export a YOLOv8n PyTorch model to ONNX format
yolo export model=yolov8n.pt format=onnx  # creates 'yolov8n.onnx'

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

Para obter mais detalhes sobre o processo de exportação, visita a página de documentaçãoUltralytics sobre exportação.

Implantação de modelos exportados YOLOv8 ONNX

Depois de exportar com √™xito os modelos Ultralytics YOLOv8 para o formato ONNX , a pr√≥xima etapa √© implantar esses modelos em v√°rios ambientes. Para obter instru√ß√Ķes detalhadas sobre a implanta√ß√£o dos modelos ONNX , d√° uma olhada nos seguintes recursos:

Resumo

Neste guia, aprendeste a exportar modelos Ultralytics YOLOv8 para o formato ONNX para aumentar a sua interoperabilidade e desempenho em v√°rias plataformas. Tamb√©m conheces as op√ß√Ķes de implementa√ß√£o ONNX Runtime e ONNX .

Para mais informa√ß√Ķes sobre a utiliza√ß√£o, visita a documenta√ß√£o oficialONNX .

Al√©m disso, se quiseres saber mais sobre outras integra√ß√Ķes de Ultralytics YOLOv8 , visita a nossa p√°gina de guia de integra√ß√£o. Encontrar√°s muitos recursos e informa√ß√Ķes √ļteis.



Criado em 2024-01-25, Atualizado em 2024-01-25
Autores: glenn-jocher (1), abirami-vina (1)

Coment√°rios