Salta para o conteúdo

Exportação de modelos com Ultralytics YOLO

Ultralytics YOLO ecossistema e integrações

Introdução

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



Observa: Como exportar o modelo Ultralytics YOLOv8 personalizado treinado e executar a inferência ao vivo na webcam.

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

  • Versatilidade: Exporta para vários formatos, incluindo ONNX, TensorRT, CoreML, e muito mais.
  • Desempenho: Obtém até 5x a velocidade da GPU com TensorRT e 3x a velocidade da CPU com ONNX ou OpenVINO.
  • Compatibilidade: Torna o teu 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 características do modo de exportação

Apresentamos-te algumas das funcionalidades mais importantes:

  • Exportação com um clique: Comandos simples para exportar para diferentes formatos.
  • Exportação em lote: Exporta 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 a velocidade da CPU em até 3x.
  • Exporta para TensorRT para aumentar a velocidade da GPU em até 5x.

Exemplos de utilização

Exporta um modelo YOLOv8n para um formato diferente, como ONNX ou TensorRT. Consulte 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('yolov8n.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=yolov8n.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.

Argumenta Tipo Predefinição Descrição
format str 'torchscript' Formato de destino para o modelo exportado, como por exemplo '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 exportar 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 ponta.
dynamic bool False Permite tamanhos de entrada dinâmicos para exportações para ONNX e TensorRT , aumentando a flexibilidade no tratamento de dimensões de imagem variáveis.
simplify bool False Simplifica o gráfico do modelo para ONNX exportações, 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 otimizações do TensorRT , equilibrando o uso de 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.

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 YOLOv8 encontram-se na tabela abaixo. Podes exportar para qualquer formato utilizando o botão format argumento, ou seja format='onnx' ou format='engine'. Podes prever ou validar diretamente nos modelos exportados, ou seja yolo predict model=yolov8n.onnx. São apresentados exemplos de utilização para o teu modelo após a conclusão da exportação.

Formato format Argumenta Modelo Metadados Argumentos
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize, batch
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb imgsz, batch
TF Leve tflite yolov8n.tflite imgsz, half, int8, batch
TF Borda TPU edgetpu yolov8n_edgetpu.tflite imgsz, batch
TF.js tfjs yolov8n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ imgsz, half, batch


Criado em 2023-11-12, Atualizado em 2024-05-08
Autores: Burhan-Q (3), glenn-jocher (11)

Comentários