Validação de Modelos com 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
oumodel('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
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.