Modelo de Benchmarking com Ultralytics YOLO
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
Argumentos
Argumentos como model
, data
, imgsz
, half
, device
e 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
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.