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 mais velocidade em GPU com TensorRT e 3x mais velocidade em 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 obteres até 3x mais velocidade em CPU .
  • Exporta para TensorRT para obteres até 5x mais velocidade em GPU .

Exemplos de utilização

Export a YOLOv8n model to a different format like ONNX or TensorRT. See the Arguments section below for a full list of export arguments.

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 as exportações ONNX, TensorRT e OpenVINO , aumentando a flexibilidade no tratamento de dimensões de imagem variáveis.
simplify bool False Simplifica o gráfico do modelo para ONNX exporta 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 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 processará simultaneamente 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

FAQ

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

A exportação de um modelo YOLOv8 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("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

For more details on the process, including advanced options like handling different input sizes, refer to the ONNX section.

Quais são as vantagens de utilizar TensorRT para exportar modelos?

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

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

To learn more about integrating TensorRT, see the TensorRT integration guide.

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

A quantização INT8 é uma excelente maneira de comprimir o modelo e acelerar a inferência, especialmente em dispositivos de ponta. Eis como podes ativar a quantização INT8:

Exemplo

from ultralytics import YOLO

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

INT8 quantization can be applied to various formats, such as TensorRT and CoreML. More details can be found in the Export section.

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

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

Para ativar esta funcionalidade, utiliza a opção dynamic=True durante a exportação:

Exemplo

from ultralytics import YOLO

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

Para um contexto adicional, consulta 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 desejado 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.

For a detailed list and explanations of all the export arguments, visit the Export Arguments section.


📅 Created 10 months ago ✏️ Updated 4 days ago

Comentários