Meet YOLO26: next-gen vision AI.

Link to this sectionExportação de modelos com Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionIntrodução#

O objetivo final de treinar um modelo é implantá-lo para aplicações no mundo real. O modo de exportação no Ultralytics YOLO26 oferece uma gama versátil de opções para exportar o teu modelo treinado para diferentes formatos, tornando-o implantável em várias plataformas e dispositivos. Este guia abrangente visa orientar-te sobre as nuances da exportação de modelos, mostrando como alcançar a máxima compatibilidade e desempenho.



Watch: How to Export Ultralytics YOLO26 in different formats for Deployment | ONNX, TensorRT, CoreML 🚀

Link to this sectionPor que escolher o modo de exportação do YOLO26?#

  • Versatilidade: Exporta para múltiplos formatos, incluindo ONNX, TensorRT, CoreML e outros.
  • Desempenho: Obtém até 5x de aceleração de GPU com TensorRT e 3x de aceleração de CPU com ONNX ou OpenVINO.
  • Compatibilidade: Torna o teu modelo universalmente implantável em inúmeros ambientes de hardware e software.
  • Facilidade de uso: CLI simples e API Python para uma exportação de modelos rápida e direta.

Link to this sectionPrincipais funcionalidades do modo de exportação#

Aqui estão algumas das funcionalidades de destaque:

  • Exportação com um clique: Comandos simples para exportar para diferentes formatos.
  • Exportação em lote: Exporta modelos capazes de inferência em lote.
  • Inferência otimizada: Modelos exportados são otimizados para tempos de inferência mais rápidos.
  • Vídeos tutoriais: Guias aprofundados e tutoriais para uma experiência de exportação fluida.
Dica
  • Exporta para ONNX ou OpenVINO para até 3x de aceleração de CPU.
  • Exporta para TensorRT para até 5x de aceleração de GPU.

Link to this sectionExemplos de uso#

Exporta um modelo YOLO26n para um formato diferente como ONNX ou TensorRT. Vê a secção de Argumentos abaixo para uma lista completa de argumentos de exportação.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Link to this sectionArgumentos#

Esta tabela detalha as configurações e opções disponíveis para exportar modelos YOLO para diferentes formatos. Estas definições são críticas para otimizar o desempenho, o tamanho e a compatibilidade do modelo exportado em várias plataformas e ambientes. A configuração adequada garante que o modelo esteja pronto para implantação na aplicação pretendida com eficiência ideal.

ArgumentoTipoPredefiniçãoDescrição
formatstr'torchscript'Formato de destino para o modelo exportado, como 'onnx', 'torchscript', 'engine' (TensorRT), ou outros. Cada formato permite compatibilidade com diferentes ambientes de implantação.
imgszint ou tuple640Tamanho de imagem desejado para a entrada do modelo. Pode ser um número inteiro para imagens quadradas (por exemplo, 640 para 640×640) ou um tuplo (height, width) para dimensões específicas.
kerasboolFalseAtiva a exportação para o formato Keras para TensorFlow SavedModel, fornecendo compatibilidade com serviços e APIs do TensorFlow.
optimizeboolFalseAplica otimização para dispositivos móveis ao exportar para TorchScript, potencialmente reduzindo o tamanho do modelo e melhorando o desempenho da inferência. Não compatível com o formato NCNN ou dispositivos CUDA. Para DEEPX, ativa uma otimização de compilador mais alta que reduz a latência de inferência e aumenta o tempo de compilação.
halfboolFalseAtiva a quantização FP16 (precisão média), reduzindo o tamanho do modelo e potencialmente acelerando a inferência em hardware compatível. Não é compatível com quantização INT8 ou exportações apenas para CPU. Disponível apenas para certos formatos, por exemplo, ONNX (veja abaixo).
int8boolFalseAtiva a quantização INT8, comprimindo ainda mais o modelo e acelerando a inferência com perda mínima de precisão, principalmente para dispositivos de borda. O TensorRT 11+ utiliza quantização Q/DQ explícita do ModelOpt; o TensorRT 7-10 utiliza PTQ com um calibrador.
dynamicboolFalsePermite tamanhos de entrada dinâmicos para exportações de TorchScript, ONNX, OpenVINO, TensorRT e CoreML, aumentando a flexibilidade ao lidar com dimensões de imagem variadas.
simplifyboolTrueSimplifica o grafo do modelo para exportações ONNX com onnxslim, potencialmente melhorando o desempenho e a compatibilidade com motores de inferência.
opsetintNoneEspecifica a versão do opset ONNX para compatibilidade com diferentes analisadores e runtimes de ONNX. Se não for definido, usa a versão suportada mais recente.
workspacefloat ou NoneNoneDefine o tamanho máximo do workspace em GiB para otimizações do TensorRT, equilibrando o uso de memória e o desempenho. Use None para alocação automática pelo TensorRT até o limite máximo do dispositivo.
nmsboolFalseAdiciona a Supressão não máxima (NMS) ao modelo exportado quando suportado (consulte Formatos de Exportação), melhorando a eficiência do pós-processamento de detecção. Não disponível para modelos end-to-end.
batchint1Especifica o tamanho da inferência em lote do modelo de exportação ou o número máximo de imagens que o modelo exportado processará simultaneamente no modo predict. Para exportações de Edge TPU, isso é definido automaticamente como 1.
devicestrNoneEspecifica o dispositivo para exportação: GPU (device=0), CPU (device=cpu), MPS para silício Apple (device=mps), Huawei Ascend NPU (device=npu ou device=npu:0), ou DLA para NVIDIA Jetson (device=dla:0 ou device=dla:1). Exportações para TensorRT usam GPU automaticamente, mas o TensorRT 11.0 não oferece suporte a DLA.
datastr'coco8.yaml'Caminho para o arquivo de configuração do conjunto de dados, essencial para calibração de quantização INT8. Se não especificado com INT8 ativado, coco8.yaml será usado como reserva para calibração.
fractionfloat1.0Especifica a fração do conjunto de dados a ser usada para calibração de quantização INT8. Permite calibrar em um subconjunto do conjunto de dados completo, útil para experimentos ou quando os recursos são limitados. Se não especificado com INT8 ativado, o conjunto de dados completo será usado.
end2endboolNoneSubstitui o modo end-to-end em modelos YOLO que suportam inferência sem NMS (YOLO26, YOLOv10). Definir como False permite exportar esses modelos para serem compatíveis com o pipeline de pós-processamento tradicional baseado em NMS. Consulte o Guia de Detecção End-to-End para obter detalhes.

