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 do 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 dos recursos 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
FAQ
Como posso validar o meu modelo YOLOv8 com Ultralytics?
Para validar o modelo YOLOv8 , é possível usar o modo Val fornecido por 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("yolov8n.pt")
# Validate the model
metrics = model.val()
print(metrics.box.map) # map50-95
Em alternativa, podes utilizar a interface de linha de comandos (CLI):
Para uma maior personalização, podes ajustar vários argumentos como imgsz
, batch
e conf
nos modos Python e CLI . Verifica o Argumentos para YOLO Validação de modelos para veres a lista completa de parâmetros.
Que métricas posso obter da validação do modelo YOLOv8 ?
YOLOv8 A validação do modelo fornece vários indicadores-chave para avaliar o desempenho do modelo. Estas incluem:
- mAP50 (precisão média no limiar 0,5 da IoU)
- mAP75 (precisão média média no limiar 0,75 da IoU)
- mAP50-95 (precisão média média em vários limiares de IoU de 0,5 a 0,95)
Utilizando 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
Para uma avaliação completa do desempenho, é crucial rever todas estas métricas. Para obter mais detalhes, consulta as Principais características do modo Val.
Quais são as vantagens de utilizar Ultralytics YOLO para validação?
A utilização de Ultralytics YOLO para validação oferece várias vantagens:
- Precisão: YOLOv8 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 com os mesmos ou diferentes conjuntos de dados e tamanhos de imagem.
- Afinação de hiperparâmetros: As métricas de validação ajudam a afinar os modelos para um melhor desempenho.
Estes benefícios asseguram que os teus modelos são avaliados minuciosamente e podem ser optimizados para resultados superiores. Sabe mais sobre estas vantagens na secção Porquê Validar com Ultralytics YOLO .
Posso validar o meu modelo YOLOv8 utilizando um conjunto de dados personalizado?
Sim, podes validar o teu modelo YOLOv8 utilizando um conjunto de dados personalizado. Especifica o data
com o caminho para o teu ficheiro de configuração do conjunto de dados. Este ficheiro deve incluir caminhos para os dados de validação, nomes de classes e outros detalhes relevantes.
Exemplo em Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt")
# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map) # map50-95
Exemplo de utilização de CLI:
Para mais opções personalizáveis durante a validação, vê a secção Exemplo de validação com argumentos.
Como é que guardo os resultados da validação num ficheiro JSON em YOLOv8?
Para gravar os resultados da validação num ficheiro JSON, podes definir o parâmetro save_json
argumento para True
quando executas a validação. Isto pode ser feito tanto na API Python como em CLI.
Exemplo em Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)
Exemplo de utilização de CLI:
Esta funcionalidade é particularmente útil para análise posterior ou integração com outras ferramentas. Verifica os Argumentos para a validação do modelo YOLO para mais detalhes.
Criado em 2023-11-12, Atualizado em 2024-07-04
Autores: glenn-jocher (14), Burhan-Q (1), RizwanMunawar (1)