Ultralytics YOLO27:
Get Started

Benchmark de modelos com Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

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.
Dica
  • 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#

Instalação recomendada

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.

Exemplo
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.

ChaveValor padrãoDescrição
modelNoneEspecifica 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.
dataNoneCaminho 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).
imgsz640Tamanho 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.
quantizeNonePrecisã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.
deviceNoneDefine 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.
verboseFalseSe 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.
eps0.001Pequeno é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.
Valores padrão da função independente `benchmark()`

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.

FormatoArgumento formatModeloMetadadosArgumentos
PyTorch-yolo26n.pt✅-
TorchScripttorchscriptyolo26n.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n_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:

    Exemplo
    from 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: 16 para FP16, 8 para 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 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.
    • 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.

Comentários