Saltar para o conteúdo

Comet

YOLOv5 com Comet

Este guia abordará a forma de utilizar YOLOv5 com o Cometuma ferramenta poderosa para acompanhar, comparar e otimizar experiências de aprendizagem automática.

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.

Acompanhe e visualize as métricas do modelo em tempo real, guarde os seus hiperparâmetros, conjuntos de dados e pontos de controlo do modelo e visualize as previsões do modelo com os painéis personalizadosComet et! Comet garante que nunca perde o controlo do seu trabalho e facilita a partilha de resultados e a colaboração entre equipas de todas as dimensões!

Começar a trabalhar

Instalar Comet

pip install comet_ml

Configurar Comet Credenciais

Há duas maneiras de configurar Comet com YOLOv5.

Pode definir as suas credenciais através 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 criar um .comet.config no seu diretório de trabalho e defina aí as suas credenciais:

Comet Ficheiro de configuração

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

Executar o guião de formação

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

É isso mesmo! Comet registará automaticamente os seus hiperparâmetros, argumentos da linha de comandos, métricas de formação e validação. Pode visualizar e analisar as suas execuções na IU Comet .

Comet UI com formação YOLOv5

Experimente um exemplo!

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

Ou melhor ainda, experimente-o você mesmo neste caderno Colab:

Abrir em Colab

Registar 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 formação e validação
  • métricas mAP_0.5, mAP_0.5:0.95 para os dados de validação
  • Precisão e recuperação 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

Configurar 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="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

Registo de pontos de controlo com Comet

O registo de modelos em Comet está desativado por predefinição. Para o ativar, passe o parâmetro save-period para o script de treino. Isto irá guardar 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.

Pode 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 usando Comet's Deteção de objectos Painel personalizado. 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á de definir a frequência de registo em conformidade.

Eis 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 as 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. Pode 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

Utilizar 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 pretender armazenar os seus dados utilizando Comet Artefactospode fazê-lo utilizando o upload_dataset bandeira.

O conjunto de dados deve ser organizado conforme descrito no YOLOv5 documentação. A configuração do conjunto de dados yaml deve seguir o mesmo formato que o do ficheiro coco128.yaml ficheiro.

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

Pode encontrar o conjunto de dados carregado no separador Artifacts (Artefactos) no seu Comet Workspace:

Tabulação de artefactos Comet

Pode pré-visualizar os dados diretamente na IU Comet :

Pré-visualização dos dados Comet

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 seu conjunto de dados yaml ficheiro:

Metadados do artefacto Comet

Utilizar um artefacto guardado

Se pretender utilizar um conjunto de dados de Comet Artifacts, defina o path variável no seu 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"

Em seguida, passe este ficheiro para o seu script de formação da seguinte forma:

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

Os artefactos também lhe permitem seguir a linhagem dos dados à medida que estes fluem através do seu fluxo de trabalho de experimentação. Aqui pode ver um gráfico que mostra todas as experiências que utilizaram o seu conjunto de dados carregado:

Gráfico de linhagem de artefactos de Comet

Retomar uma corrida de treino

Se a corrida de treino for interrompida por qualquer motivo, por exemplo, uma interrupção da ligação à Internet, pode retomar a corrida utilizando a função resume e o sítio Comet Run Path.

O Caminho de execução tem o seguinte formato comet://WORKSPACE_NAME/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 , caso tenham sido usados na execução original. A execução retomada continuará a registar a experiência existente na IU Comet :

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

Pesquisa de hiperparâmetros com o optimizador Comet

YOLOv5 também está integrado no Optimizador doComet, tornando simples a visualização de varrimentos de hiperparâmetros na IU Comet .

Configuração de uma varredura do optimizador

Para configurar o Comet Optimizer, terá de criar um ficheiro JSON com as informações sobre a varredura. Foi fornecido um ficheiro de exemplo 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 desejar passar argumentos adicionais para o seu 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

Visualização de resultados

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

Visualização do hiperparâmetro do Comet

📅C riado há 1 ano ✏️ Atualizado há 8 dias

Comentários