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
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
Experimente um exemplo!
Veja um exemplo de uma execução concluída aqui
Ou melhor ainda, experimente-o você mesmo neste caderno 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
Pode pré-visualizar os dados diretamente na IU de 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
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
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.
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
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