Salta para o conteúdo

Comet

YOLOv5 com Comet

Este guia aborda a forma de utilizar YOLOv5 com Comet

Sobre Comet

Comet cria ferramentas que ajudam os cientistas de dados, engenheiros e líderes de equipa a acelerar e otimizar a aprendizagem automática e os modelos de aprendizagem profunda.

Acompanha e visualiza as métricas do modelo em tempo real, guarda os teus hiperparâmetros, conjuntos de dados e pontos de verificação do modelo e visualiza as previsões do teu modelo com Comet Custom Panels! Comet garante que nunca perdes o controlo do teu trabalho e facilita a partilha de resultados e a colaboração entre equipas de todas as dimensões!

Começar a trabalhar

Instala Comet

pip install comet_ml

Configura as credenciais de Comet

Existem duas formas de configurar Comet com YOLOv5.

Podes definir as tuas credenciais através de variáveis de ambiente

Variáveis de ambiente

export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'

Ou cria um .comet.config no teu diretório de trabalho e define aí as tuas credenciais.

Comet Ficheiro de configuração

[comet]
api_key=<Your Comet API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'

Executa o Script de Treino

# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

É isso! Comet registará automaticamente os teus hiperparâmetros, argumentos da linha de comandos, métricas de treino e validação. Podes visualizar e analisar as tuas execuções na interface de utilizador Comet

yolo-ui

Experimenta um exemplo!

Vê um exemplo de uma execução concluída aqui

Ou melhor ainda, experimenta tu mesmo neste caderno Colab

Abre em Colab

Regista automaticamente

Por predefinição, Comet regista os seguintes itens

Métricas

  • Perda de caixa, perda de objeto, perda de classificação para os dados de treino e validação
  • mAP_0.5, mAP_0.5:0.95 para os dados de validação.
  • Precisão e Recall para os dados de validação

Parâmetros

  • Hiperparâmetros do modelo
  • Todos os parâmetros passados através das opções da linha de comando

Visualizações

  • Matriz de confusão das previsões do modelo nos dados de validação
  • Gráficos para as curvas PR e F1 em todas as classes
  • Correlograma das etiquetas das classes

Configura o registo Comet

Comet pode ser configurado para registar dados adicionais através de sinalizadores de linha de comandos passados para o script de treino ou através de variáveis de ambiente.

export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME=<your model name> #Set the name for the saved model. Defaults to yolov5
export COMET_LOG_CONFUSION_MATRIX=false # Set to disable logging a Comet Confusion Matrix. Defaults to true
export COMET_MAX_IMAGE_UPLOADS=<number of allowed images to upload to Comet> # Controls how many total image predictions to log to Comet. Defaults to 100.
export COMET_LOG_PER_CLASS_METRICS=true # Set to log evaluation metrics for each detected class at the end of training. Defaults to false
export COMET_DEFAULT_CHECKPOINT_FILENAME=<your checkpoint filename> # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt'
export COMET_LOG_BATCH_LEVEL_METRICS=true # Set this if you would like to log training metrics at the batch level. Defaults to false.
export COMET_LOG_PREDICTIONS=true # Set this to false to disable logging model predictions

Registo de pontos de controlo com Comet

O registo de modelos em Comet está desativado por predefinição. Para o ativar, passa o parâmetro save-period para o script de treino. Guarda os pontos de controlo registados em Comet com base no valor do intervalo fornecido por save-period

python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1

Previsões do modelo de registo

Por predefinição, as previsões do modelo (imagens, etiquetas de verdade terrestre e caixas delimitadoras) serão registadas em Comet.

Podes controlar a frequência das previsões registadas e as imagens associadas, passando o parâmetro bbox_interval argumento da linha de comando. As previsões podem ser visualizadas utilizando o painel personalizado de deteção de objectos do Comet. Esta frequência corresponde a cada Nth lote de dados por época. No exemplo abaixo, estamos a registar cada 2º lote de dados para cada época.

