Avaliação de Modelos com Ultralytics YOLO#
Visualização de Testes de Desempenho#
Introdução#
Assim que o teu modelo estiver treinado e validado, o passo lógico seguinte é avaliar o seu desempenho em vários cenários do mundo real. O modo de teste de desempenho no Ultralytics YOLO26 serve este propósito, fornecendo uma estrutura robusta para avaliar a velocidade e a precisão do teu modelo numa variedade de formatos de exportação.
Consulta a pré-visualização não lançada do YOLO27 para obteres benchmarks prelimininares de velocidade.
Watch: Benchmark Ultralytics YOLO26 Models | How to Compare Model Performance on Different Hardware?
Porque é que os testes de desempenho são cruciais?#
- Decisões Informadas: Obtém informações sobre as compensações entre velocidade e precisão.
- Alocação de Recursos: Compreende o desempenho de diferentes formatos de exportação em diferentes hardwares.
- Otimização: Descobre qual o formato de exportação que oferece o melhor desempenho para o teu caso de uso específico.
- Eficiência de Custos: Utiliza os recursos de hardware de forma mais eficiente com base nos resultados dos testes de desempenho.
Métricas Chave no Modo de Teste de Desempenho#
- mAP50-95: Para deteção de objetos, segmentação e estimativa de pose.
- accuracy_top1: Para classificação de imagens.
- Tempo de Inferência: O tempo tomado por cada imagem em milissegundos.
Formatos de exportação suportados#
- ONNX: Para um desempenho ideal da CPU
- TensorRT: Para máxima eficiência da GPU
- OpenVINO: Para otimização de hardware Intel
- CoreML, TensorFlow SavedModel e Outros: Para diversas necessidades de implementação.
- Exporta para ONNX ou OpenVINO para obteres até 3x mais velocidade na CPU.
- Exporta para TensorRT para obteres até 5x mais velocidade na GPU.
Exemplos de utilização#
Instala o Ultralytics com dependências de exportação antes de realizar os testes de desempenho para evitar pacotes em falta.
pip install ultralytics[export]Executa testes de desempenho do YOLO26n em todos os formatos de exportação suportados (ONNX, TensorRT, etc.). Consulta a secção de Argumentos abaixo para ver uma lista completa de opções de exportação.
from ultralytics.utils.benchmarks import benchmark
# Benchmark on GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Benchmark specific export format
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")Argumentos#
Argumentos como model, data, imgsz, quantize, device, verbose e format dão aos utilizadores a flexibilidade de ajustar os testes de desempenho às suas necessidades específicas e comparar o desempenho de diferentes formatos de exportação com facilidade.
| Chave | Valor predefinido | Descrição |
|---|---|---|
model | None | Especifica o caminho para o ficheiro do modelo. Aceita formatos .pt e .yaml, por exemplo, "yolo26n.pt" para modelos pré-treinados ou ficheiros de configuração. |
data | None | Caminho para o YAML do conjunto de dados para os testes de desempenho, incluindo tipicamente caminhos e definições para dados de validação. Exemplo: "coco8.yaml". A classificação aceita em alternativa um diretório de conjunto de dados ou um nome de conjunto de dados integrado (por exemplo, imagenet10). |
imgsz | 640 | O tamanho da imagem de entrada para o modelo. Deve ser um único número inteiro para imagens quadradas (por exemplo, 640); benchmark() apenas suporta tamanhos de imagem quadrados. |
quantize | None | Precisão solicitada: 16 (FP16) ou 8 (INT8; os esquemas PTQ necessitam de calibração data/fraction, os baseados apenas em pesos não); 32/não definido é FP32 onde o formato o suporta — um formato que não consiga exportar FP32 rejeita um 32 explícito ou recorre à precisão de que necessita. A linha nativa do PyTorch não é exportada: apenas 16 a afeta, selecionando a inferência FP16, enquanto 8, 32 e não definido executam FP32. Cada formato executa então a inferência à sua própria precisão de tempo de execução. Substitui os sinalizadores obsoletos half/int8. |
device | 'cpu' | Define o(s) dispositivo(s) de computação para os testes de desempenho, tais como "cpu" ou "cuda:0". |
verbose | False | Controla o nível de detalhe no registo de saída. Define verbose=True para registos detalhados. |
eps | 0.001 | Pequeno épsilon (milissegundos) adicionado ao tempo de inferência por imagem antes de o converter para FPS, evitando a divisão por zero. Raramente alterado. |
format | '' | Testa o desempenho apenas do formato de exportação especificado (por exemplo, format=onnx). Deixa-o em branco para testar automaticamente todos os formatos suportados. |
A função autónoma benchmark() (from ultralytics.utils.benchmarks import benchmark) utiliza as suas próprias predefinições de assinatura em vez dos valores da tabela acima, nomeadamente model="yolo26n.pt" e imgsz=160; passa imgsz explicitamente para corresponder à CLI yolo benchmark.
Formatos de exportação#
Os testes de desempenho tentarão ser executados automaticamente em todos os formatos de exportação possíveis listados abaixo. Em alternativa, podes executar testes de desempenho para um formato específico utilizando o argumento format, que aceita qualquer um dos formatos mencionados abaixo.
| Formato | Argumento format | Modelo | Metadados | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
nms=None por padrão utiliza saídas brutas para NMS externo. Define nms=False para selecionar uma cabeça livre de NMS disponível; os formatos não suportados recorrem ao seu caminho de saída nativo. As entradas nms acima identificam formatos que podem incorporar NMS com nms=True.
Consulta todos os detalhes de export na página Export.
Perguntas frequentes#
O Ultralytics YOLO26 oferece um modo Benchmark para avaliar o desempenho do teu modelo em diferentes formatos de exportação. Este modo fornece informações sobre métricas chave como a precisão média média (mAP50-95), a precisão e o tempo de inferência em milissegundos. Para executar testes de desempenho, podes utilizar comandos Python ou da CLI. Por exemplo, para executar testes de desempenho numa GPU:
Exemplofrom ultralytics.utils.benchmarks import benchmark # Benchmark on GPU benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Para mais detalhes sobre os argumentos de teste de desempenho, visita a secção Argumentos.
Exportar modelos YOLO26 para diferentes formatos como ONNX, TensorRT e OpenVINO permite-te otimizar o desempenho com base no teu ambiente de implementação. Por exemplo:
- ONNX: Fornece até 3x mais velocidade na CPU.
- TensorRT: Oferece até 5x mais velocidade na GPU.
- OpenVINO: Especificamente otimizado para hardware Intel.
Estes formatos melhoram tanto a velocidade como 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.
Testar o desempenho dos teus modelos YOLO26 é essencial por várias razões:
- Decisões Informadas: Compreende as compensações entre velocidade e precisão.
- Alocaçã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 uso específicos.
- Eficiência de Custos: Otimiza a utilização de hardware com base nos resultados dos testes de desempenho.
Métricas chave como mAP50-95, precisão Top-1 e tempo de inferência ajudam a fazer estas avaliações. Consulta a secção Métricas Chave para mais informações.
O YOLO26 suporta uma variedade de formatos de exportação, cada um adaptado a hardware e casos de uso específicos:
- ONNX: O melhor para o desempenho da CPU.
- TensorRT: Ideal para a eficiência da GPU.
- OpenVINO: Otimizado para hardware Intel.
- CoreML e TensorFlow: Úteis para iOS e aplicações de aprendizagem automática em geral.
Para uma lista completa dos formatos suportados e das respetivas vantagens, consulta a secção Formatos de Exportação Suportados.
Ao executar testes de desempenho, vários argumentos podem ser personalizados para se adequarem a necessidades específicas:
- model: Caminho para o ficheiro do modelo (por exemplo, "yolo26n.pt").
- data: Caminho para o YAML do conjunto de dados (por exemplo,
"coco8.yaml"); a classificação aceita em alternativa um diretório de conjunto de dados ou um nome de conjunto de dados integrado (por exemplo,imagenet10). - imgsz: O tamanho da imagem de entrada quadrada como um único número inteiro, tal como
640. O modo de teste de desempenho utiliza o mesmo tamanho de imagem quadrada em todo o PyTorch e formatos exportados para uma comparação justa. - quantize: Precisão solicitada:
16para FP16,8para INT8 (útil para dispositivos de ponta);32/não definido é FP32 onde o formato o suporta — um formato que não consiga exportar FP32 rejeita um32explícito ou recorre à precisão de que necessita. A linha nativa do PyTorch não é exportada: apenas16a afeta, selecionando a inferência FP16, enquanto8,32e não definido executam FP32. Cada formato executa então a inferência à sua própria precisão de tempo de execução. - device: Especifica o dispositivo de computação (por exemplo, "cpu", "cuda:0").
- verbose: Controla o nível de detalhe do registo.
Para uma lista completa de argumentos, consulta a secção Argumentos.