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 aprendizado profundo, permitindo que os 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 personalizados e complexos que historicamente eram necessários para mover modelos da pesquisa para a produção. Essa flexibilidade é crucial para os fluxos de trabalho de IA modernos, onde o treinamento pode ocorrer em GPUs de nuvem potentes, enquanto a implantação visa diversos hardware, como dispositivos de borda, telefones celulares ou navegadores da web.
O papel do ONNX na IA moderna#
No cenário em rápida evolução da artificial intelligence, pesquisadores e engenheiros costumam usar ferramentas diferentes para diferentes estágios 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 maneira 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 com eficiência em várias plataformas, incluindo Linux, Windows, macOS, Android e iOS.
Principais benefícios de usar ONNX#
Adotar o formato Open Neural Network Exchange oferece várias vantagens estratégicas para projetos de IA:
- Interoperabilidade de Framework: Os desenvolvedores podem alternar entre frameworks sem ficarem presos a um único ecossistema. Podes treinar um modelo usando a amigável Ultralytics Python API e exportá-lo para uso em um aplicativo 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 móveis (Neural Processing Units) 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 dobragem 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 os processos de ModelOps.
Aplicaçõ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:
Edge AI em dispositivos móveis#
Considera um aplicativo móvel projetado para monitoramento da saúde das culturas em tempo real. O modelo pode ser treinado em um poderoso servidor em nuvem usando um grande conjunto de dados de imagens de plantas. No entanto, o aplicativo precisa ser executado offline no smartphone de um agricultor. Ao exportar o modelo treinado para ONNX, os desenvolvedores podem integrá-lo ao aplicativo móvel usando o ONNX Runtime Mobile. Isso permite que o processador do telefone execute a detecção de objetos localmente, identificando pragas ou doenças instantaneamente sem precisar de conexão com a internet.
Inferência Web multiplataforma#
No comércio eletrônico, um recurso de "provador virtual" pode usar estimativa de pose para sobrepor roupas ao feed da webcam de um usuário. O treinamento desse modelo pode ocorrer em Python, mas o destino de implantação é um navegador da web. Usando o ONNX, o modelo pode ser convertido e executado diretamente no navegador do usuário via ONNX Runtime Web. Isso utiliza os recursos do dispositivo do cliente (WebGL ou WebAssembly) para realizar tarefas de visão computacional, garantindo uma experiência suave e que preserva a privacidade, já que os dados de vídeo nunca saem do computador do usuário.
Comparaçã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 especificamente 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 máximo rendimento em hardware NVIDIA.
- vs. TensorFlow SavedModel: O SavedModel é o formato nativo de serialização para TensorFlow. Embora 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 a uma plataforma mais ampla.
- vs. CoreML: O CoreML é o framework da Apple para aprendizado de máquina no dispositivo. Embora distintos, os modelos são frequentemente convertidos do PyTorch para ONNX e, em seguida, do ONNX para CoreML (ou diretamente) para serem executados com eficiência em iPhones e iPads.
Exportando 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 é integrada diretamente na biblioteca, lidando com a travessia de grafos complexos e o 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.






