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, CoreML, entre outros.
  • Desempenho: Ganhe até 5x mais velocidade em GPU com TensorRT e 3x mais velocidade em 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', 'tensorflow'ou outros, definindo a compatibilidade com vários 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 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 a otimização para dispositivos móveis ao exportar para TorchScript, reduzindo potencialmente o tamanho do modelo e melhorando o desempenho.
half bool False Permite a quantização FP16 (meia-precisão), reduzindo o tamanho do modelo e potencialmente acelerando a inferência no hardware suportado.
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.
dynamic bool False Permite tamanhos de entrada dinâmicos para as exportações ONNX, TensorRT e OpenVINO , aumentando a flexibilidade no tratamento de dimensões de imagem variáveis.
simplify bool True Simplifica o gráfico do modelo para ONNX exportações com onnxslim, melhorando potencialmente o desempenho e a compatibilidade.
opset int None Especifica a versão do ONNX opset para compatibilidade com diferentes analisadores e tempos de execução do ONNX . Se não for definido, utiliza a última versão suportada.
workspace float 4.0 Define o tamanho máximo do espaço de trabalho em GiB para as optimizações do TensorRT , equilibrando a utilização da memória e o desempenho.
nms bool False Adiciona Supressão Não Máxima (NMS) à exportação CoreML , essencial para um pós-processamento de deteção preciso e eficiente.
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 irá processar em simultâneo em predict modo.
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).

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, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF Leve tflite yolo11n.tflite imgsz, half, int8, batch
TF Borda TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, 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

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 obter mais detalhes sobre o processo, incluindo opções avançadas como o tratamento de diferentes tamanhos de entrada, consulte a secçã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, como TensorRT e CoreML. Para mais informações, consulte a secção Exportação.

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 dimensões de imagem variáveis, proporcionando flexibilidade e optimizando a eficiência de processamento para diferentes casos de utilização. Ao exportar para formatos como ONNX ou TensorRT, a 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

Para um contexto adicional, consulte a configuração do tamanho da entrada dinâmica.

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: Permite a quantização INT8, altamente benéfica para implantações de ponta.

Para obter uma lista detalhada e explicações de todos os argumentos de exportação, visite a secção Argumentos de exportação.

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

Comentários