Como testar modelos de visão computacional#
Introdução#
O teste de modelos verifica o desempenho de um modelo treinado em dados reais e nunca antes vistos — objetos em movimento, mal iluminados ou parcialmente ocultos, em vez de um benchmark selecionado. Enquanto a avaliação de modelos mede métricas em um conjunto de dados rotulado, o teste confirma se o comportamento aprendido pelo modelo corresponde aos objetivos da tua aplicação antes do implante. Este guia aborda a preparação de dados de teste, o teste de modelos Ultralytics YOLO26 e a identificação de overfitting, underfitting e vazamento de dados.
Watch: How to Test Machine Learning Models | Avoid Data Leakage in Computer Vision 🚀
Teste de modelo vs. Avaliação de modelo#
O teste de modelos e a avaliação de modelos são duas etapas distintas em um projeto de visão computacional. A avaliação mede o desempenho com métricas em um conjunto de dados rotulado; o teste verifica se o comportamento aprendido do modelo se mantém em condições que se assemelham às do implante.
Supõe que treinaste um modelo de visão computacional para reconhecer cães e gatos e queres implantar este modelo em uma loja de animais para monitorá-los. Durante a fase de avaliação do modelo, usas um conjunto de dados rotulado para calcular métricas como precisão, acurácia e revocação. Por exemplo, o modelo pode ter 98% de precisão para distinguir entre cães e gatos em um determinado conjunto de dados.
Após a avaliação, você testa o modelo usando imagens de um pet shop para ver quão bem ele identifica gatos e cães em condições mais variadas e realistas. Você verifica se ele consegue rotular corretamente gatos e cães quando eles estão se movendo, em diferentes condições de iluminação ou parcialmente obscurecidos por objetos como brinquedos ou móveis. O teste de modelo verifica se o modelo se comporta como esperado fora do ambiente de avaliação controlado.
Preparação para o teste de modelo#
Os conjuntos de dados de visão computacional costumam ser divididos em conjuntos de treino e teste para simular condições do mundo real: os dados de treino ensinam o modelo, enquanto os dados de teste verificam o comportamento dele em exemplos que ele nunca viu. A Ultralytics Platform mantém a organização e a anotação dos conjuntos de dados em um só lugar, o que ajuda na criação de um conjunto de teste rotulado.
- Representação realista: Os dados de teste nunca vistos devem ser semelhantes aos dados que o modelo manipulará quando implantado. Isso fornece uma imagem realista das capacidades do modelo.
- Tamanho suficiente: O conjunto de dados de teste precisa ser grande o suficiente para fornecer insights confiáveis sobre o desempenho do modelo.
Como testar um modelo YOLO26#
Testar um modelo YOLO26 treinado envolve dois fluxos de trabalho complementares: validar em uma divisão de teste rotulada para obter métricas quantitativas e prever em novas imagens para inspecionar o comportamento qualitativamente.
Validar em uma divisão de teste rotulada#
Modo de validação compara as previsões do modelo com os rótulos de verdade fundamental e relata precisão, revocação, mAP50 e mAP50-95 para modelos de deteção. Ele também guarda recursos visuais, como uma matriz de confusão e uma curva de precisão-revocação, que ajudam a identificar áreas específicas onde o modelo pode não estar a ter um bom desempenho.
from ultralytics import YOLO
# Load a pretrained model or your own trained checkpoint, e.g. "path/to/best.pt"
model = YOLO("yolo26n.pt")
# Validate; add split="test" if your dataset YAML defines a test split
metrics = model.val(data="coco8.yaml")
print(metrics.box.map) # mAP50-95Por predefinição, a validação é executada na divisão val do conjunto de dados. Para medir o desempenho em um conjunto de teste isolado, define uma divisão test: no YAML do teu conjunto de dados e passa split="test".
Prever em novas imagens#
Modo de previsão executa o modelo em dados novos e desconhecidos, sem exigir rótulos. Ele não gera métricas de desempenho, mas guardar as saídas anotadas permite analisar o comportamento do modelo em imagens do mundo real — por exemplo, uma pasta inteira de imagens de teste de uma só vez.
from ultralytics import YOLO
# Load a pretrained model or your own trained checkpoint, e.g. "path/to/best.pt"
model = YOLO("yolo26n.pt")
# Run predictions on a folder of test images and save annotated results
results = model.predict(source="path/to/test_images", save=True)Para verificar se o YOLO26 se adapta à tua aplicação antes de investir num treino personalizado, executa o modo de previsão com um ponto de controlo pré-treinado nas tuas próprias imagens. Os modelos são pré-treinados em conjuntos de dados como COCO, por isso os resultados dão uma ideia rápida de quão bem o modelo poderá desempenhar-se no teu contexto específico.
Modo de Validação vs. Predição#
| Modo | Objetivo | Requer rótulos | Saída |
|---|---|---|---|
| Validação | Quantificar o desempenho em relação ao ground truth | Sim | Precisão, recall, mAP50, mAP50-95, matriz de confusão, curvas PR |
| Previsão | Inspecionar o comportamento do modelo em dados novos e não rotulados | Não | Imagens anotadas e resultados de predição, sem métricas |
Como analisar os resultados do teste#
Uma vez que as previsões e métricas estiverem em mãos, analise onde e por que o modelo falha:
- Imagens classificadas incorretamente: Identifique e revise as imagens que o modelo classificou incorretamente para entender onde ele está errando.
- Análise de erros: Realize uma análise de erros completa para entender os tipos de erros (por exemplo, falsos positivos vs. falsos negativos) e suas possíveis causas.
- Viés e justiça: Verifique se há algum viés nas previsões do modelo. Certifique-se de que o modelo tenha um desempenho igualmente bom em diferentes subconjuntos de dados, especialmente se incluir atributos sensíveis como raça, gênero ou idade.
Overfitting e Underfitting em Machine Learning#
Ao testar um modelo de aprendizagem automática, especialmente em visão computacional, é importante ter cuidado com o overfitting e o underfitting. Esses problemas podem afetar significativamente a eficácia do teu modelo com novos dados.
| Problema | Sinais comuns | Como lidar com isso |
|---|---|---|
| Overfitting | Alta precisão de treinamento, mas baixa precisão de validação; hipersensibilidade a pequenas mudanças ou detalhes irrelevantes nas imagens | Aplica regularização, como dropout, aumenta o tamanho do conjunto de dados de treino e simplifica a arquitetura do modelo |
| Underfitting | Baixa precisão mesmo no conjunto de treinamento; falha consistente em reconhecer características ou objetos óbvios | Usa um modelo mais complexo, fornece recursos mais relevantes e aumenta as épocas de treino |
O segredo é encontrar um equilíbrio para que o modelo performe bem em ambos os conjuntos de dados, de treinamento e de validação. Monitorar regularmente as métricas e inspecionar visualmente as previsões durante os testes ajuda você a evitar um desvio para qualquer um dos extremos.
Vazamento de dados em visão computacional e como evitá-lo#
O vazamento de dados acontece quando informações de fora do conjunto de dados de treinamento são usadas acidentalmente para treinar o modelo. O modelo pode parecer muito preciso durante o treinamento, mas não funcionará bem em dados novos e não vistos quando ocorrer vazamento de dados.
O vazamento pode ser difícil de detectar e geralmente vem de vieses ocultos nos dados de treinamento:
| Tipo de viés | O que parece |
|---|---|
| Viés de câmera | Diferentes ângulos, iluminação, sombras e movimentos da câmera introduzem padrões indesejados |
| Viés de sobreposição | Logotipos, carimbos de data/hora ou outras sobreposições nas imagens enganam o modelo |
| Viés de fonte e objeto | Fontes ou objetos específicos que aparecem frequentemente em certas classes distorcem o aprendizado do modelo |
| Viés espacial | Desequilíbrios entre primeiro plano e fundo, distribuições de caixas delimitadoras e locais dos objetos afetam o treino |
| Viés de rótulo e domínio | Rótulos incorretos ou mudanças nos tipos de dados levam ao vazamento |
Como detectar e evitar o vazamento de dados#
Para encontrar o vazamento de dados, verifique se os resultados do modelo são surpreendentemente bons, analise se um recurso é muito mais importante que outros, verifique se as decisões do modelo fazem sentido intuitivamente e confirme se os dados foram divididos corretamente antes de qualquer processamento.
Para evitá-lo, use um conjunto de dados diversificado com imagens ou vídeos de diferentes câmeras e ambientes, e analise cuidadosamente seus dados em busca de vieses ocultos — como todas as amostras positivas sendo tiradas em um horário específico do dia. Evitar o vazamento de dados torna seus modelos de visão computacional mais confiáveis em situações do mundo real.
O que vem depois do teste de modelo#
Depois de testar o teu modelo, os próximos passos dependem dos resultados. Se o teu modelo tiver um bom desempenho, podes implantá-lo num ambiente de produção. Se os resultados não forem satisfatórios, precisarás de fazer melhorias. Isso pode envolver analisar erros, recolher mais dados, melhorar a qualidade dos dados, ajustar hiperparâmetros e treinar novamente o modelo.
Conclusão#
Um teste de modelo rigoroso — validar numa divisão de teste isolada, fazer previsões em imagens do mundo real e verificar a existência de overfitting e vazamento de dados — é o que transforma um modelo bem avaliado num modelo confiável. Resolve os problemas que os testes revelam antes do implante, e o teu modelo terá muito mais probabilidades de funcionar conforme o pretendido em produção. Se surgirem dúvidas pelo caminho, pergunta à comunidade no repositório GitHub da Ultralytics ou no servidor do Discord da Ultralytics.
FAQ#
A avaliação de modelos mede o desempenho com métricas num conjunto de dados rotulado, enquanto o teste de modelos verifica como o modelo se comporta em dados novos e desconhecidos que se assemelham às condições de implante. A avaliação produz números como precisão e mAP a partir de um conjunto de dados controlado; o teste revela se o comportamento aprendido se mantém com iluminação variada, movimento ou oclusão. Consulta Teste de Modelos vs. Avaliação de Modelos para ver um exemplo prático.
Usa o modo de previsão e passa o caminho de uma pasta como
source— o YOLO26 é executado em cada imagem da pasta e pode guardar os resultados anotados para revisão. O modo de previsão não calcula métricas; para quantificar o desempenho num conjunto rotulado, usa o modo de validação em vez disso. Ambos os fluxos de trabalho são mostrados em Como Testar um Modelo YOLO26.Para modelos de deteção, a validação relata precisão, revocação, mAP50 e mAP50-95, e guarda gráficos que incluem uma matriz de confusão e uma curva de precisão-revocação. Para validar numa divisão de teste dedicada em vez da divisão predefinida
val, definetest:no YAML do teu conjunto de dados e passasplit="test". Consulta o guia de métricas de desempenho para saberes como interpretar cada métrica.No caso do overfitting, aplica técnicas de regularização como dropout, aumenta o tamanho do conjunto de dados de treino ou simplifica a arquitetura do modelo. No caso do underfitting, usa um modelo mais complexo, fornece recursos mais relevantes ou treina durante mais épocas. Os sinais de cada problema e as respetivas correções estão resumidos em Overfitting e Underfitting na Aprendizagem Automática.
Suspeita de vazamento de dados quando o desempenho do teste parecer surpreendentemente bom, quando um único recurso dominar as previsões ou quando as decisões do modelo não fizerem sentido intuitivo. Evita-o utilizando conjuntos de dados diversos provenientes de diferentes câmaras e ambientes, revendo os dados para detetar preconceitos ocultos e verificando se a divisão de treino/teste ocorreu antes de qualquer processamento. Consulta Vazamento de Dados em Visão Computacional para conhecer os tipos de viés mais comuns.
Se os resultados atingirem os objetivos do teu projeto, implanta o modelo; caso contrário, melhora-o antes do implante. Isso pode significar analisar erros, recolher dados mais diversos, melhorar a qualidade dos dados, ajustar hiperparâmetros e treinar novamente. Repete os testes após cada ciclo de alterações para confirmar se as correções funcionaram.