Ajustar estes parâmetros permite a personalização do processo de exportação para atender a requisitos específicos, tais como ambiente de implantação, restrições de hardware e metas de desempenho. Selecionar o formato e as definições adequadas é essencial para alcançar o melhor equilíbrio entre tamanho do modelo, velocidade e precisão.

Link to this sectionFormatos de Exportação#

Os formatos de exportação disponíveis para o YOLO26 estão na tabela abaixo. Podes exportar para qualquer formato usando o argumento format, por exemplo, format='onnx' ou format='engine'. Podes prever ou validar diretamente em modelos exportados, por exemplo, yolo predict model=yolo26n.onnx. Exemplos de uso são mostrados para o teu modelo após a conclusão da exportação. Os modelos também podem ser exportados diretamente a partir do navegador na Plataforma Ultralytics sem qualquer configuração local.

FormatoArgumento formatModeloMetadadosArgumentos
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n.onnximgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pbimgsz, batch, device
TF Litetfliteyolo26n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, int8, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/imgsz, batch, int8, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/imgsz, int8, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn_model/imgsz, batch, name, int8, data, fraction, device

Link to this sectionFAQ#

Link to this sectionComo exporto um modelo YOLO26 para o formato ONNX?#

Exportar um modelo YOLO26 para o formato ONNX é direto com o Ultralytics. Ele fornece métodos Python e CLI para exportar modelos.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Para mais detalhes sobre o processo, incluindo opções avançadas como o manuseio de diferentes tamanhos de entrada, consulta o guia de integração ONNX.

Link to this sectionQuais são os benefícios de usar o TensorRT para exportação de modelos?#

Usar o TensorRT para exportação de modelos oferece melhorias de desempenho significativas. Modelos YOLO26 exportados para TensorRT podem alcançar até 5x de aceleração de GPU, tornando-o ideal para aplicações de inferência em tempo real.

  • Versatilidade: Otimiza modelos para uma configuração de hardware específica.
  • Velocidade: Alcança inferência mais rápida através de otimizações avançadas.
  • Compatibilidade: Integra-se perfeitamente com hardware NVIDIA.

Para aprender mais sobre como integrar o TensorRT, vê o guia de integração TensorRT.

Link to this sectionComo ativo a quantização INT8 ao exportar o meu modelo YOLO26?#

A quantização INT8 é uma excelente forma de comprimir o modelo e acelerar a inferência, especialmente em dispositivos de edge. Eis como podes ativar a quantização INT8:

