Saltar para o conteúdo

Comet

YOLOv5 com Comet

Este guia explica como 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 os modelos de aprendizagem automática e 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 Comet Custom Panels! 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 Comet 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 Comet 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! Comet registará automaticamente os seus hiperparâmetros, argumentos da linha de comandos, métricas de treino e validação. Pode visualizar e analisar as suas execuções na interface de utilizador Comet

yolo-ui

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 registará os seguintes itens

Métricas

  • Perda de caixa, perda de objeto, perda de classificação para os dados de formação e validação
  • 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=<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, 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, precisão, recolha, 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 da forma descrita 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 Artefactos no seu espaço de trabalho Comet artefacto-1

Pode 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 seu conjunto de dados yaml ficheiro artefacto-3

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 conjunto de dados carregado. artefacto-4

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://<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á a registar a experiência existente na interface do utilizador Comet

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

Pesquisa de hiperparâmetros com o optimizador Comet

YOLOv5 também está integrado com o Optimizador de Comet, tornando simples a visualização de varreduras de hiperparâmetros na IU de 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 a 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

Execução de 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 sua varredura. Veja um projeto com uma varredura concluída aqui

hiperparâmetro-yolo

📅C riado há 1 ano ✏️ Atualizado há 2 meses

Comentários