Saltar para o conteúdo

Exportação de modelos com Ultralytics YOLO

Ultralytics YOLO ecossistema e integrações

Introdução

O objetivo final da formação de um modelo é implementá-lo em aplicações do mundo real. O modo de exportação em Ultralytics YOLO11 oferece uma gama versátil de opções para exportar o seu modelo treinado para diferentes formatos, tornando-o implementável em várias plataformas e dispositivos. Este guia completo tem como objetivo guiá-lo através das nuances da exportação de modelos, mostrando como obter a máxima compatibilidade e desempenho.



Ver: Como exportar o modelo Ultralytics YOLO personalizado treinado e executar a inferência em direto na Webcam.

Porquê escolher o modo de exportação do YOLO11?

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

Principais caraterísticas do modo de exportação

Eis algumas das funcionalidades que se destacam:

  • Exportação com um clique: Comandos simples para exportar para diferentes formatos.
  • Exportação em lote: Exportar modelos com capacidade de inferência em lote.
  • Inferência optimizada: Os modelos exportados são optimizados para tempos de inferência mais rápidos.
  • Vídeos tutoriais: Guias e tutoriais detalhados para uma experiência de exportação sem problemas.

Dica

  • Exportar para ONNX ou OpenVINO para aumentar até 3x a velocidade em CPU .
  • Exportar para TensorRT para um aumento de velocidade de até 5x em GPU .

Exemplos de utilização

Exportar um modelo YOLO11n para um formato diferente, como ONNX ou TensorRT. Ver a secção Argumentos abaixo para obter uma lista completa dos 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 do YOLO para diferentes formatos. Essas configurações são essenciais 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 ser implantado na aplicação pretendida com eficiência ideal.

Argumento Tipo Predefinição Descrição
format str 'torchscript' Formato de destino para o modelo exportado, tal como 'onnx', 'torchscript', 'engine' TensorRT), ou outros. Cada formato permite a compatibilidade com diferentes ambientes de implantação.
imgsz int ou tuple 640 Tamanho de imagem pretendido para a entrada do modelo. Pode ser um número 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 TensorFlow servindo e APIs.
optimize bool False Aplica otimização para dispositivos móveis ao exportar para o TorchScript, reduzindo potencialmente o tamanho do modelo e melhorando o desempenho da inferência. Não é compatível com o formato NCNN ou dispositivos CUDA .
half bool False Permite 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 CPU para CPU para ONNX.
int8 bool False Ativa a quantização INT8, comprimindo ainda mais o modelo e acelerando a inferência com uma perda mínima de precisão, principalmente para dispositivos de borda. Quando utilizado com o TensorRT, efectua a quantização pós-treino (PTQ).
dynamic bool False Permite tamanhos de entrada dinâmicos para exportações ONNX, TensorRT e OpenVINO , aumentando a flexibilidade no tratamento de dimensões de imagem variáveis. Definido automaticamente para True quando se utiliza o TensorRT com INT8.
simplify bool True Simplifica o gráfico do modelo para ONNX exportações com onnxslimmelhorando potencialmente o desempenho e a compatibilidade com os motores de inferência.
opset int None Especifica a versão do conjunto de operações ONNX para compatibilidade com diferentes ONNX e tempos de execução. Se não for definido, utiliza a última versão suportada.
workspace float ou None None Define o tamanho máximo do espaço de trabalho em GiB para TensorRT optimizações, equilibrando a utilização da memória e o desempenho. Utilizar None para atribuição automática por TensorRT até ao máximo do dispositivo.
nms bool False Adiciona 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 da deteção. Não disponível para modelos end2end.
batch int 1 Especifica 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 em predict mode. Para as exportações de TPU Edge, este valor é automaticamente definido como 1.
device str None Especifica o dispositivo para exportação: GPU (device=0), CPU (device=cpu), MPS para silício Apple (device=mps) ou DLA para NVIDIA Jetson (device=dla:0 ou device=dla:1). As exportações TensorRT utilizam automaticamente GPU.
data str 'coco8.yaml' Caminho para o conjunto de dados ficheiro de configuração (predefinição: coco8.yaml), essencial para a calibração da quantização da INT8. Se não for especificado com a INT8 activada, será atribuído um conjunto de dados por defeito.

O ajuste desses parâmetros permite a personalização do processo de exportação para atender a requisitos específicos, como ambiente de implantação, restrições de hardware e metas de desempenho. A seleção do formato e das definições adequadas é essencial para obter o melhor equilíbrio entre o tamanho do modelo, a velocidade e a precisão.

Formatos de exportação

Os formatos de exportação disponíveis em YOLO11 encontram-se na tabela abaixo. É possível exportar para qualquer formato utilizando o botão format argumento, ou seja format='onnx' ou format='engine'. É possível prever ou validar diretamente nos modelos exportados, ou seja yolo predict model=yolo11n.onnx. São apresentados exemplos de utilização para o seu modelo após a conclusão da exportação.

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

FAQ

Como é que exporto um modelo YOLO11 para o formato ONNX ?

A exportação de um modelo YOLO11 para o formato ONNX é simples com Ultralytics. Fornece os métodos 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 mais pormenores sobre o processo, incluindo opções avançadas como o tratamento de diferentes tamanhos de entrada, consulte o guia de integraçãoONNX .

Quais são as vantagens de utilizar TensorRT para a exportação de modelos?

A utilização de TensorRT para a exportação de modelos oferece melhorias significativas de desempenho. Os modelos YOLO11 exportados para TensorRT podem atingir um aumento de velocidade de até 5x em GPU , tornando-o ideal para aplicações de inferência em tempo real.

  • Versatilidade: Otimizar modelos para uma configuração de hardware específica.
  • Velocidade: Obtenha uma inferência mais rápida através de optimizações avançadas.
  • Compatibilidade: Integra-se sem problemas com o hardware NVIDIA .

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

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

A quantização INT8 é uma excelente maneira de compactar o modelo e acelerar a inferência, especialmente em dispositivos de borda. Veja como 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, tais como TensorRT, OpenVINOe CoreML. Para obter resultados de quantização óptimos, forneça um representante conjunto de dados utilizando o data parâmetro.

Porque é que o tamanho da entrada dinâmica é importante quando se exportam modelos?

O tamanho de entrada dinâmico permite que o modelo exportado lide com diferentes dimensões de imagem, proporcionando flexibilidade e optimizando a eficiência do processamento para diferentes casos de utilização. Ao exportar para formatos como ONNX ou TensorRTa ativação do tamanho de entrada dinâmico garante que o modelo pode adaptar-se a diferentes formas de entrada sem problemas.

Para ativar esta funcionalidade, utilize a opção dynamic=True 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 dinâmico de entrada é particularmente útil para aplicações em que as dimensões de entrada podem variar, como no processamento de vídeo ou no tratamento de imagens de diferentes fontes.

Quais 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 pretendido para a entrada do modelo (por exemplo, 640 ou (height, width)).
  • half: Permite a quantização FP16, reduzindo o tamanho do modelo e potencialmente acelerando a inferência.
  • optimize: Aplica optimizaçõ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 implantaçã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.

📅C riado há 1 ano ✏️ Atualizado há 3 dias

Comentários