Exportação ONNX para modelos YOLO26#
~43% de inferência mais rápida.
- Exportar o modelo Ultralytics YOLO26 para ONNX pode proporcionar um aumento de até 43% na velocidade de inferência, permitindo uma implementação mais rápida e eficiente.
Muitas vezes, ao implantar modelos de computer vision, precisas de um formato de modelo que seja flexível e compatível com várias plataformas.
Exportar modelos do Ultralytics YOLO26 para o formato ONNX simplifica a implantação e garante um desempenho ideal em vários ambientes. Este guia mostrar-te-á como converter facilmente os teus modelos YOLO26 para ONNX e melhorar a sua escalabilidade e eficácia em aplicações do mundo real.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNX e ONNX Runtime#
ONNX, que significa Open Neural Network Exchange, é um projeto comunitário desenvolvido inicialmente pelo Facebook e pela Microsoft. 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 ficheiro aberto concebido para representar modelos de machine learning de uma forma que permita a sua utilização em diferentes frameworks de IA e hardware.
Os modelos ONNX podem ser utilizados para fazer a transição entre diferentes frameworks de forma integrada. Por exemplo, um modelo de deep learning treinado em PyTorch pode ser exportado para o formato ONNX e depois facilmente importado para o TensorFlow.
Em alternativa, os modelos ONNX podem ser utilizados com o ONNX Runtime. O ONNX Runtime é um acelerador multiplataforma versátil para modelos de machine learning que é compatível com frameworks como PyTorch, TensorFlow, scikit-learn, etc.
O ONNX Runtime otimiza a execução de modelos ONNX aproveitando capacidades específicas de hardware. Essa otimização permite que os modelos sejam executados de forma eficiente e com alto desempenho em diversas 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 model deployment e compatibilidade de machine learning.
Principais recursos dos modelos ONNX#
A capacidade do ONNX de lidar com vários formatos pode ser atribuída aos seguintes recursos principais:
-
Representação comum de modelo: O 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 essa representação comum. Essa uniformidade garante que o modelo possa ser compreendido por qualquer framework que suporte ONNX.
-
Versionamento e compatibilidade com versões anteriores: O ONNX mantém um sistema de versionamento para seus operadores. Isso garante que, mesmo com a evolução do padrão, os modelos criados em versões anteriores permaneçam utilizáveis. A compatibilidade com versões anteriores é um recurso crucial que evita que os modelos se tornem obsoletos rapidamente.
-
Representação de modelo baseada em grafos: O ONNX representa modelos como grafos computacionais. Essa estrutura baseada em grafos é uma maneira universal de representar modelos de machine learning, onde os nós representam operações ou computações, e as arestas representam os tensores que fluem entre eles. Esse formato é facilmente adaptável a vários frameworks que também representam modelos como grafos.
-
Ferramentas e Ecossistema: Existe um rico ecossistema de ferramentas em torno do ONNX que auxiliam na conversão, visualização e otimização de modelos. Essas ferramentas facilitam o trabalho dos desenvolvedores com modelos ONNX e a conversão de modelos entre diferentes frameworks de forma contínua.
Uso comum do ONNX#
Antes de entrarmos em como exportar modelos YOLO26 para o formato ONNX, vamos dar uma olhada em onde os modelos ONNX costumam ser usados.
Implementação em CPU#
Modelos ONNX são frequentemente implementados 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 implementações em CPU em tempo real.
Opções de implementação suportadas#
Embora modelos ONNX sejam comumente usados em CPUs, eles também podem ser implementados nas seguintes plataformas:
-
Aceleração por GPU: O ONNX suporta totalmente a aceleração por GPU, particularmente NVIDIA CUDA. Para treino nativo e inferência em GPUs AMD, usa o PyTorch ROCm; um ficheiro ONNX ainda requer um runtime compatível com AMD.
-
Dispositivos Edge e Móveis: O ONNX estende-se a dispositivos edge e móveis, sendo perfeito para cenários de inferência no dispositivo e em tempo real. É leve e compatível com hardware edge, servindo de base para formatos NPU de fornecedores como Huawei Ascend, Qualcomm QNN para dispositivos Snapdragon e RKNN para NPU Rockchip.
-
Navegadores web: O ONNX pode ser executado diretamente em navegadores web, potencializando aplicações de IA interativas e dinâmicas baseadas na web.
Tarefas Suportadas#
A exportação para ONNX suporta todas as sete tarefas do Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com o YOLO26, a única família que possui essas camadas.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detectar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportando modelos YOLO26 para ONNX#
Podes expandir a compatibilidade do modelo e a flexibilidade de implantação convertendo os modelos YOLO26 para o formato ONNX. O Ultralytics YOLO26 fornece um processo de exportação direto que pode melhorar significativamente o desempenho do teu modelo em diferentes plataformas.
Instalação#
Para instalar o pacote necessário, execute:
# Install the required package for YOLO26
pip install ultralyticsPara instruções detalhadas e melhores práticas relacionadas com o processo de instalação, consulta o nosso YOLO26 Installation guide. Ao instalar os pacotes necessários para o YOLO26, se encontrares alguma dificuldade, consulta o nosso Common Issues guide para obter soluções e dicas.
Uso#
Antes de mergulhares nas instruções de uso, certifica-te de explorar a gama de YOLO26 models offered by Ultralytics. Isto ajudar-te-á a escolher o modelo mais adequado para os requisitos do teu projeto.
O formato ONNX suporta os modos Export, Predict e Validate. Exporta o teu modelo e, em seguida, carrega o modelo exportado para executar a inferência ou validar a sua precisão.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml") # creates 'yolo26n_int8.onnx'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Argumentos de Exportação#
Ao exportar seu modelo YOLO26 para o formato ONNX, você pode personalizar o processo usando vários argumentos para otimizar de acordo com 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 implementação. |
imgsz | int ou tuple | 640 | Tamanho de imagem desejado para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou um tuplo (height, width) para dimensões específicas. |
quantize | int ou str | None | Precisão de quantização: 16 (FP16) ou 8 (quantização estática INT8 com ONNX Runtime usando imagens de calibração de data, produzindo um modelo _int8.onnx); 32/não definido é FP32. Substitui as flags obsoletas half/int8. |
data | str | None | YAML do conjunto de dados usado para calibração INT8; a classificação por sua vez utiliza um diretório de conjunto de dados ou um nome de conjunto de dados integrado. Se omitido com quantize=8, o Ultralytics seleciona o conjunto de dados de calibração padrão para a tarefa do modelo. |
fraction | float | 1.0 | Fração de imagens de calibração a serem usadas para a quantização INT8. |
dynamic | bool | False | Permite tamanhos de entrada dinâmicos, aumentando a flexibilidade no manuseio de dimensões variáveis de imagem. |
simplify | bool | True | Simplifica o grafo do modelo com onnxslim, melhorando potencialmente o desempenho e a compatibilidade. |
opset | int | None | Especifica a versão do opset ONNX para compatibilidade com diferentes parsers e runtimes ONNX. Se não for definido, usa a versão suportada mais recente. |
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 de inferência por lote do modelo de exportação ou o número máximo de imagens que o modelo exportado processará concorrentemente no modo predict. |
device | str | None | Especifica o dispositivo para exportação: GPU (device=0), CPU (device=cpu), MPS para Apple silicon (device=mps). |
Para mais detalhes sobre o processo de exportação, visita a página de documentação do Ultralytics sobre exportação.
Implementando modelos ONNX do YOLO26 exportados#
Uma vez que você tenha exportado com sucesso seus modelos Ultralytics YOLO26 para o formato ONNX, o próximo passo é implementar esses modelos em vários ambientes. Para obter instruções detalhadas sobre como implementar seus modelos ONNX, dê uma olhada nos seguintes recursos:
-
ONNX Runtime Python API Documentation: Este guia fornece informações essenciais para carregar e executar modelos ONNX utilizando o ONNX Runtime.
-
Deploying on Edge Devices: Consulta esta página de documentação para diferentes exemplos de implantação de modelos ONNX em edge.
-
ONNX Tutorials on GitHub: Uma coleção de tutoriais abrangentes que cobrem váriospetos da utilização e implementação de modelos ONNX em diferentes cenários.
-
Triton Inference Server: Aprende a implementar os teus modelos ONNX com o Triton Inference Server da NVIDIA para implantações de alto desempenho e escaláveis.
Resumo#
Neste guia, você aprendeu como exportar modelos Ultralytics YOLO26 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 implementação ONNX.
A exportação ONNX é apenas um dos muitos export formats suportados pelo Ultralytics YOLO26, permitindo-te implantar os teus modelos em praticamente qualquer ambiente. Dependendo das tuas necessidades específicas, também podes querer explorar outras opções de exportação como TensorRT para o máximo desempenho de GPU ou CoreML para dispositivos Apple.
Para mais detalhes sobre a utilização, visita a ONNX official documentation.
Além disso, se quiseres saber mais sobre outras integrações do Ultralytics YOLO26, visita a nossa integration guide page. Encontrará lá muitos recursos e conhecimentos úteis.
FAQ#
Como faço para exportar modelos YOLO26 para o formato ONNX usando o Ultralytics?#
Para exportar seus modelos YOLO26 para o formato ONNX usando o Ultralytics, siga estas etapas:
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")Para mais detalhes, visita a export documentation.
Quais são as vantagens de usar o ONNX Runtime para implementar modelos YOLO26?#
Usar o ONNX Runtime para implementar modelos YOLO26 oferece várias vantagens:
- Compatibilidade multiplataforma: O ONNX Runtime suporta várias plataformas, como Windows, macOS e Linux, garantindo que seus modelos sejam executados 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 frameworks: 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 proporcionar até 3x de aceleração na CPU em comparação com modelos PyTorch nativos, tornando-o ideal para cenários de implementação onde os recursos de GPU são limitados.
Sabe mais consultando a ONNX Runtime documentation.
Quais opções de implementação estão disponíveis para modelos YOLO26 exportados para ONNX?#
Modelos YOLO26 exportados para ONNX podem ser implementados em várias plataformas, incluindo:
- CPUs: Utilizando o ONNX Runtime para inferência de CPU otimizada.
- GPUs: Aproveitando o NVIDIA CUDA para aceleração de GPU de alto desempenho.
- Dispositivos de borda: Executando modelos leves em dispositivos de borda e móveis para inferência no dispositivo em tempo real.
- Navegadores web: Executando modelos diretamente nos navegadores para aplicações interativas baseadas na web.
- Serviços em nuvem: Implementando em plataformas de nuvem que suportam o formato ONNX para inferência escalável.
Para mais informações, explora o nosso guia sobre model deployment options.
Por que devo usar o formato ONNX para modelos Ultralytics YOLO26?#
Usar o formato ONNX para modelos Ultralytics YOLO26 oferece inúmeros benefícios:
- Interoperabilidade: O ONNX permite que os modelos sejam transferidos entre diferentes frameworks de machine learning perfeitamente.
- 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 implementação, permitindo que você use o mesmo modelo em diferentes plataformas sem modificação.
- Padronização: O ONNX fornece um formato padronizado que é amplamente suportado em toda a indústria, garantindo compatibilidade a longo prazo.
Consulta o guia abrangente sobre exporting YOLO26 models to ONNX.
Como posso solucionar problemas ao exportar modelos YOLO26 para ONNX?#
Ao exportar modelos YOLO26 para ONNX, você pode encontrar problemas comuns como dependências incompatíveis ou operações não suportadas. Para solucionar esses problemas:
- Verifique se você tem a versão correta das dependências necessárias instalada.
- Consulta a documentação oficial do ONNX para operadores e funcionalidades suportados.
- Revê as mensagens de erro em busca de pistas e consulta o Ultralytics Common Issues guide.
- Tenta usar diferentes argumentos de exportação como
simplify=Trueou ajustar a versãoopset. - Para problemas de tamanho de entrada dinâmico, define
dynamic=Truedurante a exportação.
Se os problemas persistirem, entre em contato com o suporte da Ultralytics para obter mais assistência.