Benchmark de modelos com Ultralytics YOLO#
Visualização de benchmarks#
Introdução#
Depois que o modelo for treinado e validado, o próximo passo lógico é avaliar o desempenho dele em vários cenários do mundo real. O modo de benchmark do Ultralytics YOLO26 atende a esse propósito ao fornecer uma estrutura robusta para avaliar a velocidade e a precisão do modelo em diversos formatos de exportação.
Veja a prévia não lançada do YOLO27 para consultar os benchmarks preliminares de velocidade.
Assista: Faça benchmark dos modelos Ultralytics YOLO26 | Como comparar o desempenho do modelo em diferentes hardwares?
Por que o benchmarking é essencial?#
- Decisões bem embasadas: entenda as vantagens e desvantagens entre velocidade e precisão.
- Alocação de recursos: entenda o desempenho de diferentes formatos de exportação em diferentes hardwares.
- Otimização: descubra qual formato de exportação oferece o melhor desempenho para seu caso de uso específico.
- Eficiência de custos: use os recursos de hardware com mais eficiência com base nos resultados dos benchmarks.
Principais métricas do modo de benchmark#
- mAP50-95: para detecção de objetos, segmentação de instâncias, estimativa de pose e OBB.
- mIoU: para segmentação semântica.
- delta1: para estimativa de profundidade.
- accuracy_top1: para classificação de imagens.
- Tempo de inferência: tempo gasto por imagem, em milissegundos.
Formatos de exportação compatíveis#
- ONNX: para 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 implantação.
- Exporte para ONNX ou OpenVINO para obter até 3x mais velocidade na CPU.
- Exporte para TensorRT para obter até 5x mais velocidade na GPU.
Exemplos de uso#
Instale o Ultralytics com as dependências de exportação antes de executar o benchmark para evitar a falta de pacotes.
pip install ultralytics[export]Execute benchmarks do YOLO26n em todos os formatos de exportação compatíveis (ONNX, TensorRT etc.). Consulte a seção Argumentos abaixo para ver a lista completa de opções de exportação.
from ultralytics.utils.benchmarks import benchmark
# Benchmark na GPU
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Benchmark de um formato de exportação específico
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 usuários flexibilidade para ajustar os benchmarks às suas necessidades específicas e comparar facilmente o desempenho de diferentes formatos de exportação.
| Chave | Valor padrão | Descrição |
|---|---|---|
model | None | Especifica o caminho para o arquivo do modelo. Aceita os formatos .pt e .yaml, por exemplo, "yolo26n.pt" para modelos pré-treinados ou arquivos de configuração. |
data | None | Caminho para o YAML do conjunto de dados usado no benchmarking, que normalmente inclui caminhos e configurações dos dados de validação. Exemplo: "coco8.yaml". Para classificação, use um diretório do conjunto de dados ou o nome de um conjunto de dados integrado (por exemplo, imagenet10). |
imgsz | 640 | Tamanho da imagem de entrada do modelo. Deve ser um único número inteiro para imagens quadradas (por exemplo, 640); benchmark() aceita apenas tamanhos de imagem quadrados. |
quantize | None | Precisão solicitada: 16 (FP16) ou 8 (INT8; os esquemas PTQ precisam de dados de calibração data/fraction, mas os que usam apenas pesos não precisam); 32/não definido usa FP32 quando o formato é compatível — um formato que não pode exportar FP32 rejeita um 32 explícito ou recorre à precisão exigida. A linha nativa do PyTorch não é exportada: apenas 16 afeta essa linha, selecionando a inferência FP16, enquanto 8, 32 e a opção não definida executam FP32. Cada formato executa a inferência com sua própria precisão de execução. Substitui as flags obsoletas half/int8. |
device | None | Define o dispositivo de computação para o benchmarking, como "cpu" ou "cuda:0"; se não for definido, usa a primeira GPU disponível ou, caso contrário, a CPU. |
verbose | False | Se True ou um número de ponto flutuante for passado, as falhas do benchmark (exceto asserções) geram uma exceção em vez de registrar um erro; um número de ponto flutuante como 0.25 também verifica se a métrica de cada formato bem-sucedido supera esse limite. |
eps | 0.001 | Pequeno épsilon (milissegundos) adicionado ao tempo de inferência por imagem antes de convertê-lo em FPS, evitando a divisão por zero. Raramente é alterado. |
format | '' | Executa o benchmark apenas no formato de exportação especificado (por exemplo, format=onnx). Deixe em branco para testar automaticamente todos os formatos compatíveis. |
A função independente benchmark() (from ultralytics.utils.benchmarks import benchmark) usa os valores padrão da própria assinatura, em vez dos valores da tabela acima, principalmente model="yolo26n.pt", imgsz=160 e device="cpu"; passe imgsz e device explicitamente para corresponder à CLI yolo benchmark.
Formatos de exportação#
Os benchmarks tentarão ser executados automaticamente em todos os formatos de exportação possíveis listados abaixo. Como alternativa, você pode executar benchmarks para um formato específico usando 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 |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, 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 |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, 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 |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None usa por predefinição saídas brutas para NMS externo. Define nms=False para selecionar uma cabeça sem NMS disponível; os formatos não suportados recorrem ao respetivo caminho de saída nativo. As entradas nms acima identificam os formatos que podem incorporar NMS com nms=True.
Consulte os detalhes completos de export na página Exportação.
Perguntas frequentes#
O Ultralytics YOLO26 oferece um modo de benchmark para avaliar o desempenho do modelo em diferentes formatos de exportação. Esse modo fornece informações sobre métricas importantes, como precisão média (mAP50-95), precisão e tempo de inferência em milissegundos. Para executar benchmarks, você pode usar comandos Python ou CLI. Por exemplo, para executar um benchmark na GPU:
Exemplofrom ultralytics.utils.benchmarks import benchmark # Benchmark na GPU benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Para saber mais sobre os argumentos de benchmark, visite a seção Argumentos.
Exportar modelos YOLO26 para diferentes formatos, como ONNX, TensorRT e OpenVINO, permite otimizar o desempenho de acordo com o ambiente de implantação. Por exemplo:
- ONNX: oferece até 3x mais velocidade na CPU.
- TensorRT: oferece até 5x mais velocidade na GPU.
- OpenVINO: otimizado especificamente para hardware Intel.
Esses formatos melhoram a velocidade de inferência no hardware de destino, tornando seus modelos mais eficientes para diversas aplicações do mundo real. Acesse a página Exportação para ver todos os detalhes.
Executar benchmarks dos seus modelos YOLO26 é essencial por vários motivos:
- Decisões bem embasadas: entenda as vantagens e desvantagens entre velocidade e precisão.
- Alocação de recursos: avalie o desempenho em diferentes opções de hardware.
- Otimização: determine qual formato de exportação oferece o melhor desempenho para casos de uso específicos.
- Eficiência de custos: otimize o uso do hardware com base nos resultados dos benchmarks.
Métricas importantes, como mAP50-95, precisão Top-1 e tempo de inferência, ajudam a fazer essas avaliações. Consulte a seção Principais métricas para saber mais.
O YOLO26 é compatível com diversos formatos de exportação, cada um adaptado a hardwares e casos de uso específicos:
- ONNX: ideal 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 ML em geral.
Para ver a lista completa de formatos compatíveis e suas respectivas vantagens, consulte a seção Formatos de exportação compatíveis.
Ao executar benchmarks, vários argumentos podem ser personalizados para atender a necessidades específicas:
- model: caminho para o arquivo do modelo (por exemplo, "yolo26n.pt").
- data: caminho para o YAML do conjunto de dados (por exemplo,
"coco8.yaml"); para classificação, use um diretório do conjunto de dados ou o nome de um conjunto de dados integrado (por exemplo,imagenet10). - imgsz: tamanho quadrado da imagem de entrada como um único número inteiro, como
640. O modo de benchmark usa o mesmo tamanho quadrado de imagem no PyTorch e nos formatos exportados para permitir uma comparação justa. - quantize: precisão solicitada:
16para FP16,8para INT8 (útil para dispositivos de borda);32/não definido usa FP32 quando o formato é compatível — um formato que não pode exportar FP32 rejeita um32explícito ou recorre à precisão exigida. A linha nativa do PyTorch não é exportada: apenas16afeta essa linha, selecionando a inferência FP16, enquanto8,32e a opção não definida executam FP32. Cada formato executa a inferência com sua própria precisão de execução. - device: especifica o dispositivo de computação (por exemplo, "cpu", "cuda:0").
- verbose: gera uma exceção em caso de falha do benchmark, em vez de registrá-la; passe um número de ponto flutuante para também exigir que a métrica de cada formato supere esse limite.
Para ver a lista completa de argumentos, consulte a seção Argumentos.