Ir para o conteúdo

Exportação ONNX para Modelos YOLO11

Frequentemente, ao implementar modelos de visão computacional, você precisará de um formato de modelo que seja flexível e compatível com várias plataformas.

A exportação de modelos Ultralytics YOLO11 para o formato ONNX agiliza a implantação e garante o desempenho ideal em vários ambientes. Este guia mostrará como converter facilmente seus modelos YOLO11 para ONNX e aprimorar sua escalabilidade e eficácia em aplicações do mundo real.

ONNX e ONNX Runtime

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 colaborativo apoiado por várias organizações como IBM, Amazon (através da AWS) e Google. O projeto visa criar um formato de arquivo aberto projetado para representar modelos de machine learning de forma que possam ser usados em diferentes frameworks e hardware de IA.

Os modelos ONNX podem ser usados para fazer a transição entre diferentes frameworks de forma integrada. Por exemplo, um modelo de aprendizado profundo treinado em PyTorch pode ser exportado para o formato ONNX e, em seguida, facilmente importado para o TensorFlow.

ONNX

Alternativamente, os modelos ONNX podem ser usados com o ONNX Runtime. O ONNX Runtime é um acelerador multiplataforma versátil para modelos de aprendizado de máquina que é compatível com frameworks como PyTorch, TensorFlow, TFLite, scikit-learn, etc.

O ONNX Runtime otimiza a execução de modelos ONNX, aproveitando os recursos específicos 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 Runtime

Seja usado independentemente ou em conjunto com o ONNX Runtime, o ONNX oferece uma solução flexível para a implantação e compatibilidade de modelos de machine learning.

Principais funcionalidades dos modelos ONNX

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

  • Representação de Modelo Comum: 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, sua arquitetura e pesos são traduzidos para esta representação comum. Essa uniformidade garante que o modelo possa ser compreendido por qualquer framework que suporte ONNX.

  • Versionamento e Compatibilidade Retroativa: O ONNX mantém um sistema de versionamento para os seus operadores. Isto garante que, mesmo com a evolução do padrão, os modelos criados em versões mais antigas permaneçam utilizáveis. A compatibilidade retroativa é uma característica crucial que impede que os modelos se tornem obsoletos rapidamente.

  • Representação de Modelo Baseada em Grafos: ONNX representa modelos como grafos computacionais. Essa estrutura baseada em grafos é uma forma universal de representar modelos de aprendizado de máquina, onde os nós representam operações ou computações 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 grafos.

  • Ferramentas e Ecossistema: Existe um ecossistema rico de ferramentas em torno do ONNX que auxiliam na conversão, visualização e otimização de modelos. Essas ferramentas tornam mais fácil para os desenvolvedores trabalharem com modelos ONNX e converterem modelos entre diferentes frameworks de forma integrada.

Uso Comum de ONNX

Antes de vermos como exportar modelos YOLO11 para o formato ONNX, vamos dar uma olhada onde os modelos ONNX são normalmente usados.

Implantação em CPU

Os modelos ONNX são frequentemente implantados em CPUs devido à sua compatibilidade com o ONNX Runtime. Este runtime é otimizado para execução em CPU. Ele melhora significativamente a velocidade de inferência e torna viáveis as implantações de CPU em tempo real.

Opções de Implantação Suportadas

Embora os modelos ONNX sejam comumente usados em CPUs, eles também podem ser implantados nas seguintes plataformas:

  • Aceleração por GPU: ONNX oferece suporte total à aceleração por GPU, particularmente NVIDIA CUDA. Isso permite a execução eficiente em GPUs NVIDIA para tarefas que exigem alta capacidade computacional.

  • Dispositivos Edge e Móveis: O ONNX se estende a dispositivos edge e móveis, perfeito para cenários de inferência no dispositivo e em tempo real. É leve e compatível com hardware edge.

  • Navegadores Web: ONNX pode ser executado diretamente em navegadores web, alimentando aplicações de IA interativas e dinâmicas baseadas na web.

Exportando Modelos YOLO11 para ONNX

Você pode expandir a compatibilidade do modelo e a flexibilidade de implantação convertendo modelos YOLO11 para o formato ONNX. O Ultralytics YOLO11 fornece um processo de exportação direto que pode melhorar significativamente o desempenho do seu modelo em diferentes plataformas.

Instalação

Para instalar o pacote necessário, execute:

Instalação

# Install the required package for YOLO11
pip install ultralytics

Para obter instruções detalhadas e práticas recomendadas relacionadas ao processo de instalação, consulte nosso guia de instalação do YOLO11. Ao instalar os pacotes necessários para o YOLO11, se você encontrar alguma dificuldade, consulte nosso guia de problemas comuns para obter soluções e dicas.

Utilização

Antes de se aprofundar nas instruções de uso, certifique-se de verificar a variedade de modelos YOLO11 oferecidos pela Ultralytics. Isso ajudará você a escolher o modelo mais adequado para os requisitos do seu projeto.

Utilização

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

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

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

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

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

Argumentos de Exportação

Ao exportar seu modelo YOLO11 para o formato ONNX, você pode personalizar o processo usando vários argumentos para otimizar para suas necessidades específicas de implementação:

