Validação do modelo com Ultralytics YOLO
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
oumodel('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
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 True guarda os resultados num ficheiro JSON para análise posterior ou integração com outras ferramentas. |
save_hybrid |
bool |
False |
Se True guarda 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:0 etc.). Permite flexibilidade na utilização de recursos de CPU ou GPU. |
dnn |
bool |
False |
Se True utiliza 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 True gera e guarda gráficos de previsões versus verdade terrestre para avaliação visual do desempenho do modelo. |
rect |
bool |
False |
Se True utiliza 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
Criado em 2023-11-12, Atualizado em 2024-04-18
Autores: glenn-jocher (9), Burhan-Q (1), RizwanMunawar (1)