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 Simplifies the model graph for ONNX exports with onnxslim, potentially improving performance and compatibility.
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 Specifies export model batch inference size or the max number of images the exported model will process concurrently in 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
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


Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (15), Burhan-Q (4), Kayzwer (2)

Coment√°rios