YOLO Vision 2026:

Validação de Modelo com Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Introdução#

A validação é um passo crítico no pipeline de aprendizado de máquina, permitindo que avalies a qualidade dos teus modelos treinados. O modo Val no Ultralytics YOLO26 fornece um conjunto robusto de ferramentas e métricas para avaliar o desempenho dos teus modelos de detecção de objetos. 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

Por 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.
  • Ajuste de Hiperparâmetros: Usa métricas de validação para afinar o teu modelo para um melhor desempenho.

Principais 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 lembram-se automaticamente das suas configurações de treino, para que possas validar facilmente um modelo no mesmo tamanho de imagem e no conjunto de dados original com apenas yolo val model=yolo26n.pt ou YOLO("yolo26n.pt").val()

Exemplos de uso#

Valida a precisão de um modelo YOLO26n treinado no conjunto de dados COCO8. Nenhum argumento é necessário, pois o model retém o seu data de treino e os argumentos como atributos do modelo. Vê a seçã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 iniciar a validação como um script. Adiciona um bloco if __name__ == "__main__": antes do teu código de validação para resolvê-lo.

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

Argumentos 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 YAML do dataset (por exemplo, coco8.yaml), que deve incluir o caminho para os dados de validação. A classificação, por sua vez, aceita um diretório de dataset ou o nome de um dataset integrado (por exemplo, imagenet10).
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, salva os resultados em um arquivo JSON para análise posterior, integração com outras ferramentas ou envio para servidores de avaliação como o COCO.
conffloat0.001Define o limite mínimo de confiança para detecções. Valores mais baixos aumentam o recall, mas podem introduzir mais falsos positivos. As curvas de precisão-recall usam por padrão 0.001; as matrizes de confusão de detecção usam um valor explícito conf, ou 0.25 quando ele é omitido. A precisão e o recall do resumo usam a confiança max-F1, portanto podem diferir dos valores derivados de confusion_matrix.png. O padrão é 0.01 para a validação de OBB para reduzir o uso de memória.
ioufloat0.7Define o limite de Intersection Over Union para a Non-Maximum Suppression. Controla a eliminação de detecções duplicadas.
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 da validação: 16/"fp16" ativa a validação FP16 em GPUs suportadas; 32/"fp32"/não definido é FP32. A quantização INT8/PTQ é configurada durante a export e, em seguida, usada validando o modelo exportado. Substitui o sinalizador obsoleto 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 separados por vírgula.
dnnboolFalseSe True, usa o módulo DNN do OpenCV para a inferência de modelos ONNX, oferecendo uma alternativa aos métodos de inferência do PyTorch.
plotsboolTrueQuando definido como True, gera e salva gráficos de prediçõ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 o lote, reduzindo o preenchimento e potencialmente aumentando a velocidade e a eficiência ao processar imagens na sua proporção original. Ignorado para a validação depth, que estica cada imagem para um quadrado fixo imgsz em vez de preencher.
splitstr'val'Determina a divisão do dataset a ser usada para validação (val, test ou train). Permite flexibilidade na escolha do 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, o que é útil para análises posteriores, 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 augmentação em tempo de teste (TTA) durante a validação, o que pode melhorar a precisão da deteção à custa da velocidade de inferência ao executar a inferência em versões transformadas da entrada. Apenas disponível para modelos PyTorch da Ultralytics.
agnostic_nmsboolFalseAtiva a Supressão Não Máxima agnóstica de classes, suprimindo caixas sobrepostas com pontuações mais baixas, independentemente da classe prevista. Útil para aplicações centradas em instâncias. Para modelos de ponta a ponta (YOLO26, YOLOv10), isto apenas evita que a mesma deteção apareça com múltiplos rótulos de classe (duplicados com IoU=1.0) e não executa supressão baseada em limiar 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 grafos PyTorch 2.x torch.compile com backend='inductor'. Aceita True"default", False → desativa, ou um modo de string como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Retorna para o modo ávido (eager) com um aviso se não for suportado.
channels_lastboolFalseUsa o formato de memória channels_last (NHWC) para convoluções durante a validação, acelerando GPUs CUDA Tensor Core sem alteração nos resultados. Aplica-se apenas a modelos nativos do PyTorch; ignorado para CPU, MPS e formatos exportados como TensorRT e ONNX.
end2endboolNoneSubstitui o modo ponta a ponta em modelos YOLO que suportam inferência sem NMS (YOLO26, YOLOv10). Configurá-lo como False permite executar a validação usando o pipeline tradicional de NMS, permitindo adicionalmente o 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.

Exemplo de Validação com Argumentos#



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

Explore model validation and different export methods in 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, revocação, F1, TP, FP e FN por imagem (no limite de IoU de 0,5) para todas as tarefas exceto classificação. Acede a elas através de results.box.image_metrics para detecçã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 revocação 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.

O que vem a seguir#

Estás satisfeito com as métricas? Exporta o modelo para um formato de implantação. Se a precisão estiver incorreta, volta atrás e retreina com diferentes hiperparâmetros ou mais dados de treino.

FAQ#

  • 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 nos modos Python e CLI. Consulta a seção Argumentos para Validação de Modelos YOLO para ver a lista completa de parâmetros.

  • 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 de desempenho completa, é crucial rever todas estas métricas. Para mais detalhes, consulta os Principais Recursos do Modo Val.

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

    • Precisão: 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. Sabe mais sobre estas vantagens na seção Porquê Validar com o Ultralytics YOLO.

  • Sim, podes validar o teu modelo YOLO26 usando um custom dataset. Especifica o argumento data com o caminho para o YAML do teu dataset, que deve incluir o caminho para os validation data. A classificação, por outro lado, aceita um diretório de dataset ou o nome de um dataset incorporado (por exemplo, imagenet10).

    Nota

    A validação é efetuada utilizando os nomes de classes do próprio modelo, que podes ver utilizando model.names, e que podem ser diferentes daqueles que o próprio dataset define.

    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 seção Exemplo de Validação com Argumentos.

  • Para guardar os resultados da validação num arquivo JSON, podes definir o argumento save_json como True ao executar a validação. Isto pode ser feito tanto na API Python quanto no 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 Validação de Modelos YOLO para mais detalhes.

Comentários