Ir para o conteúdo

Validação de Modelos com Ultralytics YOLO

Ecossistema e integrações Ultralytics YOLO

Introdução

A validação é uma etapa crítica no pipeline de aprendizado de máquina, permitindo que você avalie a qualidade de seus modelos treinados. O modo Val no Ultralytics YOLO11 fornece um conjunto robusto de ferramentas e métricas para avaliar o desempenho de seus modelos de detecção de objetos. Este guia serve como um recurso completo para entender como usar efetivamente o modo Val para garantir que seus modelos sejam precisos e confiáveis.



Assista: Tutorial de Modos Ultralytics: Validação

Porquê Validar com Ultralytics YOLO?

Aqui está o porquê usar o modo Val do YOLO11 é vantajoso:

  • Precisão: Obtenha métricas precisas como mAP50, mAP75 e mAP50-95 para avaliar de forma abrangente seu modelo.
  • Conveniência: Utilize recursos integrados que lembram as configurações de treinamento, simplificando o processo de validação.
  • Flexibilidade: Valide seu modelo com os mesmos ou diferentes conjuntos de dados e tamanhos de imagem.
  • Ajuste de Hiperparâmetros: Use métricas de validação para ajustar seu modelo para um melhor desempenho.

Funcionalidades Chave do Modo Val

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

  • Configurações Automatizadas: Os modelos lembram suas configurações de treinamento para uma validação direta.
  • Suporte Multi-Métrico: Avalie seu modelo com base em uma variedade de métricas de precisão.
  • CLI e API Python: Escolha entre a interface de linha de comando ou a API Python com base em sua preferência para validação.
  • Compatibilidade de Dados: Funciona perfeitamente com conjuntos de dados usados durante a fase de treinamento, bem como conjuntos de dados personalizados.

Dica

  • Os modelos YOLO11 lembram automaticamente suas configurações de treinamento, para que você possa validar um modelo no mesmo tamanho de imagem e no conjunto de dados original facilmente com apenas yolo val model=yolo11n.pt ou model('yolo11n.pt').val()

Exemplos de uso

Validar o modelo YOLO11n treinado precisão no conjunto de dados COCO8. Não são necessários argumentos, pois o model mantém seu treinamento data e argumentos como atributos do modelo. Consulte a seção Argumentos abaixo para obter uma lista completa de argumentos de validação.

Exemplo

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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 contains map50-95 of each category
yolo detect val model=yolo11n.pt      # val official model
yolo detect val model=path/to/best.pt # val custom model

Argumentos para Validação do Modelo YOLO

Ao validar modelos YOLO, vários argumentos podem ser ajustados para otimizar o processo de avaliação. Esses argumentos controlam aspectos como tamanho da imagem de entrada, processamento em lote e limites de desempenho. Abaixo está uma análise detalhada de cada argumento para ajudá-lo a personalizar suas configurações de validação de forma eficaz.

Argumento Tipo Padrão Descrição
data str None Especifica o caminho para o arquivo de configuração do conjunto de dados (por exemplo, coco8.yaml). Este arquivo inclui caminhos para dados de validaçãovalidação, nomes de classes e número de classes.
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 da GPU de forma mais eficiente, mas exigem mais VRAM. Ajuste com base nos recursos de hardware disponíveis.
save_json bool False Se 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.
conf float 0.001 Define o limite mínimo de confiança para detecções. Valores mais baixos aumentam o recall, mas podem introduzir mais falsos positivos. Usado durante a validação para calcular as curvas de precisão-recall.
iou float 0.7 Define o limite de Intersecção sobre União para Supressão Não Máxima. Controla a eliminação de detecção de duplicados.
max_det int 300 Limita o número máximo de detecções por imagem. Útil em cenas densas para evitar detecções excessivas e gerenciar recursos computacionais.
half bool True Ativa a computação de meia-precisão (FP16), reduzindo o uso de memória e potencialmente aumentando a velocidade com impacto mínimo na precisão.
device str None Especifica o dispositivo para validação (cpu, cuda:0, etc.). Quando None, seleciona automaticamente o melhor dispositivo disponível. Vários dispositivos CUDA podem ser especificados com separação por vírgulas.
dnn bool False Se True, usa o OpenCV Módulo DNN para inferência de modelo ONNX, oferecendo uma alternativa para PyTorch métodos de inferência.
plots bool False Quando definido como True, gera e salva gráficos de previsões versus verdade fundamental, 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 treinar. Útil para filtrar e focar apenas em certas classes durante a avaliação.
rect bool True Se True, usa inferência retangular para loteamento, reduzindo o preenchimento 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 na escolha do segmento de dados para avaliação de desempenho.
project str None Nome do diretório do projeto onde as saídas de validação são salvas. Ajuda a organizar os 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 logs e saídas de validação são armazenados.
verbose bool False Se True, exibe informações detalhadas durante o processo de validação, incluindo métricas por classe, progresso do lote e informações de depuração adicionais.
save_txt bool False Se True, salva os resultados da detecção em arquivos de texto, com um arquivo por imagem, útil para análise posterior, 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á habilitado, 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 mais altos podem acelerar o pré-processamento de dados, mas podem aumentar o uso da CPU. Definir como 0 usa o thread principal, o que pode ser mais estável em alguns ambientes.
augment bool False Ativa a aumentação em tempo de teste (TTA) durante a validação, potencialmente melhorando a precisão da detecção ao custo da velocidade de inferência, executando a inferência em versões transformadas da entrada.
agnostic_nms bool False Ativa a Supressão Não Máxima agnóstica à classe, que mescla caixas sobrepostas, independentemente de sua classe prevista. Útil para aplicações focadas em instâncias.
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 deteção binária ou quando as distinções de classe não são importantes.

