Exportação para ONNX de modelos YOLO26#
Inferência ONNX em CPU ~43% mais rápida: YOLO26n vs YOLO11n
- O YOLO26n é até 43% mais rápido do que o 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.
Frequentemente, ao implementar modelos de visão computacional, precisarás 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 implementaçã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 do mundo real.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNX e ONNX Runtime#
O ONNX, que significa Open Neural Network Exchange, é um projeto comunitário inicialmente desenvolvido pelo Facebook e pela Microsoft. O desenvolvimento contínuo do ONNX é um esforço colaborativo apoiado por várias organizações, como a IBM, a Amazon (através da AWS) e a Google. O projeto visa 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 utilizados para fazer a transição entre diferentes frameworks de forma simples. Por exemplo, um modelo de deep learning treinado em PyTorch pode ser exportado para o formato ONNX e depois importado facilmente para TensorFlow.
Em alternativa, os modelos ONNX podem ser utilizados com o 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, etc.
O ONNX Runtime otimiza a execução de modelos ONNX aproveitando capacidades específicas do hardware. Esta otimização permite que os modelos funcionem de forma eficiente e com elevado desempenho em várias plataformas de hardware, incluindo CPUs, GPUs e aceleradores especializados.
Utilizado de forma independente ou em conjunto com o ONNX Runtime, o ONNX fornece uma solução flexível para a implementação de modelos de aprendizagem automática e para a compatibilidade.
Principais funcionalidades dos modelos ONNX#
A capacidade do ONNX para lidar com vários formatos pode ser atribuída às seguintes funcionalidades principais:
-
Representação comum de modelos: 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, a sua arquitetura e os seus pesos são traduzidos para esta representação comum. Esta uniformidade garante que o modelo possa ser compreendido por qualquer framework compatível com ONNX.
-
Versionamento e compatibilidade retroativa: O ONNX mantém um sistema de versionamento para os seus operadores. Isto garante que, mesmo à medida que o padrão evolui, os modelos criados em versões anteriores continuam utilizáveis. A compatibilidade retroativa é uma funcionalidade crucial que impede que os modelos se tornem obsoletos rapidamente.
-
Representação de modelos baseada em grafos: O ONNX representa os modelos como grafos computacionais. Esta estrutura baseada em grafos é uma forma universal de representar modelos de aprendizagem automática, na qual 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 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 simples de modelos entre diferentes frameworks.
Utilização comum do ONNX#
Antes de vermos como exportar modelos YOLO26 para o formato ONNX, vejamos onde os modelos ONNX são normalmente utilizados.
Implementação em CPU#
Os modelos ONNX são frequentemente implementados em CPUs devido à sua compatibilidade com o ONNX Runtime. Este runtime está otimizado para execução em CPU. Melhora significativamente a velocidade de inferência e torna viáveis as implementações em CPU em tempo real.
Opções de implementação compatíveis#
Embora os modelos ONNX sejam normalmente utilizados em CPUs, 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 e inferência nativos em GPUs AMD, utiliza PyTorch ROCm; um ficheiro ONNX continua a necessitar de um runtime compatível com AMD.
-
Dispositivos de edge e móveis: O ONNX também é compatível com dispositivos de edge e móveis, sendo ideal para cenários de inferência no dispositivo e em tempo real. É leve e compatível com hardware de edge, servindo de base para formatos NPU de fabricantes, como Huawei Ascend, Qualcomm QNN para dispositivos Snapdragon e RKNN para NPUs Rockchip.
-
Navegadores Web: O ONNX pode ser executado diretamente em navegadores Web, permitindo aplicações de IA interativas e dinâmicas baseadas na Web.
Tarefas suportadas#
A exportação para 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 essas cabeças.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportação de modelos YOLO26 para ONNX#
Podes expandir a compatibilidade dos modelos e a flexibilidade de implementação convertendo os modelos YOLO26 para o formato ONNX. O Ultralytics YOLO26 fornece 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 boas práticas relacionadas com o processo de instalação, consulta o nosso guia de instalação do YOLO26. Durante a instalação dos pacotes necessários para YOLO26, se encontrares alguma dificuldade, consulta o nosso guia de problemas comuns para obter soluções e sugestões.
Utilização#
Antes de começares a consultar as instruções de utilização, vê a gama de modelos YOLO26 disponibilizados pela Ultralytics. Isto ajudar-te-á a escolher o modelo mais adequado aos 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 exportares o teu modelo YOLO26 para o formato ONNX, podes personalizar o processo utilizando vários argumentos para o otimizar de acordo com as tuas necessidades específicas de implementação:
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
format | str | 'onnx' | Formato de destino do modelo exportado, que define a compatibilidade com vários ambientes de implementaçã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 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. Um checkpoint treinado com quantize=8 sempre exporta INT8 como nós Q/DQ a partir dos intervalos que ele carrega, sem calibração e sob o nome simples .onnx. Substitui as flags obsoletas half/int8. |
data | str | None | Dataset YAML usado para calibração INT8; a classificação, por sua vez, aceita um diretório de dataset ou um nome de dataset integrado. Se omitido com quantize=8, a Ultralytics seleciona o dataset de calibração padrão para a tarefa do modelo; um checkpoint treinado com quantize=8 não precisa de nenhum. |
fraction | float, int ou list | 1.0 | Subconjunto de calibração como proporção, contagem de imagens ou proporções/contagens de [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 lidar com diferentes dimensões 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 garantir a compatibilidade com diferentes analisadores e runtimes ONNX. Se não for definida, utiliza a versão mais recente compatível. |
nms | bool, opcional | None | Seleciona a saída em bruto (None, predefinição), a NMS embutida (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 a exportação: GPU (device=0), CPU (device=cpu), MPS para Apple Silicon (device=mps). |
Para obter mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.
Implementação de modelos YOLO26 ONNX exportados#
Depois de exportares com êxito os teus modelos Ultralytics YOLO26 para o formato ONNX, o passo seguinte é implementá-los em vários ambientes. Para obteres instruções detalhadas sobre a implementaçã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 utilizando o ONNX Runtime.
-
Implementação em dispositivos de edge: Consulta esta página da documentação para veres diferentes exemplos de implementação de modelos ONNX em dispositivos de edge.
-
Tutoriais de ONNX no GitHub: Uma coleção de tutoriais abrangentes que aborda vários aspetos 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 implementações escaláveis e de elevado desempenho.
Resumo#
Neste guia, aprendeste a exportar modelos Ultralytics YOLO26 para o formato ONNX para aumentar a sua interoperabilidade e desempenho em várias plataformas. Também conheceste o ONNX Runtime e as opções de implementação do ONNX.
A exportação para ONNX é apenas um dos vários formatos de exportação compatíveis com o Ultralytics YOLO26, permitindo-te implementar os teus modelos em praticamente qualquer ambiente. Dependendo das tuas necessidades específicas, também poderás querer explorar outras opções de exportação, como TensorRT para obter o máximo desempenho da GPU ou CoreML para dispositivos Apple.
Para obteres mais informações sobre a utilização, consulta a documentação oficial do ONNX.
Além disso, se quiseres saber mais sobre outras integrações do Ultralytics YOLO26, visita a nossa página do guia de integrações. Encontrarás aí muitos recursos e informações úteis.
Perguntas frequentes#
Para exportares os teus modelos YOLO26 para o formato ONNX utilizando a Ultralytics, segue estes passos:
Utilizaçãofrom 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 obteres mais informações, consulta a documentação de exportação.
A utilização do 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 os teus modelos funcionem corretamente em diferentes ambientes.
- Aceleração de hardware: O ONNX Runtime pode aproveitar otimizações específicas do hardware para CPUs, GPUs e aceleradores dedicados, proporcionando uma inferência de elevado desempenho.
- Interoperabilidade entre frameworks: Os modelos treinados em frameworks populares, como PyTorch ou TensorFlow, podem ser facilmente convertidos para o formato ONNX e executados utilizando o ONNX Runtime.
- Otimização do desempenho: O ONNX Runtime pode proporcionar uma aceleração de CPU de até 3x em comparação com modelos PyTorch nativos, sendo ideal para cenários de implementaçã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: Utilizando o ONNX Runtime para uma inferência otimizada em CPU.
- GPUs: Aproveitando NVIDIA CUDA para uma aceleração de GPU de elevado desempenho.
- Dispositivos de edge: Executando modelos leves em dispositivos de edge e móveis para inferência em tempo real no dispositivo.
- Navegadores Web: Executando modelos diretamente em navegadores Web para aplicações interativas baseadas na Web.
- Serviços na cloud: Implementando em plataformas cloud compatíveis com o formato ONNX para obter uma inferência escalável.
Para obteres mais informações, consulta o nosso guia sobre opções de implementação de modelos.
A utilização do formato ONNX para modelos Ultralytics YOLO26 oferece inúmeras vantagens:
- Interoperabilidade: O ONNX permite transferir modelos entre diferentes frameworks de aprendizagem automática de forma simples.
- Otimização do desempenho: O ONNX Runtime pode melhorar o desempenho dos modelos utilizando otimizações específicas do hardware.
- Flexibilidade: O ONNX é compatível com vários ambientes de implementação, permitindo utilizar o mesmo modelo em diferentes plataformas sem modificações.
- Normalização: O ONNX fornece um formato normalizado amplamente suportado no setor, garantindo compatibilidade a longo prazo.
Consulta o guia abrangente sobre como exportar modelos YOLO26 para ONNX.
Ao exportares modelos YOLO26 para ONNX, poderás encontrar problemas comuns, como dependências incompatíveis ou operações não suportadas. Para resolver estes problemas:
- Verifica se tens instalada a versão correta das dependências necessárias.
- Consulta a documentação oficial do ONNX para veres os operadores e as funcionalidades compatíveis.
- Analisa as mensagens de erro em busca de pistas e consulta o guia de problemas comuns da Ultralytics.
- Experimenta utilizar argumentos de exportação diferentes, como
simplify=True, ou ajustar a versãoopset. - Para problemas relacionados com o tamanho dinâmico da entrada, define
dynamic=Truedurante a exportação.
Se os problemas persistirem, contacta o suporte da Ultralytics para obteres mais assistência.