Meet YOLO26: next-gen vision AI.

Link to this sectionValidação de Modelo com Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionIntrodução#

A validação é uma etapa crítica no pipeline de machine learning, permitindo avaliar a qualidade dos teus modelos treinados. O modo Val no Ultralytics YOLO26 oferece um conjunto robusto de ferramentas e métricas para avaliar o desempenho dos teus modelos de object detection. Este guia serve como um recurso completo para entender como usar eficazmente o modo Val para garantir que os teus modelos sejam precisos e confiáveis.



Watch: Ultralytics Modes Tutorial: Validation

Link to this sectionPor que validar com Ultralytics YOLO?#

Eis por que usar o modo Val do YOLO26 é vantajoso:

  • Precisão: Obtém métricas precisas como mAP50, mAP75 e mAP50-95 para avaliar de forma abrangente o teu modelo.
  • Conveniência: Utiliza funcionalidades integradas que memorizam as definições de treino, simplificando o processo de validação.
  • Flexibilidade: Valida o teu modelo com os mesmos ou diferentes conjuntos de dados e tamanhos de imagem.
  • Hyperparameter Tuning: Usa métricas de validação para ajustar o teu modelo para um melhor desempenho.

Link to this sectionPrincipais Funcionalidades do Modo Val#

Estas são as funcionalidades notáveis oferecidas pelo modo Val do YOLO26:

  • Definições Automatizadas: Os modelos memorizam as suas configurações de treino para uma validação simples.
  • Suporte a Múltiplas Métricas: Avalia o teu modelo com base numa gama de métricas de precisão.
  • CLI e Python API: Escolhe entre a interface de linha de comandos ou a API Python, dependendo da tua preferência para a validação.
  • Compatibilidade de Dados: Funciona perfeitamente com conjuntos de dados usados durante a fase de treino, bem como com conjuntos de dados personalizados.
Dica
  • Os modelos YOLO26 memorizam automaticamente as suas definições de treino, pelo que podes validar um modelo com o mesmo tamanho de imagem e no conjunto de dados original facilmente com apenas yolo val model=yolo26n.pt ou YOLO("yolo26n.pt").val()

Link to this sectionExemplos de uso#

Valida a accuracy de um modelo YOLO26n treinado no conjunto de dados COCO8. Não são necessários argumentos, uma vez que o model retém os seus data de treino e argumentos como atributos do modelo. Consulta a secção de Argumentos abaixo para obter uma lista completa de argumentos de validação.

Erro de Multi-Processamento no Windows

No Windows, podes receber um RuntimeError ao executar a validação como script. Adiciona um bloco if __name__ == "__main__": antes do teu código de validação para resolver isso.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Link to this sectionArgumentos para a Validação de Modelos YOLO#

Ao validar modelos YOLO, vários argumentos podem ser ajustados para otimizar o processo de avaliação. Estes argumentos controlam aspetos como o tamanho da imagem de entrada, o processamento em lote e os limiares de desempenho. Abaixo encontra-se um detalhamento de cada argumento para te ajudar a personalizar as tuas definições de validação de forma eficaz.