Cada uma dessas configurações desempenha um papel vital no processo de validação, permitindo uma avaliação personalizável e eficiente dos modelos YOLO. Ajustar esses parâmetros de acordo com suas 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



Assista: Como Exportar Resultados da Validação do Modelo em CSV, JSON, SQL, Pandas DataFrame e Mais

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

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

Exemplo

from ultralytics import YOLO

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

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0

Exportar ConfusionMatrix

Você também pode salvar os resultados da ConfusionMatrix em diferentes formatos usando o código fornecido.

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Método Tipo de Retorno Descrição
summary() List[Dict[str, Any]] Converte os resultados da validação em um dicionário resumido.
to_df() DataFrame Retorna os resultados da validação como um DataFrame Pandas estruturado.
to_csv() str Exporta os resultados da validação em formato CSV e retorna a string CSV.
to_xml() str Exporta os resultados da validação em formato XML e retorna a string XML.
to_html() str Exporta os resultados da validação em formato de tabela HTML e retorna a string HTML.
to_json() str Exporta os resultados da validação em formato JSON e retorna a string JSON.
to_sql() str Exporta os resultados da validação no banco de dados SQl.

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

FAQ

Como valido o meu modelo YOLO11 com Ultralytics?

Para validar seu modelo YOLO11, você pode usar o modo Val fornecido pela Ultralytics. Por exemplo, usando a API Python, você pode carregar um modelo e executar a validação com:

from ultralytics import YOLO

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

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

Alternativamente, você pode usar a interface de linha de comando (CLI):

yolo val model=yolo11n.pt

Para maior personalização, você pode ajustar vários argumentos como imgsz, batch, e conf nos modos Python e CLI. Verifique a seção Argumentos para Validação do Modelo YOLO para a lista completa de parâmetros.

Que métricas posso obter da validação do modelo YOLO11?

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

  • mAP50 (Precisão Média Média no limite de IoU 0,5)
  • mAP75 (Precisão Média Média no limite de IoU 0,75)
  • mAP50-95 (precisão média média em vários limiares de IoU de 0,5 a 0,95)

Usando a API Python, você pode acessar essas 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

Para uma avaliação de desempenho completa, é crucial revisar todas essas métricas. Para mais detalhes, consulte os Principais Recursos do Modo Val.

Quais são as vantagens de usar o Ultralytics YOLO para validação?

Usar o Ultralytics YOLO para validação oferece diversas vantagens:

  • Precisão: YOLO11 oferece métricas de desempenho precisas, incluindo mAP50, mAP75 e mAP50-95.
  • Conveniência: Os modelos lembram suas configurações de treinamento, tornando a validação direta.
  • Flexibilidade: Você pode validar em relação aos mesmos ou diferentes conjuntos de dados e tamanhos de imagem.
  • Ajuste de Hiperparâmetros: As métricas de validação ajudam no ajuste fino de modelos para melhor desempenho.

Esses benefícios garantem que seus modelos sejam avaliados minuciosamente e possam ser otimizados para resultados superiores. Saiba mais sobre essas vantagens na seção Por que validar com Ultralytics YOLO.

Posso validar o meu modelo YOLO11 usando um conjunto de dados personalizado?

Sim, você pode validar seu modelo YOLO11 usando um conjunto de dados personalizado. Especifique o data argumento com o caminho para o seu arquivo de configuração do conjunto de dados. Este arquivo deve incluir caminhos para o dados de validação, nomes de classe e outros detalhes relevantes.

Exemplo em Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.pt data=path/to/your/custom_dataset.yaml

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

Como guardo os resultados da validação num ficheiro JSON no YOLO11?

Para salvar os resultados da validação em um arquivo JSON, você pode definir o save_json para True ao executar a validação. Isso pode ser feito tanto na API Python quanto na CLI.

Exemplo em Python:

from ultralytics import YOLO

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

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

Exemplo usando CLI:

yolo val model=yolo11n.pt save_json=True

Essa funcionalidade é particularmente útil para análise posterior ou integração com outras ferramentas. Consulte os Argumentos para Validação do Modelo YOLO para obter mais detalhes.



📅 Criado há 1 ano ✏️ Atualizado há 10 dias

Comentários