Ir para o conteúdo

Exportação de Modelos com Ultralytics YOLO

Ecossistema e integrações Ultralytics YOLO

Introdução

O objetivo final de treinar um modelo é implementá-lo para aplicações no mundo real. O modo de exportação no Ultralytics YOLO11 oferece uma gama versátil de opções para exportar seu modelo treinado para diferentes formatos, tornando-o implementável em várias plataformas e dispositivos. Este guia abrangente tem como objetivo orientá-lo pelas nuances da exportação de modelos, mostrando como alcançar o máximo de compatibilidade e desempenho.



Assista: Como Exportar um Modelo Ultralytics YOLO Treinado Personalizado e Executar Inferência ao Vivo na Webcam.

Por que escolher o modo de exportação do YOLO11?

  • Versatilidade: Exporta para vários formatos, incluindo ONNX, TensorRT, CoreML e muito mais.
  • Desempenho: Obtenha até 5x de aceleração da GPU com TensorRT e 3x de aceleração da CPU com ONNX ou OpenVINO.
  • Compatibilidade: Torne seu modelo universalmente implementável em vários ambientes de hardware e software.
  • Facilidade de Uso: CLI e API python simples para exportação de modelo rápida e direta.

Principais recursos 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: Exporte modelos capazes de inferência em lote.
  • Inferência Otimizada: Os modelos exportados são otimizados para tempos de inferência mais rápidos.
  • Vídeos Tutoriais: Guias e tutoriais detalhados para uma experiência de exportação tranquila.

Dica

  • Exporte para ONNX ou OpenVINO para até 3x de aceleração na CPU.
  • Exporte para TensorRT para até 5x de aceleração na GPU.

Exemplos de uso

Exporte um modelo YOLO11n para um formato diferente, como ONNX ou TensorRT. Consulte a seção Argumentos abaixo para obter uma lista completa de argumentos de exportação.

Exemplo

from ultralytics import YOLO

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

# Export the model
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

Argumentos

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

Argumento Tipo Padrão Descrição
format str '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.
imgsz int ou tuple 640 Tamanho de imagem desejado para a entrada do modelo. Pode ser um inteiro para imagens quadradas (por exemplo, 640 para 640×640) ou uma tupla (height, width) para dimensões específicas.
keras bool False Permite a exportação para o formato Keras para TensorFlow SavedModel, proporcionando compatibilidade com o serviço e as APIs do TensorFlow.
optimize bool False Aplica otimização para dispositivos móveis ao exportar para TorchScript, potencialmente reduzindo o tamanho do modelo e melhorando o desempenho de inferência. Não é compatível com o formato NCNN ou dispositivos CUDA.
half bool False Ativa a quantização FP16 (meia precisão), reduzindo o tamanho do modelo e potencialmente acelerando a inferência em hardware suportado. Não é compatível com a quantização INT8 ou exportações somente para CPU para ONNX.
int8 bool False Ativa 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. Quando usado com TensorRT, realiza a quantização pós-treinamento (PTQ).
dynamic bool False Permite tamanhos de entrada dinâmicos para exportações ONNX, TensorRT e OpenVINO, aumentando a flexibilidade no manuseio de diferentes dimensões de imagem. Automaticamente definido para True ao usar TensorRT com INT8.
simplify bool True Simplifica o grafo do modelo para exportações ONNX com onnxslim, potencialmente melhorando o desempenho e a compatibilidade com os mecanismos de inferência.
opset int None Especifica a versão do ONNX opset para compatibilidade com diferentes analisadores e tempos de execução ONNX. Se não for definido, usa a versão mais recente suportada.
workspace float ou None None Define o tamanho máximo do espaço de trabalho em GiB para TensorRT otimizações, equilibrando o uso de memória e o desempenho. Use None para alocação automática pelo TensorRT até ao máximo do dispositivo.
nms bool False Adiciona a Supressão Não Máxima (NMS) ao modelo exportado quando suportado (ver Formatos de Exportação), melhorando a eficiência do pós-processamento de detecção. Não disponível para modelos end2end.
batch int 1 Especifica o tamanho do lote de inferência do modelo de exportação ou o número máximo de imagens que o modelo exportado processará simultaneamente em predict modo. Para exportações Edge TPU, isso é automaticamente definido como 1.
device str None Especifica o dispositivo para exportação: GPU (device=0CPU (device=cpu), MPS para Apple silicon (device=mps) ou DLA para NVIDIA Jetson (device=dla:0 ou device=dla:1). As exportações do TensorRT usam GPU automaticamente.
data str 'coco8.yaml' Caminho para o conjunto de dados arquivo de configuração (padrão: coco8.yaml), essencial para a calibração da quantização INT8. Se não for especificado com o INT8 habilitado, um conjunto de dados padrão será atribuído.
fraction float 1.0 Especifica a fração do conjunto de dados a ser usada para a calibração da 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 for especificado com INT8 habilitado, o conjunto de dados completo será usado.

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

Formatos de Exportação

Os formatos de exportação YOLO11 disponíveis estão na tabela abaixo. Você pode exportar para qualquer formato usando o format argumento, ou seja, format='onnx' ou format='engine'. Você pode prever ou validar diretamente em modelos exportados, ou seja, yolo predict model=yolo11n.onnxExemplos de uso são mostrados para seu modelo após a conclusão da exportação.

Formato format Argumento Modelo Metadados Argumentos
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, half, optimize, nms, batch, device
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch, device
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, nms, batch, device
TF GraphDef pb yolo11n.pb imgsz, batch, device
TF Lite tflite yolo11n.tflite imgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPU edgetpu yolo11n_edgetpu.tflite imgsz, device
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, nms, batch, device
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch, device
MNN mnn yolo11n.mnn imgsz, batch, int8, half, device
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch, device
IMX500 imx yolo11n_imx_model/ imgsz, int8, data, fraction, device
RKNN rknn yolo11n_rknn_model/ imgsz, batch, name, device

FAQ

Como exporto um modelo YOLO11 para o formato ONNX?

Exportar um modelo YOLO11 para o formato ONNX é simples com a Ultralytics. Ela oferece métodos em Python e CLI para exportar modelos.

Exemplo

from ultralytics import YOLO

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

# Export the model
model.export(format="onnx")
yolo export model=yolo11n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom trained model

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

Quais são os benefícios de usar o TensorRT para exportar modelos?

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

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

Para saber mais sobre a integração do TensorRT, consulte o guia de integração do TensorRT.

Como habilito a quantização INT8 ao exportar meu modelo YOLO11?

A quantização INT8 é uma excelente forma de comprimir o modelo e acelerar a inferência, especialmente em dispositivos de borda. Veja como você pode ativar a quantização INT8:

Exemplo

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.pt format=engine int8=True # export TensorRT model with INT8 quantization

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

Por que o tamanho de entrada dinâmico é importante ao exportar modelos?

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

Para habilitar este recurso, use a dynamic=True flag durante a exportação:

Exemplo

from ultralytics import YOLO

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

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

Quais são os principais argumentos de exportação a serem considerados para otimizar o desempenho do modelo?

Entender 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 (ex: 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 com restrições.
  • int8: Ativa a quantização INT8, altamente benéfica para IA de ponta implantações.

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



📅 Criado há 1 ano ✏️ Atualizado há 3 meses

Comentários