ArgumentoTipoPredefiniçãoDescrição
datastrNoneEspecifica o caminho para o ficheiro de configuração do conjunto de dados (ex: coco8.yaml). Este ficheiro deve incluir o caminho para os dados de validação.
imgszint640Define o tamanho das imagens de entrada. Todas as imagens são redimensionadas para esta dimensão antes do processamento. Tamanhos maiores podem melhorar a precisão para objetos pequenos, mas aumentam o tempo de computação.
batchint16Define o número de imagens por lote. Valores mais altos utilizam a memória GPU de forma mais eficiente, mas requerem mais VRAM. Ajusta com base nos recursos de hardware disponíveis.
save_jsonboolFalseSe True, guarda os resultados num ficheiro JSON para análise posterior, integração com outras ferramentas ou envio para servidores de avaliação como o COCO.
conffloat0.001Define o limiar de confiança mínimo para deteções. Valores mais baixos aumentam a recuperação, mas podem introduzir mais falsos positivos. Usado durante a validação para calcular curvas de precisão-recuperação. Predefinição como 0.01 para validação OBB para reduzir o uso de memória.
ioufloat0.7Define o limiar de Intersection Over Union para Non-Maximum Suppression. Controla a eliminação de deteção de duplicados.
max_detint300Limita o número máximo de deteções por imagem. Útil em cenas densas para evitar deteções excessivas e gerir recursos computacionais.
quantizeint ou strNonePrecisão de validação: 16/"fp16" ativa a validação FP16 em GPUs compatíveis; 32/"fp32"/não definido é FP32. A quantização INT8/PTQ é configurada durante a exportação e, em seguida, usada validando o modelo exportado. Substitui a flag obsoleta half.
devicestrNoneEspecifica o dispositivo para validação (cpu, cuda:0, npu, npu:0, etc.). Quando None, seleciona automaticamente o melhor dispositivo disponível. Múltiplos dispositivos CUDA podem ser especificados com separação por vírgula.
dnnboolFalseSe True, utiliza o módulo DNN do OpenCV para inferência de modelo ONNX, oferecendo uma alternativa aos métodos de inferência do PyTorch.
plotsboolTrueQuando definido como True, gera e salva gráficos de previsões versus ground truth, matrizes de confusão e curvas PR para avaliação visual do desempenho do modelo.
classeslist[int]NoneEspecifica uma lista de IDs de classe para avaliar. Útil para filtrar e focar apenas em certas classes durante a avaliação.
rectboolTrueSe True, usa inferência retangular para processamento em lote, reduzindo o preenchimento (padding) e potencialmente aumentando a velocidade e a eficiência ao processar imagens em sua proporção original.
splitstr'val'Determina a divisão do conjunto de dados a ser usada para validação (val, test ou train). Permite flexibilidade ao escolher o segmento de dados para avaliação de desempenho.
projectstrNoneNome do diretório do projeto onde os resultados da validação são salvos. Ajuda a organizar resultados de diferentes experimentos ou modelos.
namestrNoneNome da execução de validação. Usado para criar um subdiretório dentro da pasta do projeto, onde os registros e resultados da validação são armazenados.
verboseboolTrueSe True, exibe informações detalhadas durante o processo de validação, incluindo métricas por classe, progresso do lote e informações adicionais de depuração.
save_txtboolFalseSe True, salva os resultados da detecção em arquivos de texto, com um arquivo por imagem, útil para análises adicionais, pós-processamento personalizado ou integração com outros sistemas.
save_confboolFalseSe True, inclui valores de confiança nos arquivos de texto salvos quando save_txt está ativado, fornecendo uma saída mais detalhada para análise e filtragem.
workersint8Número de threads de trabalho para carregamento de dados. Valores maiores podem acelerar o pré-processamento de dados, mas podem aumentar o uso da CPU. Definir como 0 usa a thread principal, o que pode ser mais estável em alguns ambientes.
augmentboolFalseAtiva a TTA (Test-Time Augmentation) durante a validação, melhorando potencialmente a precisão da detecção ao custo da velocidade de inferência, ao executar a inferência em versões transformadas da entrada.
agnostic_nmsboolFalseAtiva a Non-Maximum Suppression (Supressão não máxima) agnóstica de classe, que mescla caixas sobrepostas independentemente da classe prevista. Útil para aplicações focadas em instâncias. Para modelos end-to-end (YOLO26, YOLOv10), isso apenas impede que a mesma detecção apareça com múltiplos rótulos de classe (duplicatas IoU=1.0) e não executa a supressão baseada em limite de IoU entre caixas distintas.
single_clsboolFalseTrata todas as classes como uma única classe durante a validação. Útil para avaliar o desempenho do modelo em tarefas de detecção binária ou quando as distinções de classe não são importantes.
visualizeboolFalseVisualiza os ground truths, verdadeiros positivos, falsos positivos e falsos negativos para cada imagem. Útil para depuração e interpretação do modelo.
show_labelsboolTrueExibe rótulos de classe nas visualizações de validação quando visualize=True. Defina como False para uma visualização mais limpa de correspondências e erros.
show_confboolTrueExibe pontuações de confiança nas visualizações de validação quando visualize=True. Defina como False para uma visualização mais limpa de correspondências e erros.
compilebool ou strFalseAtiva a compilação de grafo torch.compile do PyTorch 2.x com backend='inductor'. Aceita True"default", False → desativa, ou um modo de string como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Retorna ao modo eager com um aviso se não for suportado.
end2endboolNoneSubstitui o modo end-to-end em modelos YOLO que suportam inferência sem NMS (YOLO26, YOLOv10). Definir como False permite executar a validação usando o pipeline NMS tradicional, permitindo adicionalmente fazer uso do argumento iou.

Cada uma destas definições desempenha um papel vital no processo de validação, permitindo uma avaliação personalizável e eficiente dos modelos YOLO. Ajustar estes parâmetros de acordo com as tuas necessidades e recursos específicos pode ajudar a alcançar o melhor equilíbrio entre precisão e desempenho.

Link to this sectionExemplo de Validação com Argumentos#



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

Explore a validação de modelos e diferentes métodos de exportação no Google Colab

Os exemplos abaixo mostram a validação de modelos YOLO com argumentos personalizados em Python e CLI.

Exemplo
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
Exportar ConfusionMatrix

Também podes guardar os resultados da ConfusionMatrix em diferentes formatos usando o código fornecido.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Precisão, Recall e F1 por Imagem

