Salta para o conteúdo

ONNX Exportação para YOLOv8 Modelos

Muitas vezes, ao implantar modelos de visão computacional, você precisará de um formato de modelo que seja flexível e compatível com diversas 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 o Microsoft desenvolveram inicialmente. O desenvolvimento contínuo de ONNX é um esforço de colaboração apoiado por várias organizações como a IBM, a Amazon (através da AWS) e 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 começarmos a exportar YOLOv8 modelos para o ONNX formato, vamos dar uma olhada onde ONNX modelos são geralmente usados.

CPU Implantação

ONNX são frequentemente implementados em CPUs devido à sua compatibilidade com o ONNX Runtime. Esse tempo de execução é otimizado para a execução do CPU . Melhora significativamente a velocidade de inferência e torna viável a implementação em tempo real do CPU .

Opções de implementação suportadas

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

  • GPU Aceleração: ONNX suporta totalmente a aceleração GPU , particularmente NVIDIA CUDA . Isto permite uma execução eficiente em NVIDIA GPUs para tarefas que exigem um elevado 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.

FAQ

Como é que exporto os modelos YOLOv8 para o formato ONNX utilizando Ultralytics?

Para exportar os seus modelos YOLOv8 para o formato ONNX utilizando Ultralytics, siga estes passos:

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 mais informações, consulta a documentação de exportação.

Quais são as vantagens de utilizar o ONNX Runtime para implementar modelos YOLOv8 ?

A utilização do ONNX Runtime para a implementação de modelos YOLOv8 oferece várias vantagens:

  • Compatibilidade entre plataformas: ONNX O tempo de execução suporta várias plataformas, como Windows, macOS e Linux, garantindo que os teus modelos funcionam sem problemas em diferentes ambientes.
  • Aceleração de hardware: ONNX O tempo de execução pode aproveitar otimizações específicas de hardware para CPUs, GPUs e aceleradores dedicados, fornecendo inferência de alto desempenho.
  • Interoperabilidade da estrutura: Os modelos treinados em estruturas populares como PyTorch ou TensorFlow podem ser facilmente convertidos para o formato ONNX e executados utilizando o tempo de execução ONNX .

Para saber mais, consulta a documentação do tempo de execuçãoONNX .

Que opções de implementação estão disponíveis para os modelos YOLOv8 exportados para ONNX?

YOLOv8 Os modelos exportados para ONNX podem ser implementados em várias plataformas, incluindo:

  • CPUs: Utiliza o ONNX Runtime para otimizar a inferência CPU .
  • GPUs: Aproveitando NVIDIA CUDA para aceleração de alto desempenho de GPU .
  • Dispositivos de ponta: Executa modelos leves em dispositivos móveis e de ponta para inferência em tempo real no dispositivo.
  • Navegadores Web: Executa modelos diretamente nos navegadores Web para aplicações interactivas baseadas na Web.

Para mais informações, explora o nosso guia sobre opções de implementação de modelos.

Porque é que devo utilizar o formato ONNX para os modelos Ultralytics YOLOv8 ?

A utilização do formato ONNX para os modelos Ultralytics YOLOv8 apresenta inúmeras vantagens:

  • Interoperabilidade: ONNX permite que os modelos sejam transferidos entre diferentes estruturas de aprendizagem automática sem problemas.
  • Otimização de desempenho: ONNX O tempo de execução pode melhorar o desempenho do modelo utilizando optimizações específicas do hardware.
  • Flexibilidade: ONNX suporta vários ambientes de implementação, permitindo-te utilizar o mesmo modelo em diferentes plataformas sem modificações.

Consulta o guia completo sobre a exportação de modelos YOLOv8 para ONNX.

Como é que posso resolver problemas ao exportar modelos de YOLOv8 para ONNX?

Ao exportar modelos YOLOv8 para ONNX, podes encontrar problemas comuns, como dependências incompatíveis ou operações não suportadas. Para solucionar esses problemas:

  1. Verifica se tens a versão correcta das dependências necessárias instaladas.
  2. Consulta a documentação oficial ONNX para conheceres os operadores e as funcionalidades suportadas.
  3. Analisa as mensagens de erro para obter pistas e consulta o guiaUltralytics Common Issues (Problemas comuns).

Se os problemas persistirem, contacta o suporte Ultralytics para obter mais assistência.



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

Comentários