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
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
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 .
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 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:
Pode pré-visualizar os dados diretamente na IU 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 seu 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://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 :
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.