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 do 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 dos recursos 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

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):

yolo val model=yolov8n.pt

Para uma maior personaliza√ß√£o, podes ajustar v√°rios argumentos como imgsz, batche 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:

yolo val model=yolov8n.pt data=path/to/your/custom_dataset.yaml

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:

yolo val model=yolov8n.pt save_json=True

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)

Coment√°rios