ONNX Exportação para YOLO11 Modelos
Muitas vezes, ao implementar modelos de visão por computador, é necessário um formato de modelo que seja flexível e compatível com várias plataformas.
A exportação de Ultralytics YOLO11 modelos para o formato ONNX simplifica a implementação e garante um desempenho ótimo em vários ambientes. Este guia mostra-lhe como converter facilmente os seus modelos YOLO11 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 utilizados 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 Runtime é um acelerador multiplataforma versátil para modelos de aprendizagem automática, compatível com estruturas como PyTorch, TensorFlowTFLite, scikit-learn, etc.
ONNX O tempo de execução optimiza a execução dos modelos ONNX , tirando partido das capacidades específicas do hardware. Esta otimização permite que os modelos sejam executados de forma eficiente e com elevado 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 caraterísticas dos modelos ONNX
A capacidade do ONNX de lidar com vários formatos pode ser atribuída às seguintes caraterísticas principais:
-
Representação comum de modelos: 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 compreendido 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 aos programadores o trabalho 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 modelos YOLO11 para o formato ONNX , vejamos onde os modelos ONNX são normalmente utilizados.
CPU Implantação
ONNX são frequentemente implementados em CPUs devido à sua compatibilidade com o ONNX Runtime. Este tempo de execução é optimizado para a execução em 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 , em especial 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 YOLO11 para ONNX
Pode expandir a compatibilidade do modelo e a flexibilidade da implementação convertendo os modelos YOLO11 para o formato ONNX . Ultralytics YOLO11 oferece um processo de exportação simples que pode melhorar significativamente o desempenho do seu modelo em diferentes plataformas.
Instalação
Para instalar o pacote necessário, execute:
Para obter instruções detalhadas e melhores práticas relacionadas com o processo de instalação, consulte o nosso guia de instalaçãoYOLO11 . Ao instalar os pacotes necessários para YOLO11, se encontrar alguma dificuldade, consulte o nosso guia de Problemas comuns para obter soluções e dicas.
Utilização
Antes de se debruçar sobre as instruções de utilização, não deixe de consultar a gama de modelosYOLO11 propostos por Ultralytics. Isto ajudá-lo-á a escolher o modelo mais adequado às necessidades 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")
Argumentos de exportação
Ao exportar o seu modelo YOLO11 para o formato ONNX , pode personalizar o processo utilizando vários argumentos para otimizar as suas necessidades específicas de implementação:
Argumento | Tipo | Predefinição | Descrição |
---|---|---|---|
format |
str |
'onnx' |
Formato de destino para o modelo exportado, definindo a compatibilidade com vários ambientes de implantação. |
imgsz |
int ou tuple |
640 |
Tamanho de imagem pretendido para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou uma tupla (height, width) para dimensões específicas. |
half |
bool |
False |
Permite a quantização FP16 (meia-precisão), reduzindo o tamanho do modelo e potencialmente acelerando a inferência no hardware suportado. |
dynamic |
bool |
False |
Permite tamanhos de entrada dinâmicos, aumentando a flexibilidade no tratamento de dimensões de imagem variáveis. |
simplify |
bool |
True |
Simplifica o gráfico do modelo com onnxslim , melhorando potencialmente o desempenho e a compatibilidade. |
opset |
int |
None |
Especifica a versão do ONNX opset para compatibilidade com diferentes analisadores e tempos de execução do ONNX . Se não for definido, utiliza a última versão suportada. |
nms |
bool |
False |
Adiciona Supressão Não Máxima (NMS), essencial para um pós-processamento de deteção preciso e eficiente. |
batch |
int |
1 |
Especifica o tamanho da inferência em lote do modelo de exportação ou o número máximo de imagens que o modelo exportado irá processar em simultâneo em predict modo. |
Para mais informações sobre o processo de exportação, visite a página de documentaçãoUltralytics sobre exportação.
Implantação de modelos exportados YOLO11 ONNX
Depois de exportar com êxito os modelos Ultralytics YOLO11 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 , consulte os 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 tempo de execução ONNX .
-
Implantação em dispositivos de borda: Consulte esta página de documentos para ver diferentes exemplos de implantaçã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.
-
Servidor de InferênciaTriton : Saiba como implementar os seus modelos ONNX com o Servidor de Inferência Triton da NVIDIA para implementações escaláveis e de elevado desempenho.
Resumo
Neste guia, você aprendeu a exportar modelos Ultralytics YOLO11 para o formato ONNX para aumentar sua interoperabilidade e desempenho em várias plataformas. Também foram apresentadas as opções de implantação ONNX Runtime e ONNX .
A exportação ONNX é apenas um dos muitos formatos de exportação suportados pelo Ultralytics YOLO11, permitindo-lhe implementar os seus modelos em praticamente qualquer ambiente. Dependendo das suas necessidades específicas, poderá também querer explorar outras opções de exportação como TensorRT para obter o máximo desempenho GPU ou CoreML para dispositivos Apple.
Para mais informações sobre a utilização, visite a documentação oficialONNX .
Além disso, se quiser saber mais sobre outras integrações de Ultralytics YOLO11 , visite a nossa página de guia de integração. Encontrará aí muitos recursos e informações úteis.
FAQ
Como é que exporto modelos YOLO11 para o formato ONNX utilizando Ultralytics?
Para exportar os seus modelos YOLO11 para o formato ONNX utilizando 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")
Para mais pormenores, consulte a documentação de exportação.
Quais são as vantagens de utilizar o ONNX Runtime para a implementação de modelos YOLO11 ?
A utilização do ONNX Runtime para a implementação de modelos YOLO11 oferece várias vantagens:
- Compatibilidade entre plataformas: ONNX O tempo de execução é compatível com várias plataformas, como Windows, macOS e Linux, garantindo que seus modelos sejam executados sem problemas em diferentes ambientes.
- Aceleração de hardware: ONNX O tempo de execução pode aproveitar optimizações específicas de hardware para CPUs, GPUs e aceleradores dedicados, proporcionando uma inferência de elevado desempenho.
- Interoperabilidade de estruturas: 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 .
- Otimização do desempenho: ONNX Runtime pode fornecer até 3x a velocidade CPU em comparação com os modelos nativos PyTorch , tornando-o ideal para cenários de implantação em que os recursos GPU são limitados.
Para saber mais, consulte a documentação do tempo de execuçãoONNX .
Que opções de implementação estão disponíveis para os modelos YOLO11 exportados para ONNX?
YOLO11 os modelos exportados para ONNX podem ser implementados em várias plataformas, incluindo:
- CPUs: Utilizando ONNX Runtime para otimizar a inferência CPU .
- GPUs: Tirar partido de NVIDIA CUDA para uma aceleração de alto desempenho de GPU .
- Dispositivos de ponta: Execução de modelos leves em dispositivos móveis e de ponta para inferência em tempo real no dispositivo.
- Navegadores Web: Execução de modelos diretamente nos navegadores Web para aplicações interactivas baseadas na Web.
- Serviços em nuvem: Implementação em plataformas de nuvem que suportam o formato ONNX para inferência escalável.
Para mais informações, consulte o nosso guia sobre opções de implementação de modelos.
Por que razão devo utilizar o formato ONNX para os modelos Ultralytics YOLO11 ?
A utilização do formato ONNX para os modelos Ultralytics YOLO11 apresenta inúmeras vantagens:
- Interoperabilidade: ONNX permite que os modelos sejam transferidos entre diferentes estruturas de aprendizagem automática sem problemas.
- Otimização do 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-lhe utilizar o mesmo modelo em diferentes plataformas sem modificações.
- Normalização: ONNX fornece um formato normalizado que é amplamente suportado por toda a indústria, garantindo a compatibilidade a longo prazo.
Consultar o guia completo sobre a exportação dos modelos YOLO11 para ONNX.
Como posso resolver problemas ao exportar modelos de YOLO11 para ONNX?
Ao exportar modelos de YOLO11 para ONNX, poderá encontrar problemas comuns, como dependências incompatíveis ou operações não suportadas. Para solucionar esses problemas:
- Verifique se tem a versão correta das dependências necessárias instaladas.
- Consulte a documentação oficial ONNX para saber quais os operadores e funcionalidades suportados.
- Analise as mensagens de erro para obter pistas e consulte o guiaUltralytics Common Issues (Problemas comuns).
- Tente utilizar argumentos de exportação diferentes, como
simplify=True
ou ajustar oopset
versão. - Para problemas de tamanho de entrada dinâmica, defina
dynamic=True
durante a exportação.
Se os problemas persistirem, contacte o suporte Ultralytics para obter mais assistência.