Ultralytics YOLO27:
Get Started

Logotipo do Comet ML para acompanhamento de experimentos de aprendizado de máquina

YOLOv5 com Comet#

Este guia explica como usar o YOLOv5 com o Comet, uma ferramenta avançada para acompanhar, comparar e otimizar experimentos de aprendizado de máquina.

Sobre o Comet#

O Comet cria ferramentas que ajudam cientistas de dados, engenheiros e líderes de equipe a acelerar e otimizar modelos de aprendizado de máquina e aprendizado profundo.

Acompanhe e visualize métricas do modelo em tempo real, salve seus hiperparâmetros, conjuntos de dados e checkpoints do modelo e visualize as previsões do modelo com os painéis personalizados do Comet! O Comet garante que você nunca perca o controle do seu trabalho e facilita o compartilhamento de resultados e a colaboração entre equipes de todos os tamanhos!

Primeiros passos#

Instale o Comet#

pip install comet_ml

Configure as credenciais do Comet#

Há duas maneiras de configurar o Comet com o YOLOv5.

Você pode definir suas credenciais usando 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 crie um arquivo .comet.config no diretório de trabalho e defina suas credenciais nele:

Arquivo de configuração do Comet

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

Execute o script de treinamento#

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

Pronto! O Comet registrará automaticamente seus hiperparâmetros, argumentos da linha de comando e métricas de treinamento e validação. Você pode visualizar e analisar suas execuções na interface do Comet.

Painel do Comet com métricas de treinamento do YOLOv5 e acompanhamento de experimentos

Experimente um exemplo!#

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

Ou, melhor ainda, experimente você mesmo neste notebook do Colab:

Abrir no Colab

Registro automático#

Por padrão, o Comet registra os seguintes itens:

Métricas#

  • Perda de caixa, perda de objeto e perda de classificação para os dados de validação e de treinamento
  • Métricas mAP_0.5 e mAP_0.5:0.95 para os dados de validação
  • Precisão e revocação para os dados de validação

Parâmetros#

  • Hiperparâmetros do modelo
  • Todos os parâmetros passados pelas opções da linha de comando

Visualizações#

  • Matriz de confusão das previsões do modelo nos dados de validação
  • Gráficos das curvas PR e F1 para todas as classes
  • Correlograma dos rótulos das classes

Configure o registro do Comet#

O Comet pode ser configurado para registrar dados adicionais por meio de flags da linha de comando passadas ao script de treinamento ou 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_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

Registro de checkpoints com o Comet#

O registro de modelos no Comet está desativado por padrão. Para ativá-lo, passe o argumento save-period ao script de treinamento. Isso salvará os checkpoints registrados no Comet de acordo com o intervalo definido por save-period:

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

Registro das previsões do modelo#

Por padrão, as previsões do modelo (imagens, rótulos de referência e caixas delimitadoras) são registradas no Comet.

Você pode controlar a frequência do registro das previsões e das imagens associadas passando o argumento de linha de comando bbox_interval. As previsões podem ser visualizadas usando o painel personalizado Detecção de objetos do Comet. Essa frequência corresponde a cada Nº lote de dados por época. No exemplo abaixo, registramos a cada 2º lote de dados de cada época.

Observação: O carregador de dados de validação do YOLOv5 usa o dobro do tamanho do lote de treinamento (32 para --batch 16), portanto você precisará definir a frequência de registro de acordo.

Aqui está um projeto de exemplo que usa o painel

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

Controle do número de imagens de previsões registradas no Comet#

Ao registrar previsões do YOLOv5, o Comet também registra as imagens associadas a cada conjunto de previsões. Por padrão, são registradas no máximo 100 imagens de validação. Você pode aumentar ou diminuir esse número usando a variável de ambiente COMET_MAX_IMAGE_UPLOADS:

env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --bbox_interval 1

Registro de métricas por classe#

Use a variável de ambiente COMET_LOG_PER_CLASS_METRICS para registrar mAP, precisão, revocação e 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