Exemplo
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # Load a model
model.export(format="onnx", int8=True, data="coco8.yaml")

A quantização INT8 pode ser aplicada a vários formatos, como ONNX, TensorRT, OpenVINO, CoreML e Rockchip RKNN. Para obter resultados de quantização ideais, fornece um conjunto de dados representativo usando o parâmetro data.

Link to this sectionPor que é importante o tamanho de entrada dinâmico ao exportar modelos?#

O tamanho de entrada dinâmico permite que o modelo exportado lide com dimensões de imagem variáveis, proporcionando flexibilidade e otimizando a eficiência de processamento para diferentes casos de uso. Ao exportar para formatos como ONNX ou TensorRT, ativar o tamanho de entrada dinâmico garante que o modelo se possa adaptar a diferentes formas de entrada sem problemas.

Para ativar esta funcionalidade, usa a flag dynamic=True durante a exportação:

Exemplo
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)

O redimensionamento de entrada dinâmico é particularmente útil para aplicações onde as dimensões de entrada podem variar, como no processamento de vídeo ou ao lidar com imagens de diferentes fontes.

Link to this sectionQuais são os principais argumentos de exportação a considerar para otimizar o desempenho do modelo?#

Compreender e configurar os argumentos de exportação é crucial para otimizar o desempenho do modelo:

  • format: O formato de destino para o modelo exportado (por exemplo, onnx, torchscript, tensorflow).
  • imgsz: Tamanho de imagem desejado para a entrada do modelo (por exemplo, 640 ou (height, width)).
  • half: Ativa a quantização FP16, reduzindo o tamanho do modelo e potencialmente acelerando a inferência.
  • optimize: Aplica otimizações específicas para ambientes móveis ou restritos.
  • int8: Ativa a quantização INT8, altamente benéfica para implantações de edge AI.

Para implantação em plataformas de hardware específicas, considera usar formatos de exportação especializados como TensorRT para GPUs NVIDIA, CoreML para dispositivos Apple, ou Edge TPU para dispositivos Google Coral.

Link to this sectionO que representam os tensores de saída nos modelos YOLO exportados?#

Quando exportas um modelo YOLO para formatos como ONNX ou TensorRT, a estrutura do tensor de saída depende da tarefa do modelo. Compreender estas saídas é importante para implementações de inferência personalizadas.

Para modelos de deteção (por exemplo, yolo26n.pt), a saída é tipicamente um único tensor com formato (batch_size, 4 + num_classes, num_predictions) onde os canais representam coordenadas da caixa mais pontuações por classe, e num_predictions depende da resolução de entrada da exportação (e pode ser dinâmico).

Para modelos de segmentação (por exemplo, yolo26n-seg.pt), terás tipicamente duas saídas: o primeiro tensor com formato (batch_size, 4 + num_classes + mask_dim, num_predictions) (caixas, pontuações de classe e coeficientes de máscara), e o segundo tensor com formato (batch_size, mask_dim, proto_h, proto_w) contendo protótipos de máscara usados com os coeficientes para gerar máscaras de instância. Os tamanhos dependem da resolução de entrada da exportação (e podem ser dinâmicos).

Para modelos de pose (por exemplo, yolo26n-pose.pt), o tensor de saída tem tipicamente o formato (batch_size, 4 + num_classes + keypoint_dims, num_predictions), onde keypoint_dims depende da especificação da pose (por exemplo, número de pontos-chave e se a confiança está incluída), e num_predictions depende da resolução de entrada da exportação (e pode ser dinâmico).

Os exemplos nos exemplos de inferência ONNX demonstram como processar estas saídas para cada tipo de modelo.

Link to this sectionPor que é que o output0 está em FP32 ao exportar com half=True e end2end=True?#

Ao exportar com half=True (ou int8=True), a maioria dos tensores é convertida para precisão menor para reduzir o tamanho do modelo e melhorar o desempenho. No entanto, quando end2end=True está ativado, o pós-processamento (incluindo índices de classe) é incorporado diretamente no grafo exportado.

O tensor output0 contém índices de classe, que são representados internamente como valores de vírgula flutuante. FP16 não consegue representar de forma fiável valores inteiros acima de 2048 devido à sua precisão de mantissa limitada. Para evitar potencial perda de precisão ou IDs de classe incorretos, o output0 é mantido intencionalmente em FP32.

Este comportamento é esperado e também se aplica a exportações de precisão inferior ou quantizadas, onde a fidelidade do índice de classe deve ser preservada.

Se forem necessárias saídas em FP16 completo, exporta com end2end=False e realiza o pós-processamento externamente.

Comentários