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