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: "coco8.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. Usa 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, 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, 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

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



Criado em 2023-11-12, Atualizado em 2024-04-27
Autores: glenn-jocher (12), Burhan-Q (1), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)

Comentários