Nota: O carregador de dados de validação YOLOv5 terá como predefinição um tamanho de lote de 32, pelo que terás de definir a frequência de registo em conformidade.

Segue-se um exemplo de projeto que utiliza o Painel

python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2

Controlar o número de imagens de previsão registadas Comet

Ao registar previsões de YOLOv5, Comet registará as imagens associadas a cada conjunto de previsões. Por predefinição, é registado um máximo de 100 imagens de validação. Podes aumentar ou diminuir este número utilizando a opção COMET_MAX_IMAGE_UPLOADS variável de ambiente.

env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1

Registo de métricas de nível de classe

Utiliza o COMET_LOG_PER_CLASS_METRICS variável de ambiente para registar o mAP, a precisão, a recuperação e o f1 para cada classe.

env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt

Carregamento de um conjunto de dados para Comet Artifacts

Se quiseres armazenar os teus dados utilizando Comet Artefactos, podes fazê-lo utilizando o upload_dataset bandeira.

O conjunto de dados deve ser organizado da forma descrita no YOLOv5 documentação. Configura o conjunto de dados yaml deve seguir o mesmo formato que o do ficheiro coco128.yaml arquiva.

python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset

Podes encontrar o conjunto de dados carregado no separador Artefactos no teu Comet Workspace artefacto-1

Podes pré-visualizar os dados diretamente na IU de Comet . artefacto-2

Os artefactos são versionados e também suportam a adição de metadados sobre o conjunto de dados. Comet registará automaticamente os metadados do teu conjunto de dados yaml ficheiro artefacto-3

Utilizar um artefacto guardado

Se pretenderes utilizar um conjunto de dados de Comet Artifacts, define o path no teu conjunto de dados yaml para apontar para o seguinte URL do recurso Artefacto.

# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"

Depois, passa este ficheiro para o teu script de treino da seguinte forma

python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.pt

Os artefactos também te permitem seguir a linhagem dos dados à medida que estes fluem através do teu fluxo de trabalho de Experimentação. Aqui podes ver um gráfico que te mostra todas as experiências que utilizaram o teu conjunto de dados carregado. artefacto-4

Retomar uma corrida de treino

Se a tua sessão de treino for interrompida por qualquer motivo, por exemplo, uma interrupção da ligação à Internet, podes retomar a sessão utilizando a resume e o Comet Run Path.

O Caminho de execução tem o seguinte formato comet://<your workspace name>/<your project name>/<experiment id>.

Isso restaurará a execução para o estado anterior à interrupção, o que inclui a restauração do modelo a partir de um ponto de verificação, a restauração de todos os hiperparâmetros e argumentos de treinamento e o download de artefatos do conjunto de dados Comet se eles tiverem sido usados na execução original. A execução retomada continuará registrando a experiência existente na interface do usuário Comet

python train.py \
--resume "comet://<your run path>"

Pesquisa de hiperparâmetros com o optimizador Comet

YOLOv5 também está integrado com o Optimizer do Comet, tornando simples a visualização de varreduras de hiperparâmetros na UI do Comet .

Configuração de uma varredura do optimizador

Para configurar o Comet Optimizer, terás de criar um ficheiro JSON com as informações sobre a varredura. Um ficheiro de exemplo foi fornecido em utils/loggers/comet/optimizer_config.json

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json"

O hpo.py aceita os mesmos argumentos que o script train.py. Se quiseres passar argumentos adicionais ao teu sweep, basta adicioná-los depois do script.

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
  --save-period 1 \
  --bbox_interval 1

Executar uma varredura em paralelo

comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json"

Visualização de resultados

Comet fornece uma série de formas de visualizar os resultados da tua varredura. Vê um projeto com uma varredura concluída aqui

hiperparâmetro-yolo



Criado em 2023-11-12, Atualizado em 2024-01-07
Autores: glenn-jocher (3), RizwanMunawar (1)

Comentários