YOLOv5 com Comet
Este guia aborda a forma de utilizar YOLOv5 com Comet
Sobre Comet
Comet builds tools that help data scientists, engineers, and team leaders accelerate and optimize machine learning and deep learning models.
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
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
Experimenta um exemplo!
Vê um exemplo de uma execução concluída aqui
Ou melhor ainda, experimenta tu mesmo neste caderno Colab
Regista automaticamente
Por predefinição, Comet regista os seguintes itens
Métricas
- Box Loss, Object Loss, Classification Loss for the training and validation data
- 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
- Confusion Matrix of the model predictions on the validation data
- 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
command line argument. Predictions can be visualized using Comet's Deteção de objectos Custom Panel. This frequency corresponds to every Nth batch of data per epoch. In the example below, we are logging every 2nd batch of data for each epoch.
Note: The YOLOv5 validation dataloader will default to a batch size of 32, so you will have to set the logging frequency accordingly.
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
environment variable to log mAP, precision, recall, f1 for each class.
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
Podes 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 teu conjunto de dados yaml
ficheiro
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
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.
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
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