Salta para o conte√ļdo

Modelo de Benchmarking com Ultralytics YOLO

Ultralytics YOLO ecossistema e integra√ß√Ķes

Introdução

Assim que o teu modelo estiver treinado e validado, o próximo passo lógico é avaliar o seu desempenho em vários cenários do mundo real. O modo Benchmark em Ultralytics YOLOv8 serve este objetivo, fornecendo uma estrutura robusta para avaliar a velocidade e a precisão do seu modelo numa série de formatos de exportação.



Observa: Ultralytics Tutorial de modos: Benchmark

Porque é que o Benchmarking é crucial?

  • Decis√Ķes informadas: Obt√©m informa√ß√Ķes sobre os compromissos entre velocidade e precis√£o.
  • Aloca√ß√£o de recursos: Compreende o desempenho de diferentes formatos de exporta√ß√£o em diferentes hardwares.
  • Otimiza√ß√£o: Aprende qual o formato de exporta√ß√£o que oferece o melhor desempenho para o teu caso de utiliza√ß√£o espec√≠fico.
  • Efici√™ncia de custos: Utiliza de forma mais eficiente os recursos de hardware com base nos resultados de benchmark.

Principais métricas no modo de referência

  • mAP50-95: Para dete√ß√£o de objectos, segmenta√ß√£o e estimativa de pose.
  • accuracy_top5: Para classifica√ß√£o de imagens.
  • Tempo de infer√™ncia: Tempo necess√°rio para cada imagem em milissegundos.

Formatos de exportação suportados

  • ONNX: Para um desempenho √≥timo da CPU
  • TensorRT: Para obteres a m√°xima efici√™ncia da GPU
  • OpenVINO: Para otimiza√ß√£o do hardware Intel
  • CoreML, TensorFlow SavedModel , e muito mais: Para diversas necessidades de implanta√ß√£o.

Dica

  • Exporta para ONNX ou OpenVINO para aumentar a velocidade da CPU at√© 3x.
  • Exporta para TensorRT para aumentar a velocidade da GPU em at√© 5x.

Exemplos de utilização

Executa os benchmarks YOLOv8n em todos os formatos de exportação suportados, incluindo ONNX, TensorRT etc. Vê a secção Argumentos abaixo para uma lista completa de argumentos de exportação.

Exemplo

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model='yolov8n.pt', data='coco8.yaml', imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

Argumentos

Argumentos como model, data, imgsz, half, devicee verbose oferece aos utilizadores a flexibilidade de ajustar os par√Ęmetros de refer√™ncia √†s suas necessidades espec√≠ficas e comparar facilmente o desempenho de diferentes formatos de exporta√ß√£o.

Chave Valor por defeito Descrição
model None Especifica o caminho para o ficheiro do modelo. Aceita ambos .pt e .yaml formatos, por exemplo, "yolov8n.pt" para modelos pré-treinados ou ficheiros de configuração.
data None Caminho para um ficheiro YAML que define o conjunto de dados para avalia√ß√£o comparativa, incluindo normalmente caminhos e defini√ß√Ķes para dados de valida√ß√£o. Exemplo: "coco128.yaml".
imgsz 640 O tamanho da imagem de entrada para o modelo. Pode ser um √ļnico n√ļmero inteiro para imagens quadradas ou uma tupla (width, height) para n√£o-quadrado, por exemplo, (640, 480).
half False Permite a inferência FP16 (meia-precisão), reduzindo a utilização de memória e possivelmente aumentando a velocidade em hardware compatível. Utiliza half=True para ativar.
int8 False Ativa a quantiza√ß√£o INT8 para um desempenho optimizado nos dispositivos suportados, especialmente √ļtil para dispositivos de ponta. Define int8=True para usares.
device None Define o(s) dispositivo(s) de computa√ß√£o para a avalia√ß√£o comparativa, como "cpu", "cuda:0"ou uma lista de dispositivos como "cuda:0,1" para configura√ß√Ķes multi-GPU.
verbose False Controla o nível de detalhe na saída de registo. Um valor booleano; define verbose=True para registos detalhados ou um valor flutuante para erros de limiar.

Formatos de exportação

Os testes de referência tentarão ser executados automaticamente em todos os formatos de exportação possíveis abaixo.

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

Ver completo export detalhes no Exportação página.



Criado em 2023-11-12, Atualizado em 2024-03-01
Autores: glenn-jocher (10), chr043416@gmail.com (1), Laughing-q (1), maianumerosky (1)

Coment√°rios