Exportação ONNX para modelos YOLO26#
Inferência ONNX em CPU ~43% mais rápida: YOLO26n vs YOLO11n
- YOLO26n é até 43% mais rápido do que YOLO11n na inferência ONNX em CPU (Intel Xeon CPU @ 2.00 GHz). Consulta a página do modelo YOLO26 para ver a comparação completa.
Ao implantar modelos de visão computacional, muitas vezes precisas de um formato de modelo que seja flexível e compatível com várias plataformas.
A exportação de modelos Ultralytics YOLO26 para o formato ONNX simplifica a implantação e garante um desempenho ideal em vários ambientes. Este guia mostra-te como converter facilmente os teus modelos YOLO26 para ONNX e melhorar a sua escalabilidade e eficácia em aplicações reais.
Assista: Teste de inferência ONNX: Ultralytics YOLO26 vs Ultralytics YOLO11 | Inferência ~43% mais rápida com YOLO26 🚀
ONNX e ONNX Runtime#
ONNX, sigla de Open Neural Network Exchange, é um projeto comunitário inicialmente desenvolvido pela 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 pretende criar um formato de ficheiro aberto concebido para representar modelos de aprendizagem automática de forma a permitir a sua utilização em diferentes frameworks de IA e hardware.
Os modelos ONNX podem ser usados para transitar facilmente entre diferentes frameworks. Por exemplo, um modelo de aprendizagem profunda treinado em PyTorch pode ser exportado para o formato ONNX e, em seguida, importado facilmente para TensorFlow.
Em alternativa, os modelos ONNX podem ser usados com ONNX Runtime. O ONNX Runtime é um acelerador multiplataforma versátil para modelos de aprendizagem automática, compatível com frameworks como PyTorch, TensorFlow, scikit-learn, entre outros.
O ONNX Runtime otimiza a execução dos modelos ONNX aproveitando as capacidades específicas do hardware. Esta otimização permite que os modelos funcionem de forma eficiente e com alto desempenho em várias plataformas de hardware, incluindo CPUs, GPUs e aceleradores especializados.
Quer seja usado de forma independente ou em conjunto com ONNX Runtime, ONNX oferece uma solução flexível para a implantação de modelos de aprendizagem automática e a sua compatibilidade.
Principais funcionalidades dos modelos ONNX#
A capacidade do ONNX de lidar com vários formatos deve-se às seguintes funcionalidades 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 os seus pesos são traduzidos para esta representação comum. Esta uniformidade garante que qualquer framework compatível com ONNX consegue interpretar o modelo.
-
Versionamento e compatibilidade com versões anteriores: ONNX mantém um sistema de versionamento para os seus operadores. Isto garante que, mesmo à medida que a norma evolui, os modelos criados em versões anteriores continuam utilizáveis. A compatibilidade com versões anteriores é uma funcionalidade crucial que impede que os modelos se tornem obsoletos rapidamente.
-
Representação de modelos baseada em grafos: ONNX representa os modelos como grafos computacionais. Esta estrutura baseada em grafos é 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 adapta-se facilmente a vários frameworks que também representam modelos como grafos.
-
Ferramentas e ecossistema: existe um ecossistema rico de ferramentas 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 frameworks.
Usos comuns do ONNX#
Antes de vermos como exportar modelos YOLO26 para o formato ONNX, vamos analisar onde os modelos ONNX são normalmente utilizados.
Implantação em CPU#
Os modelos ONNX são frequentemente implantados em CPUs devido à sua compatibilidade com ONNX Runtime. Este runtime está otimizado para execução em CPU. Melhora significativamente a velocidade de inferência e viabiliza implantações em tempo real em CPU.
Opções de implantação compatíveis#
Embora os modelos ONNX sejam normalmente usados em CPUs, também podem ser implantados nas seguintes plataformas:
-
Aceleração por GPU: ONNX oferece suporte completo à aceleração por GPU em GPUs NVIDIA através de CUDA e em GPUs AMD através de ROCm e MIGraphX.
-
Dispositivos de borda e móveis: ONNX também é compatível com dispositivos de borda e móveis, ideais para cenários de inferência no dispositivo e em tempo real. É leve e compatível com hardware de borda, servindo de base para formatos NPU de fabricantes, como Huawei Ascend, Qualcomm QNN para dispositivos Snapdragon e RKNN para NPUs Rockchip.
-
Navegadores Web: ONNX pode ser executado diretamente em navegadores Web, viabilizando aplicações de IA interativas e dinâmicas baseadas na Web.
Tarefas suportadas#
A exportação ONNX é compatível com todas as sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com YOLO26, a única família que inclui esses cabeçalhos.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportação de modelos YOLO26 para ONNX#
Podes ampliar a compatibilidade e a flexibilidade de implantação dos modelos convertendo modelos YOLO26 para o formato ONNX. Ultralytics YOLO26 oferece um processo de exportação simples que pode melhorar significativamente o desempenho do teu modelo em diferentes plataformas.
Instalação#
Para instalar o pacote necessário, executa:
# Install the required package for YOLO26
pip install ultralyticsPara obter instruções detalhadas e práticas recomendadas sobre o processo de instalação, consulte nosso guia de instalação do YOLO26. Se encontrar dificuldades ao instalar os pacotes necessários para o YOLO26, consulte nosso guia de problemas comuns para encontrar soluções e dicas.
Uso#
Antes de consultares as instruções de utilização, não te esqueças de ver a variedade de modelos YOLO26 disponibilizados pelo Ultralytics. Isto vai ajudar-te a escolher o modelo mais adequado aos requisitos do teu projeto.
O formato ONNX é compatível com os modos Exportar, Prever e Validar. Exporta o teu modelo e, em seguida, carrega o modelo exportado para executar inferências ou validar a precisão.
from ultralytics import YOLO
# Carrega um modelo YOLO26
model = YOLO("yolo26n.pt")
# Exporta o modelo para o formato ONNX
model.export(format="onnx") # cria 'yolo26n.onnx'
# Exporta um modelo ONNX quantizado em INT8 com dados de calibração
model.export(format="onnx", quantize=8, data="coco8.yaml") # cria 'yolo26n_int8.onnx'from ultralytics import YOLO
# Carrega o modelo ONNX exportado
model = YOLO("yolo26n.onnx")
# Executar inferência
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carrega o modelo ONNX exportado
model = YOLO("yolo26n.onnx")
# Validar a precisão no conjunto de dados COCO8
metrics = model.val(data="coco8.yaml")Argumentos de exportação#
Ao exportar o teu modelo YOLO26 para o formato ONNX, podes personalizar o processo usando vários argumentos para otimizar a implantação de acordo com as tuas necessidades específicas:
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
format | str | 'onnx' | Formato de destino do modelo exportado, que define a compatibilidade com vários ambientes de implantaçã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. |
quantize | int ou str | None | Precisão da quantização: 16 (FP16) ou 8 (quantização estática INT8 com ONNX Runtime, usando imagens de calibração de data e gerando um modelo _int8.onnx); 32/não definido corresponde a FP32. Um checkpoint treinado com quantize=8 exporta sempre INT8 como nós Q/DQ, com base nos intervalos que contém, sem calibração e com o nome simples .onnx. Substitui as flags preteridas half/int8. |
data | str | None | YAML do conjunto de dados usado para a calibração INT8; para classificação, em vez disso, é necessário um diretório de conjunto de dados ou o nome de um conjunto de dados integrado. Se for omitido com quantize=8, a Ultralytics seleciona o conjunto de dados de calibração padrão para a tarefa do modelo; um checkpoint treinado com quantize=8 não precisa de calibração. |
fraction | float, int ou list | 1.0 | Subconjunto de calibração como proporção, número de imagens ou proporções/contagens [train, val, test]. Listas de dois itens deixam test completo, enquanto 0 o ignora. |
dynamic | bool | False | Permite tamanhos de entrada dinâmicos, aumentando a flexibilidade para processar imagens com dimensões variáveis. |
simplify | bool | True | Simplifica o grafo do modelo com onnxslim, podendo melhorar o desempenho e a compatibilidade. |
opset | int | None | Especifica a versão do opset ONNX para garantir a compatibilidade com diferentes parsers e runtimes ONNX. Se não for definida, usa a versão mais recente compatível. |
nms | bool, opcional | None | Seleciona a saída bruta (None, padrão), NMS incorporado (True) ou a cabeça sem NMS (False). |
batch | int | 1 | Especifica o tamanho do lote de inferência do modelo exportado ou o número máximo de imagens que o modelo exportado processará em simultâneo 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 da documentação da Ultralytics sobre exportação.
Implantação de modelos YOLO26 ONNX exportados#
Depois de exportares com sucesso os teus modelos Ultralytics YOLO26 para o formato ONNX, o passo seguinte é implantá-los em vários ambientes. Para obter instruções detalhadas sobre a implantação dos teus modelos ONNX, consulta os seguintes recursos:
-
Documentação da API Python do ONNX Runtime: este guia fornece informações essenciais para carregar e executar modelos ONNX usando ONNX Runtime.
-
Implantação em dispositivos de borda: consulta esta página da documentação para ver diferentes exemplos de implantação de modelos ONNX em dispositivos de borda.
-
Tutoriais de ONNX no GitHub: uma coleção de tutoriais abrangentes que abordam vários aspetos da utilização e implementação de modelos ONNX em diferentes cenários.
-
Triton Inference Server: aprende a implantar os teus modelos ONNX com o Triton Inference Server da NVIDIA para obter implantações escaláveis e de alto desempenho.
Inferência em GPU AMD com MIGraphX#
A Ultralytics executa modelos ONNX exportados em GPUs AMD através do fornecedor de execução MIGraphX do ONNX Runtime. Num sistema ROCm (HIP), o backend ONNX instala o plugin onnxruntime-ep-migraphx na primeira utilização e seleciona automaticamente MIGraphXExecutionProvider sem alterações ao código; todas as tarefas YOLO26 são compatíveis. Consulta o guia de inferência em GPU AMD para ver os pré-requisitos, a instalação, a utilização, as avaliações de desempenho e a cache de programas compilados.
Resumo#
Neste guia, aprendeste a exportar modelos Ultralytics YOLO26 para o formato ONNX para aumentar a interoperabilidade e o desempenho em várias plataformas. Também conheceste o ONNX Runtime e as opções de implantação do ONNX.
A exportação ONNX é apenas um dos muitos formatos de exportação compatíveis com Ultralytics YOLO26, permitindo-te implementar 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 obter o máximo desempenho da GPU ou CoreML para dispositivos Apple.
Para mais informações sobre a utilização, visita a documentação oficial do ONNX.
Além disso, se quiseres saber mais sobre outras integrações da Ultralytics YOLO26, visita a nossa página do guia de integração. Encontrarás muitos recursos e informações úteis.
Perguntas frequentes#
Para exportar os teus modelos YOLO26 para o formato ONNX usando Ultralytics, segue estes passos:
Usofrom ultralytics import YOLO # Carrega um modelo YOLO26 model = YOLO("yolo26n.pt") # Exporta o modelo para o formato ONNX model.export(format="onnx") # cria 'yolo26n.onnx' # Carrega o modelo ONNX exportado onnx_model = YOLO("yolo26n.onnx") # Executar inferência results = onnx_model("https://ultralytics.com/images/bus.jpg")Para mais detalhes, visita a documentação de exportação.
Usar ONNX Runtime para implantar modelos YOLO26 oferece várias vantagens:
- Compatibilidade multiplataforma: ONNX Runtime é compatível com várias plataformas, como Windows, macOS e Linux, garantindo que os teus modelos funcionem sem problemas em diferentes ambientes.
- Aceleração por hardware: ONNX Runtime pode aproveitar otimizações específicas de hardware para CPUs, GPUs e aceleradores dedicados, proporcionando inferência de alto desempenho.
- Interoperabilidade entre frameworks: os modelos treinados em frameworks populares, como PyTorch ou TensorFlow, podem ser convertidos facilmente para o formato ONNX e executados com ONNX Runtime.
- Otimização do desempenho: ONNX Runtime pode proporcionar uma aceleração de até 3x em CPU em comparação com modelos PyTorch nativos, sendo ideal para cenários de implantação em que os recursos de GPU são limitados.
Sabe mais consultando a documentação do ONNX Runtime.
Os modelos YOLO26 exportados para ONNX podem ser implementados em várias plataformas, incluindo:
- CPUs: usa o ONNX Runtime para inferência otimizada em CPU.
- GPUs NVIDIA: aproveita o NVIDIA CUDA para aceleração de GPU de alto desempenho.
- GPUs AMD: usa o AMD ROCm e o provedor de execução MIGraphX para aceleração de GPU de alto desempenho no Linux.
- Dispositivos de borda: executa modelos leves em dispositivos de borda e móveis para inferência em tempo real no próprio dispositivo.
- Navegadores da Web: executa modelos diretamente nos navegadores da Web para aplicações interativas baseadas na Web.
- Serviços de nuvem: implementa em plataformas de nuvem compatíveis com o formato ONNX para inferência escalável.
Para mais informações, consulta o nosso guia sobre opções de implementação de modelos.
Usar o formato ONNX para os modelos Ultralytics YOLO26 oferece inúmeras vantagens:
- Interoperabilidade: o ONNX permite transferir modelos facilmente entre diferentes frameworks de aprendizagem automática.
- Otimização do desempenho: o ONNX Runtime pode melhorar o desempenho do modelo ao utilizar otimizações específicas de hardware.
- Flexibilidade: o ONNX é compatível com vários ambientes de implementação, permitindo usar o mesmo modelo em diferentes plataformas sem modificações.
- Padronização: o ONNX oferece um formato padronizado, amplamente compatível em todo o setor, garantindo compatibilidade a longo prazo.
Consulta o guia completo sobre como exportar modelos YOLO26 para ONNX.
Ao exportar modelos YOLO26 para ONNX, podes encontrar problemas comuns, como dependências incompatíveis ou operações não suportadas. Para resolver esses problemas:
- Verifica se instalaste a versão correta das dependências necessárias.
- Consulta a documentação oficial do ONNX para ver os operadores e funcionalidades compatíveis.
- Analisa as mensagens de erro para encontrar pistas e consulta o guia de problemas comuns da Ultralytics.
- Experimenta usar argumentos de exportação diferentes, como
simplify=True, ou ajustar a versão deopset. - Para resolver problemas com o tamanho dinâmico da entrada, define
dynamic=Truedurante a exportação.
Se os problemas persistirem, contacta o suporte da Ultralytics para obter mais ajuda.