Link to this sectionValidação de Modelo com Ultralytics YOLO#
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.
- 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.ptouYOLO("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.
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.
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 FNLink 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.
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
data | str | None | Especifica 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. |
imgsz | int | 640 | Define 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. |
batch | int | 16 | Define 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_json | bool | False | Se 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. |
conf | float | 0.001 | Define 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. |
iou | float | 0.7 | Define o limiar de Intersection Over Union para Non-Maximum Suppression. Controla a eliminação de deteção de duplicados. |
max_det | int | 300 | Limita o número máximo de deteções por imagem. Útil em cenas densas para evitar deteções excessivas e gerir recursos computacionais. |
quantize | int ou str | None | Precisã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. |
device | str | None | Especifica 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. |
dnn | bool | False | Se 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. |
plots | bool | True | Quando 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. |
classes | list[int] | None | Especifica uma lista de IDs de classe para avaliar. Útil para filtrar e focar apenas em certas classes durante a avaliação. |
rect | bool | True | Se 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. |
split | str | '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. |
project | str | None | Nome do diretório do projeto onde os resultados da validação são salvos. Ajuda a organizar resultados de diferentes experimentos ou modelos. |
name | str | None | Nome 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. |
verbose | bool | True | Se 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_txt | bool | False | Se 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_conf | bool | False | Se 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. |
workers | int | 8 | Nú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. |
augment | bool | False | Ativa 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_nms | bool | False | Ativa 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_cls | bool | False | Trata 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. |
visualize | bool | False | Visualiza os ground truths, verdadeiros positivos, falsos positivos e falsos negativos para cada imagem. Útil para depuração e interpretação do modelo. |
show_labels | bool | True | Exibe 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_conf | bool | True | Exibe 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. |
compile | bool ou str | False | Ativa 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. |
end2end | bool | None | Substitui 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
Os exemplos abaixo mostram a validação de modelos YOLO com argumentos personalizados em Python e CLI.
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")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())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:
| Chave | Descrição |
|---|---|
precision | Pontuação de precisão para a imagem (tp / (tp + fp)). |
recall | Pontuação de recall para a imagem (tp / (tp + fn)). |
f1 | Média harmónica da precisão e do recall. |
tp | Número de verdadeiros positivos para a imagem. |
fp | Número de falsos positivos para a imagem. |
fn | Número de falsos negativos para a imagem. |
Esta funcionalidade está disponível para tarefas de deteção, segmentação, pose e OBB.
| Método | Tipo de Retorno | Descrição |
|---|---|---|
summary() | List[Dict[str, Any]] | Converte os resultados da validação num dicionário resumido. |
to_df() | DataFrame | Devolve os resultados da validação como um Polars DataFrame estruturado. |
to_csv() | str | Exporta os resultados da validação em formato CSV e devolve a string CSV. |
to_json() | str | Exporta 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-95Em alternativa, podes usar a interface de linha de comandos (CLI):
yolo val model=yolo26n.ptPara 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 FNPara 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.
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-95Exemplo usando CLI:
yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yamlPara 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=TrueEsta 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.