Salta para o conteúdo

Validação do modelo com Ultralytics YOLO

Ultralytics YOLO ecossistema e integrações

Introdução

A validação é um passo crítico no pipeline de aprendizagem automática, permitindo-te avaliar a qualidade dos teus modelos treinados. O modo Val em Ultralytics YOLOv8 fornece um conjunto robusto de ferramentas e métricas para avaliar o desempenho dos teus modelos de deteção de objectos. Este guia serve como um recurso completo para compreender como utilizar eficazmente o modo Val para garantir que os teus modelos são precisos e fiáveis.



Observa: Ultralytics Tutorial de modos: Validação

Porquê validar com Ultralytics YOLO ?

Eis por que razão é vantajoso utilizar o modo Val do YOLOv8:

  • 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 incorporadas que se lembram das 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: Utiliza métricas de validação para afinar o teu modelo e obter um melhor desempenho.

Principais características do modo Val

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

  • Configurações automatizadas: Os modelos recordam as suas configurações de treino para uma validação direta.
  • Suporte multi-métrico: Avalia o teu modelo com base numa série de métricas de precisão.
  • CLI e Python API: Escolhe entre a interface de linha de comandos ou a API Python com base na tua preferência de validação.
  • Compatibilidade de dados: Trabalha sem problemas com conjuntos de dados utilizados durante a fase de treino, bem como com conjuntos de dados personalizados.

Dica

  • YOLOv8 os modelos recordam automaticamente as 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=yolov8n.pt ou model('yolov8n.pt').val()

Exemplos de utilização

Valida a precisão do modelo YOLOv8n treinado no conjunto de dados COCO8. Não precisas de passar nenhum argumento, pois o model mantém a sua formação data e argumentos como atributos do modelo. Vê a secção Argumentos abaixo para obteres uma lista completa dos argumentos de exportação.

Exemplo

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.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=yolov8n.pt  # val official model
yolo detect val model=path/to/best.pt  # val custom model

Argumentos para YOLO Validação de modelos

Ao validar os modelos YOLO , vários argumentos podem ser ajustados para otimizar o processo de avaliação. Esses argumentos controlam aspectos como o tamanho da imagem de entrada, o processamento em lote e os limites de desempenho. Segue-se uma análise detalhada de cada argumento para te ajudar a personalizar as definições de validação de forma eficaz.

Argumenta Tipo Predefinição Descrição
data str None Especifica o caminho para o ficheiro de configuração do conjunto de dados (por exemplo, coco8.yaml). Este ficheiro inclui caminhos para os dados de validaçã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.
batch int 16 Define o número de imagens por lote. Usa -1 para o AutoBatch, que se ajusta automaticamente com base na disponibilidade de memória da GPU.
save_json bool False Se Trueguarda os resultados num ficheiro JSON para análise posterior ou integração com outras ferramentas.
save_hybrid bool False Se Trueguarda uma versão híbrida das etiquetas que combina anotações originais com previsões adicionais do modelo.
conf float 0.001 Define o limite mínimo de confiança para as detecções. As detecções com confiança inferior a este limiar são rejeitadas.
iou float 0.6 Define o limiar de Intersecção sobre União (IoU) para Supressão Não Máxima (NMS). Ajuda a reduzir as detecções duplicadas.
max_det int 300 Limita o número máximo de detecções por imagem. Útil em cenas densas para evitar detecções excessivas.
half bool True Permite o cálculo de meia-precisão (FP16), reduzindo a utilização de memória e aumentando potencialmente a velocidade com um impacto mínimo na precisão.
device str None Especifica o dispositivo para validação (cpu, cuda:0etc.). Permite flexibilidade na utilização de recursos de CPU ou GPU.
dnn bool False Se Trueutiliza o módulo OpenCV DNN para ONNX inferência de modelos, oferecendo uma alternativa aos métodos de inferência PyTorch .
plots bool False Quando definido para Truegera e guarda gráficos de previsões versus verdade terrestre para avaliação visual do desempenho do modelo.
rect bool False Se Trueutiliza a inferência retangular para a formação de lotes, reduzindo o preenchimento e aumentando potencialmente a velocidade e a eficiência.
split str val Determina a divisão do conjunto de dados a utilizar para a validação (val, test, ou train). Permite flexibilidade na escolha do segmento de dados para avaliação do desempenho.

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

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('yolov8n.pt')

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


Criado em 2023-11-12, Atualizado em 2024-04-18
Autores: glenn-jocher (9), Burhan-Q (1), RizwanMunawar (1)

Comentários