ONNX (Open Neural Network Exchange)
Explora o formato Open Neural Network Exchange (ONNX). Aprende a exportar o Ultralytics YOLO26 para ONNX para implementação rápida em várias plataformas e otimização de hardware.
ONNX (Open Neural Network Exchange) é um formato de código aberto projetado para representar modelos de aprendizado de máquina, permitindo a interoperabilidade entre vários frameworks e ferramentas de IA. Ele serve como um tradutor universal para deep learning, permitindo que desenvolvedores criem modelos em um framework — como PyTorch, TensorFlow ou Scikit-learn — e os implantem perfeitamente em outro ambiente otimizado para inferência. Ao definir um conjunto comum de operadores e um formato de arquivo padrão, o ONNX elimina a necessidade de scripts de conversão complexos e personalizados que eram historicamente necessários para mover modelos da pesquisa para a produção. Essa flexibilidade é crucial para fluxos de trabalho modernos de IA, onde o treinamento pode ocorrer em poderosas GPUs de nuvem, enquanto a implantação visa hardware diversificado, como dispositivos de borda, celulares ou navegadores web.
Link to this sectionO papel do ONNX na IA moderna#
No cenário em rápida evolução da inteligência artificial, pesquisadores e engenheiros frequentemente usam ferramentas diferentes para estágios distintos do ciclo de vida de desenvolvimento. Um cientista de dados pode preferir a flexibilidade do PyTorch para experimentação e treinamento, enquanto um engenheiro de produção precisa do desempenho otimizado do TensorRT ou OpenVINO para implantação. Sem um formato de troca padrão, mover um modelo entre esses ecossistemas é difícil e propenso a erros.
O ONNX preenche essa lacuna fornecendo uma definição compartilhada do grafo de computação. Quando um modelo é exportado para ONNX, ele é serializado em um formato que captura a estrutura da rede (camadas, conexões) e os parâmetros (pesos, vieses) de uma forma agnóstica ao framework. Isso permite que mecanismos de inferência especificamente ajustados para aceleração de hardware — como o ONNX Runtime — executem o modelo de forma eficiente em várias plataformas, incluindo Linux, Windows, macOS, Android e iOS.
Link to this sectionPrincipais benefícios de usar ONNX#
Adotar o formato Open Neural Network Exchange oferece várias vantagens estratégicas para projetos de IA:
- Interoperabilidade de frameworks: Desenvolvedores podem alternar entre frameworks sem ficarem presos a um único ecossistema. Você pode treinar um modelo usando a intuitiva Ultralytics Python API e exportá-lo para uso em uma aplicação C++ ou em um ambiente JavaScript baseado na web.
- Otimização de hardware: Muitos fabricantes de hardware fornecem provedores de execução especializados que fazem interface com o ONNX. Isso significa que um único arquivo
.onnxpode ser acelerado em GPUs NVIDIA, CPUs Intel ou NPUs (Unidades de Processamento Neural) móveis usando ferramentas como OpenVINO ou CoreML. - Inferência mais rápida: O ONNX Runtime aplica otimizações de grafo — como fusão de nós e dobramento de constantes — que podem reduzir significativamente a latência de inferência. Isso é essencial para aplicações em tempo real, como veículos autônomos ou linhas de fabricação de alta velocidade.
- Implantação simplificada: Em vez de manter pipelines de implantação separados para cada framework de treinamento, as equipes de engenharia podem padronizar no ONNX como o formato de entrega, simplificando processos de ModelOps.
Link to this sectionAplicações no Mundo Real#
A versatilidade do ONNX o torna um elemento essencial em diversos setores. Aqui estão dois exemplos concretos de sua aplicação:
Link to this sectionEdge AI em dispositivos móveis#
Consider a mobile application designed for real-time crop health monitoring. The model might be trained on a powerful cloud server using a large dataset of plant images. However, the app needs to run offline on a farmer's smartphone. By exporting the trained model to ONNX, developers can integrate it into the mobile app using ONNX Runtime Mobile. This allows the phone's processor to run object detection locally, identifying pests or diseases instantly without needing an internet connection.
Link to this sectionInferência Web multiplataforma#
In e-commerce, a "virtual try-on" feature might use pose estimation to overlay clothing on a user's webcam feed. Training this model might happen in Python, but the deployment target is a web browser. Using ONNX, the model can be converted and run directly in the user's browser via ONNX Runtime Web. This utilizes the client's device capabilities (WebGL or WebAssembly) to perform computer vision tasks, ensuring a smooth, privacy-preserving experience since video data never leaves the user's computer.
Link to this sectionComparação com termos relacionados#
É útil distinguir o ONNX de outros formatos e ferramentas de modelo:
- vs. TensorRT: Embora o ONNX seja um formato de troca, o TensorRT é um mecanismo de inferência e otimizador específico para GPUs NVIDIA. Um fluxo de trabalho comum envolve exportar um modelo para ONNX primeiro e, em seguida, analisar esse arquivo ONNX no TensorRT para obter o throughput máximo no hardware da NVIDIA.
- vs. TensorFlow SavedModel: O SavedModel é o formato de serialização nativo para TensorFlow. Embora seja robusto dentro do ecossistema Google, ele é menos universalmente compatível do que o ONNX. Frequentemente existem ferramentas para converter SavedModels em ONNX para obter suporte mais amplo a plataformas.
- vs. CoreML: CoreML é o framework da Apple para aprendizado de máquina no dispositivo. Embora distintos, os modelos são frequentemente convertidos de PyTorch para ONNX e, em seguida, de ONNX para CoreML (ou diretamente) para rodar de forma eficiente em iPhones e iPads.
Link to this sectionExportando para ONNX com Ultralytics#
O ecossistema Ultralytics simplifica o processo de conversão de modelos de última geração, como o YOLO26, para o formato ONNX. A funcionalidade de exportação é incorporada diretamente na biblioteca, lidando com a complexa travessia de grafos e mapeamento de operadores automaticamente.
O exemplo a seguir demonstra como exportar um modelo YOLO26 pré-treinado para o formato ONNX para implantação:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")Uma vez exportado, este arquivo .onnx pode ser utilizado na Ultralytics Platform para gerenciamento ou implantado diretamente em dispositivos de borda usando o ONNX Runtime, tornando a visão computacional de alto desempenho acessível em praticamente qualquer ambiente.