Argumento Tipo Padrão Descrição
format str 'onnx' Formato de destino para o modelo exportado, definindo a compatibilidade com vários ambientes de implementação.
imgsz int ou tuple 640 Tamanho de imagem desejado para a entrada do modelo. Pode ser um inteiro para imagens quadradas ou uma tupla (height, width) para dimensões específicas.
half bool False Ativa a quantização FP16 (meia precisão), reduzindo o tamanho do modelo e potencialmente acelerando a inferência em hardware suportado.
dynamic bool False Permite tamanhos de entrada dinâmicos, aumentando a flexibilidade no manuseio de diferentes dimensões de imagem.
simplify bool True Simplifica o grafo do modelo com onnxslim, potencialmente melhorando o desempenho e a compatibilidade.
opset int None Especifica a versão do opset ONNX para compatibilidade com diferentes analisadores e tempos de execução ONNX. Se não estiver definido, usa a versão mais recente compatível.
nms bool False Adiciona a Supressão Não Máxima (NMS), essencial para um pós-processamento de detecção preciso e eficiente.
batch int 1 Especifica o tamanho do lote de inferência do modelo de exportação ou o número máximo de imagens que o modelo exportado processará simultaneamente em predict modo.
device str None Especifica o dispositivo para exportação: GPU (device=0CPU (device=cpu), MPS para Apple silicon (device=mps).

Para mais detalhes sobre o processo de exportação, visite a página de documentação da Ultralytics sobre exportação.

Implantação de Modelos ONNX YOLO11 Exportados

Depois de exportar com sucesso seus modelos Ultralytics YOLO11 para o formato ONNX, a próxima etapa é implementar esses modelos em vários ambientes. Para obter instruções detalhadas sobre como implementar seus modelos ONNX, dê uma olhada nos seguintes recursos:

Resumo

Neste guia, você aprendeu como exportar modelos Ultralytics YOLO11 para o formato ONNX para aumentar sua interoperabilidade e desempenho em várias plataformas. Você também foi apresentado ao ONNX Runtime e às opções de implantação ONNX.

A exportação ONNX é apenas um dos muitos formatos de exportação suportados pelo Ultralytics YOLO11, permitindo que você implante seus modelos em praticamente qualquer ambiente. Dependendo de suas necessidades específicas, você também pode querer explorar outras opções de exportação como TensorRT para desempenho máximo de GPU ou CoreML para dispositivos Apple.

Para obter mais detalhes sobre o uso, visite a documentação oficial do ONNX.

Além disso, se você quiser saber mais sobre outras integrações do Ultralytics YOLO11, visite nossa página do guia de integração. Você encontrará muitos recursos e insights úteis lá.

FAQ

Como exportar modelos YOLO11 para o formato ONNX usando Ultralytics?

Para exportar seus modelos YOLO11 para o formato ONNX usando Ultralytics, siga estes passos:

Utilização

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

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

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

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

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

Para mais detalhes, visite a documentação de exportação.

Quais são as vantagens de usar o ONNX Runtime para implantar modelos YOLO11?

Usar o ONNX Runtime para implantar modelos YOLO11 oferece várias vantagens:

  • Compatibilidade entre plataformas: O ONNX Runtime suporta várias plataformas, como Windows, macOS e Linux, garantindo que os seus modelos funcionem sem problemas em diferentes ambientes.
  • Aceleração de hardware: O ONNX Runtime pode aproveitar otimizações específicas de hardware para CPUs, GPUs e aceleradores dedicados, proporcionando inferência de alto desempenho.
  • Interoperabilidade de framework: Modelos treinados em frameworks populares como PyTorch ou TensorFlow podem ser facilmente convertidos para o formato ONNX e executados usando o ONNX Runtime.
  • Otimização de Desempenho: O ONNX Runtime pode fornecer até 3x de aceleração da CPU em comparação com os modelos PyTorch nativos, tornando-o ideal para cenários de implantação onde os recursos da GPU são limitados.

Saiba mais consultando a documentação do ONNX Runtime.

Quais opções de implementação estão disponíveis para modelos YOLO11 exportados para ONNX?

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

  • CPUs: Utilização do ONNX Runtime para inferência de CPU otimizada.
  • GPUs: Utilizando NVIDIA CUDA para aceleração de GPU de alto desempenho.
  • Dispositivos edge: Execução de modelos leves em dispositivos edge e móveis para inferência em tempo real e no dispositivo.
  • Navegadores web: Execução de modelos diretamente em navegadores web para aplicações interativas baseadas na web.
  • Serviços de nuvem: Implementação em plataformas de nuvem que suportam o formato ONNX para inferência escalável.

Para obter mais informações, explore o nosso guia sobre opções de implantação de modelo.

Por que devo usar o formato ONNX para modelos Ultralytics YOLO11?

Usar o formato ONNX para modelos Ultralytics YOLO11 oferece inúmeros benefícios:

  • Interoperabilidade: ONNX permite que os modelos sejam transferidos entre diferentes frameworks de machine learning de forma integrada.
  • Otimização de Desempenho: O ONNX Runtime pode melhorar o desempenho do modelo utilizando otimizações específicas de hardware.
  • Flexibilidade: O ONNX suporta vários ambientes de implantação, permitindo que você use o mesmo modelo em diferentes plataformas sem modificação.
  • Padronização: ONNX fornece um formato padronizado que é amplamente suportado em toda a indústria, garantindo compatibilidade a longo prazo.

Consulte o guia completo sobre como exportar modelos YOLO11 para ONNX.

Como posso solucionar problemas ao exportar modelos YOLO11 para ONNX?

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

  1. Verifique se você tem a versão correta das dependências necessárias instaladas.
  2. Consulte a documentação oficial do ONNX para obter informações sobre operadores e recursos suportados.
  3. Revise as mensagens de erro em busca de pistas e consulte o guia de Problemas Comuns da Ultralytics.
  4. Tente usar diferentes argumentos de exportação, como simplify=True ou ajustando o(a) opset versão.
  5. Para problemas de tamanho de entrada dinâmico, defina dynamic=True durante a exportação.

Se os problemas persistirem, entre em contato com o suporte da Ultralytics para obter mais assistência.



📅 Criado há 1 ano ✏️ Atualizado há 3 meses

Comentários