A validação armazena métricas de precisão, recall, F1, TP, FP e FN por imagem (no limiar de IoU 0.5) para todas as tarefas, exceto a classificação. Acede a elas através de results.box.image_metrics para deteção e OBB, results.seg.image_metrics para segmentação e results.pose.image_metrics para pose após a conclusão da validação.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

Cada entrada em image_metrics contém as seguintes chaves:

ChaveDescrição
precisionPontuação de precisão para a imagem (tp / (tp + fp)).
recallPontuação de recall para a imagem (tp / (tp + fn)).
f1Média harmónica da precisão e do recall.
tpNúmero de verdadeiros positivos para a imagem.
fpNúmero de falsos positivos para a imagem.
fnNúmero de falsos negativos para a imagem.

Esta funcionalidade está disponível para tarefas de deteção, segmentação, pose e OBB.

MétodoTipo de RetornoDescrição
summary()List[Dict[str, Any]]Converte os resultados da validação num dicionário resumido.
to_df()DataFrameDevolve os resultados da validação como um Polars DataFrame estruturado.
to_csv()strExporta os resultados da validação em formato CSV e devolve a string CSV.
to_json()strExporta os resultados da validação em formato JSON e devolve a string JSON.

Para mais detalhes, consulta a documentação da classe DataExportMixin.

Link to this sectionFAQ#

Link to this sectionComo valido o meu modelo YOLO26 com Ultralytics?#

Para validar o teu modelo YOLO26, podes usar o modo Val fornecido pela Ultralytics. Por exemplo, usando a API Python, podes carregar um modelo e executar a validação com:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

Em alternativa, podes usar a interface de linha de comandos (CLI):

yolo val model=yolo26n.pt

Para mais personalização, podes ajustar vários argumentos como imgsz, batch e conf tanto nos modos Python como CLI. Consulta a secção Argumentos para a Validação de Modelos YOLO para ver a lista completa de parâmetros.

Link to this sectionQue métricas posso obter da validação do modelo YOLO26?#

A validação do modelo YOLO26 fornece várias métricas-chave para avaliar o desempenho do modelo. Estas incluem:

  • mAP50 (Precisão Média média com limiar de IoU de 0,5)
  • mAP75 (Precisão Média média com limiar de IoU de 0,75)
  • mAP50-95 (Precisão Média média através de múltiplos limiares de IoU de 0,5 a 0,95)

Usando a API Python, podes aceder a estas métricas da seguinte forma:

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category
print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Para uma avaliação completa do desempenho, é crucial rever todas estas métricas. Para mais detalhes, consulta as Principais Funcionalidades do Modo Val.

Link to this sectionQuais são as vantagens de usar Ultralytics YOLO para validação?#

Usar Ultralytics YOLO para validação oferece várias vantagens:

  • Precision: O YOLO26 oferece métricas de desempenho precisas, incluindo mAP50, mAP75 e mAP50-95.
  • Conveniência: Os modelos memorizam as suas definições de treino, tornando a validação simples.
  • Flexibilidade: Podes validar contra os mesmos ou diferentes conjuntos de dados e tamanhos de imagem.
  • Hyperparameter Tuning: As métricas de validação ajudam a ajustar os modelos para um melhor desempenho.

Estes benefícios garantem que os teus modelos sejam avaliados minuciosamente e possam ser otimizados para resultados superiores. Aprende mais sobre estas vantagens na secção Por que validar com Ultralytics YOLO.

Link to this sectionPosso validar o meu modelo YOLO26 usando um conjunto de dados personalizado?#

Sim, podes validar o teu modelo YOLO26 usando um conjunto de dados personalizado. Especifica o argumento data com o caminho para o teu ficheiro de configuração do conjunto de dados. Este ficheiro deve incluir o caminho para os dados de validação.

Nota

A validação é efetuada usando os nomes das classes do próprio modelo, que podes ver usando model.names, e que podem ser diferentes daqueles especificados no ficheiro de configuração do conjunto de dados.

Exemplo em Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

Exemplo usando CLI:

yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yaml

Para mais opções personalizáveis durante a validação, consulta a secção Exemplo de Validação com Argumentos.

Link to this sectionComo guardo os resultados da validação num ficheiro JSON no YOLO26?#

Para guardar os resultados da validação num ficheiro JSON, podes definir o argumento save_json como True ao executar a validação. Isto pode ser feito tanto na API Python como na CLI.

Exemplo em Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

Exemplo usando CLI:

yolo val model=yolo26n.pt save_json=True

Esta funcionalidade é particularmente útil para análises adicionais ou integração com outras ferramentas. Consulta os Argumentos para a Validação de Modelos YOLO para mais detalhes.

Comentários