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.
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.
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:
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')
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:
-
ONNX Tempo de execução Python Documentação da API: Este guia fornece informações essenciais para carregar e executar modelos ONNX utilizando o ONNX Runtime.
-
Implantação em dispositivos de borda: Consulta esta página de documentação para veres diferentes exemplos de implementação de modelos ONNX no edge.
-
ONNX Tutoriais no GitHub: Uma coleção de tutoriais abrangentes que cobrem vários aspectos da utilização e implementação de modelos ONNX em diferentes cenários.
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.