Ir para o conteúdo

Comet

YOLOv5 com Comet

Este guia abordará como usar o YOLOv5 com o Comet, uma ferramenta poderosa para rastrear, comparar e otimizar experimentos de aprendizado de máquina.

Sobre o Comet

Comet cria ferramentas que ajudam cientistas de dados, engenheiros e líderes de equipe a acelerar e otimizar modelos de machine learning e deep learning.

Rastreie e visualize as métricas do modelo em tempo real, salve seus hiperparâmetros, conjuntos de dados e checkpoints do modelo e visualize as previsões do seu modelo com Painéis Personalizados Comet! O Comet garante que você nunca perca o controle do seu trabalho e facilita o compartilhamento de resultados e a colaboração entre equipes de todos os tamanhos!

Começando

Instalar o Comet

pip install comet_ml

Configurar Credenciais do Comet

Existem duas maneiras de configurar o Comet com YOLOv5.

Você pode definir suas credenciais por meio de variáveis de ambiente:

Variáveis de Ambiente

export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

Ou crie um .comet.config ficheiro no seu diretório de trabalho e defina as suas credenciais lá:

Arquivo de Configuração do Comet

[comet]
api_key=YOUR_API_KEY
project_name=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'

Executar o Script de Treinamento

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

É isso aí! O Comet registrará automaticamente seus hiperparâmetros, argumentos de linha de comando e métricas de treinamento e validação. Você pode visualizar e analisar suas execuções na interface do usuário do Comet.

Interface do usuário do Comet com treinamento YOLOv5

Experimente um Exemplo!

Confira um exemplo de uma execução concluída aqui.

Ou melhor ainda, experimente você mesmo neste Colab Notebook:

Abrir no Colab

Log automaticamente

Por padrão, o Comet registrará os seguintes itens:

Métricas

  • Perda da Caixa, Perda do Objeto, Perda da Classificação para os dados de treinamento e validação
  • Métricas 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 de linha de comando

Visualizações

  • Matriz de Confusão das predições do modelo nos dados de validação
  • Gráficos para as curvas PR e F1 em todas as classes
  • Correlograma dos Rótulos de Classe

Configurar o Registo Comet

O Comet pode ser configurado para registrar dados adicionais através de flags de linha de comando passadas para o script de treinamento 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="yolov5"                   # 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=30                  # 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="last.pt" # 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

Logging de Checkpoints com Comet

O registo de Modelos no Comet está desativado por padrão. Para ativá-lo, passe o save-period argumento para o script de treinamento. Isso salvará os checkpoints registrados no Comet com base no valor de intervalo fornecido por save-period:

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

Registo de Previsões do Modelo

Por padrão, as previsões do modelo (imagens, rótulos de verdade fundamental e caixas delimitadoras) serão registradas no Comet.

Você pode controlar a frequência das predições registradas e as imagens associadas, passando o bbox_interval argumento de linha de comando. As previsões podem ser visualizadas usando o Detecção de Objetos Painel Personalizado. Esta frequência corresponde a cada enésimo lote de dados por época. No exemplo abaixo, estamos a registar cada 2º lote de dados para cada época.

Nota: O dataloader de validação YOLOv5 terá como padrão um tamanho de lote de 32, então você terá que definir a frequência de registro de acordo.

Aqui está um projeto de exemplo usando o Panel

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

Controlando o número de imagens de previsão registradas no Comet

Ao registrar as predições do YOLOv5, o Comet registrará as imagens associadas a cada conjunto de predições. Por padrão, um máximo de 100 imagens de validação são registradas. Você pode aumentar ou diminuir este número usando 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

Logging de Métricas de Nível de Classe

Use o comando COMET_LOG_PER_CLASS_METRICS variável de ambiente para registrar mAP, precisão, recall, 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

Enviando um Conjunto de Dados para Artefatos do Comet

Se você gostaria de armazenar seus dados usando Artefatos Comet, você pode fazê-lo usando o upload_dataset flag.

O dataset deve ser organizado conforme descrito em Documentação do YOLOv5. A configuração do conjunto de dados yaml ficheiro deve seguir o mesmo formato do coco128.yaml ficheiro.

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

Você pode encontrar o conjunto de dados carregado na guia Artifacts em seu Comet Workspace:

Aba de Artefatos do Comet

Você pode visualizar os dados diretamente na interface do usuário do Comet:

Visualização de Dados do Comet

Os artefatos são versionados e também suportam a adição de metadados sobre o conjunto de dados. O Comet registrará automaticamente os metadados do seu conjunto de dados yaml arquivo:

Metadados de Artefatos do Comet

Usando um Artefato salvo

Se você deseja usar um conjunto de dados do Comet Artifacts, defina o path variável no seu conjunto de dados yaml arquivo para apontar para o seguinte URL de recurso de Artefato:

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME>/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

Em seguida, passe este arquivo para o seu script de treinamento da seguinte forma:

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

Os artefatos também permitem rastrear a linhagem dos dados à medida que eles fluem através do seu fluxo de trabalho de experimentação. Aqui você pode ver um gráfico que mostra todos os experimentos que usaram seu conjunto de dados carregado:

Gráfico de Linhagem de Artefatos Comet

Retomando uma Execução de Treinamento

Se sua execução de treinamento for interrompida por qualquer motivo, por exemplo, interrupção da conexão com a internet, você pode retomar a execução usando o resume flag e o Caminho de Execução do Comet.

O caminho de execução tem o seguinte formato comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Isso restaurará a execução ao seu estado anterior à interrupção, o que inclui restaurar o modelo a partir de um checkpoint, restaurar todos os hiperparâmetros e argumentos de treinamento e baixar os artefatos do conjunto de dados Comet, se eles foram usados na execução original. A execução retomada continuará registrando no Experimento existente na interface do usuário do Comet:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Pesquisa de Hiperparâmetros com o Otimizador Comet

O YOLOv5 também é integrado com o Optimizer da Comet, tornando simples a visualização de varreduras de hiperparâmetros na interface do usuário da Comet.

Configurando um Sweep do Otimizador

Para configurar o Comet Optimizer, você terá que criar um arquivo JSON com as informações sobre o sweep. Um arquivo 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 script aceita os mesmos argumentos que train.py. Se você deseja passar argumentos adicionais para sua varredura, basta adicioná-los após o script:

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

Visualização de Resultados

O Comet oferece várias maneiras de visualizar os resultados da sua varredura (sweep). Dê uma olhada em um projeto com uma varredura concluída aqui.

Visualização de Hiperparâmetros do Comet



📅 Criado há 1 ano ✏️ Atualizado há 1 mês

Comentários