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 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
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 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)