Envio de um conjunto de dados para os artefatos do Comet#

Se quiser armazenar seus dados usando os artefatos do Comet, você pode fazer isso usando a flag upload_dataset.

O conjunto de dados deve ser organizado conforme descrito na documentação do YOLOv5. O arquivo de configuração do conjunto de dados yaml deve seguir o mesmo formato do arquivo coco128.yaml.

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

Você encontra o conjunto de dados enviado na aba Artifacts do seu espaço de trabalho no Comet:

Painel de artefatos do Comet para versionamento de conjuntos de dados

Você pode visualizar os dados diretamente na interface do Comet:

Pré-visualização do conjunto de dados e histórico de versões do Comet

Os artefatos têm controle de versão e também permitem adicionar metadados sobre o conjunto de dados. O Comet registra automaticamente os metadados do arquivo yaml do seu conjunto de dados:

Metadados de artefato do Comet

Usar um artefato salvo#

Se quiser usar um conjunto de dados dos artefatos do Comet, defina a variável path no arquivo yaml do conjunto de dados para apontar para o seguinte URL do recurso Artifact:

# Contents of artifact.yaml file
path: "comet://WORKSPACE_NAME/ARTIFACT_NAME:ARTIFACT_VERSION_OR_ALIAS"

Em seguida, passe esse arquivo para o script de treinamento da seguinte forma:

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

Os artefatos também permitem acompanhar a linhagem dos dados à medida que eles percorrem seu fluxo de trabalho de experimentação. Aqui você pode ver um gráfico que mostra todos os experimentos que usaram o conjunto de dados enviado:

Gráfico de linhagem de artefatos do Comet

Retomar uma execução de treinamento#

Se a tua execução de treinamento for interrompida por qualquer motivo, por exemplo, devido a uma conexão de internet instável, podes retomá-la usando a flag resume e o caminho da execução do Comet.

O caminho da execução tem o seguinte formato: comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Isso restaurará a execução ao estado em que estava antes da interrupção, incluindo a restauração do modelo a partir de um checkpoint, de todos os hiperparâmetros e argumentos de treinamento, além do download dos artefatos de conjunto de dados do Comet, caso tenham sido usados na execução original. A execução retomada continuará registrando dados no experimento existente na interface do Comet:

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

Busca de hiperparâmetros com o otimizador do Comet#

O YOLOv5 também está integrado ao otimizador do Comet, facilitando a visualização de varreduras de hiperparâmetros na interface do Comet.

Configurar uma varredura do otimizador#

Para configurar o otimizador do Comet, precisas criar um arquivo JSON com as informações da varredura. Um arquivo de exemplo está disponível em utils/loggers/comet/optimizer_config.json:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json"

O script hpo.py aceita os mesmos argumentos que train.py. Se quiseres passar argumentos adicionais para a tua varredura, 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

Visualizar resultados#

O Comet oferece várias maneiras de visualizar os resultados da tua varredura. Dá uma olhada neste projeto com uma varredura concluída.

Visualização de hiperparâmetros do Comet

Perguntas frequentes#

  • Cria uma conta gratuita em comet.com, abre as configurações da tua conta e copia a chave de API. Exporta-a como COMET_API_KEY ou guarda-a num arquivo .comet.config ao lado de train.py.

  • Sim. Define COMET_MODE=offline para gravar o experimento num arquivo local e, depois, envia-o com comet upload path/to/archive.zip.

  • O registro de checkpoints está desativado por padrão. Passa --save-period 1 (ou outro intervalo) para train.py e cada checkpoint salvo será enviado ao experimento.

  • Copia o caminho da execução na interface do Comet e inicia o treinamento com python train.py --resume "comet://WORKSPACE/PROJECT/EXPERIMENT_ID". O YOLOv5 restaura o checkpoint, os hiperparâmetros e qualquer artefato de conjunto de dados do Comet, e continua registrando dados no mesmo experimento.

Comentários