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 em CPU
  • TensorRT: Para obteres a máxima eficiência em GPU
  • OpenVINO: Para Intel otimização de hardware
  • CoreML, TensorFlow SavedModel , e muito mais: Para diversas necessidades de implantação.

Dica

  • Exporta para ONNX ou OpenVINO para obter até 3x mais velocidade em CPU .
  • Exporta para TensorRT para uma aceleração de até 5x em GPU .

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 multiGPU .
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, 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

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

FAQ

Como é que faço uma avaliação comparativa do desempenho do meu modelo YOLOv8 utilizando Ultralytics?

Ultralytics YOLOv8 oferece um modo Benchmark para avaliar o desempenho do teu modelo em diferentes formatos de exportação. Este modo fornece informações sobre as principais métricas, como a precisão média (mAP50-95), a exatidão e o tempo de inferência em milissegundos. Para executar benchmarks, podes usar os comandos Python ou CLI . Por exemplo, para fazer benchmark em um GPU:

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

Para mais detalhes sobre os argumentos de referência, visita a secção Argumentos.

Quais são as vantagens de exportar modelos YOLOv8 para diferentes formatos?

A exportação dos modelos YOLOv8 para diferentes formatos, como ONNX, TensorRT e OpenVINO , permite otimizar o desempenho com base no seu ambiente de implementação. Por exemplo:

  • ONNX: Oferece até 3x mais velocidade em CPU .
  • TensorRT: Oferece até 5x mais velocidade em GPU .
  • OpenVINO: Especificamente optimizado para o hardware Intel . Estes formatos melhoram a velocidade e a precisão dos teus modelos, tornando-os mais eficientes para várias aplicações do mundo real. Visita a página Exportar para obteres detalhes completos.

Porque é que o benchmarking é crucial na avaliação dos modelos YOLOv8 ?

A avaliação comparativa dos teus modelos YOLOv8 é essencial por várias razões:

  • Toma decisões informadas: Compreende os compromissos entre velocidade e precisão.
  • Atribuição de recursos: Avalia o desempenho em diferentes opções de hardware.
  • Otimização: Determina qual o formato de exportação que oferece o melhor desempenho para casos de utilização específicos.
  • Eficiência de custos: Optimiza a utilização de hardware com base nos resultados de benchmark. As principais métricas, como mAP50-95, precisão Top-5 e tempo de inferência, ajudam a fazer essas avaliações. Consulta a secção Principais métricas para obteres mais informações.

Que formatos de exportação são suportados por YOLOv8, e quais são as suas vantagens?

YOLOv8 suporta uma variedade de formatos de exportação, cada um adaptado a hardware e casos de utilização específicos:

  • ONNX: Melhor para CPU desempenho.
  • TensorRT: Ideal para GPU eficiência.
  • OpenVINO: Optimizado para o hardware Intel .
  • CoreML & TensorFlow: Útil para iOS e aplicações gerais de ML. Para obter uma lista completa dos formatos suportados e as respectivas vantagens, consulta a secção Formatos de exportação suportados.

Que argumentos posso utilizar para afinar os meus parâmetros de referência YOLOv8 ?

Ao executar benchmarks, vários argumentos podem ser personalizados para atender a necessidades específicas:

  • modelo: Caminho para o ficheiro do modelo (por exemplo, "yolov8n.pt").
  • dados: Caminho para um ficheiro YAML que define o conjunto de dados (por exemplo, "coco8.yaml").
  • imgsz: O tamanho da imagem de entrada, quer como um único número inteiro ou uma tupla.
  • meio: Ativa a inferência FP16 para um melhor desempenho.
  • int8: Ativa a quantização INT8 para dispositivos de borda.
  • dispositivo: Especifica o dispositivo de cálculo (por exemplo, "cpu", "cuda:0").
  • verboso: Controla o nível de detalhe do registo. Para obter uma lista completa de argumentos, consulta a secção Argumentos.


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

Comentários