YOLO Vision 2026:

Logótipo do Comet ML para acompanhamento de experiências de machine learning

YOLOv5 com Comet#

Este guia explica como utilizar o YOLOv5 com o Comet, uma ferramenta avançada para acompanhar, comparar e otimizar experiências de machine learning.

Sobre o Comet#

O Comet cria ferramentas que ajudam cientistas de dados, engenheiros e líderes de equipas a acelerar e otimizar modelos de machine learning e deep learning.

Acompanha e visualiza as métricas do modelo em tempo real, guarda os teus hiperparâmetros, conjuntos de dados e checkpoints do modelo, e visualiza as previsões do teu modelo com os Comet Custom Panels! O Comet garante que nunca perdes o controlo do teu trabalho e facilita a partilha de resultados e a colaboração entre equipas de qualquer dimensão!

Introdução#

Instalar o Comet#

pip install comet_ml

Configurar as credenciais do Comet#

Existem duas formas de configurar o Comet com o YOLOv5.

Podes definir as tuas 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 ficheiro .comet.config no teu diretório de trabalho e definir aí as tuas credenciais:

Ficheiro de configuração do Comet

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

Executar 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

É tudo! O Comet registará automaticamente os teus hiperparâmetros, argumentos da linha de comandos e métricas de treino e validação. Podes visualizar e analisar as tuas execuções na interface do Comet.

Painel do Comet a mostrar métricas de treino do YOLOv5 e acompanhamento da experiência

Experimenta um exemplo!#

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

Ou, melhor ainda, experimenta tu mesmo neste Notebook do Colab:

Abrir no Colab

Registar automaticamente#

Por predefinição, o Comet registará os seguintes itens:

Métricas#

  • Box Loss, Object Loss e Classification Loss para os dados de validação
  • Métricas mAP_0.5 e 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 transmitidos através das opções da linha de comandos

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 das etiquetas das classes

Configurar o registo do Comet#

O Comet pode ser configurado para registar dados adicionais através de sinalizadores da linha de comandos transmitidos ao 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

Registar checkpoints com o Comet#

O registo de modelos no Comet está desativado por predefinição. Para o ativar, transmite o argumento save-period ao script de treino. Isto guardará os checkpoints registados no 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

Registar previsões do modelo#

Por predefinição, as previsões do modelo (imagens, etiquetas de verdade fundamental e caixas delimitadoras) serão registadas no Comet.

Podes controlar a frequência das previsões registadas e das imagens associadas transmitindo o argumento da linha de comandos bbox_interval. As previsões podem ser visualizadas utilizando o Object Detection Custom Panel do Comet. Esta frequência corresponde a cada N.º lote de dados por época. No exemplo abaixo, registamos cada 2.º lote de dados de cada época.

Nota: O dataloader de validação do YOLOv5 utiliza por predefinição um tamanho do lote de 32, pelo que terás de definir a frequência de registo em conformidade.

Aqui tens um projeto de exemplo que utiliza o Panel

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ões registadas no Comet#

Ao registar previsões do YOLOv5, o Comet registará as imagens associadas a cada conjunto de previsões. Por predefinição, são registadas no máximo 100 imagens de validação. Podes aumentar ou diminuir este número utilizando 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

Registar métricas ao nível da classe#

Utiliza a variável de ambiente COMET_LOG_PER_CLASS_METRICS para registar mAP, precisão, recall 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

Carregar um conjunto de dados para os Comet Artifacts#

Se quiseres armazenar os teus dados utilizando os Comet Artifacts, podes fazê-lo utilizando o sinalizador upload_dataset.

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

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 Artifacts do teu Workspace do Comet:

Painel de artifacts do Comet para controlo de versões de conjuntos de dados

Podes pré-visualizar os dados diretamente na interface do Comet:

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

Os Artifacts têm controlo de versões e também permitem adicionar metadados sobre o conjunto de dados. O Comet registará automaticamente os metadados do ficheiro yaml do teu conjunto de dados:

Metadados do Comet Artifact

Utilizar um Artifact guardado#

Se quiseres utilizar um conjunto de dados dos Comet Artifacts, define a variável path no ficheiro yaml do teu 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, transmite este ficheiro ao teu script de treino da seguinte forma:

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

Os Artifacts também permitem acompanhar a linhagem dos dados à medida que estes percorrem o teu fluxo de trabalho de experimentação. Aqui podes ver um gráfico que mostra todas as experiências que utilizaram o teu conjunto de dados carregado:

Gráfico de linhagem do Comet Artifact

Retomar uma execução de treino#

Se a tua execução de treino for interrompida por qualquer motivo, por exemplo, devido a uma ligação à Internet instável, podes retomar a execução utilizando o sinalizador resume e o Comet Run Path.

O Run Path tem o seguinte formato comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

Isto restaurará a execução ao estado anterior à interrupção, incluindo a restauração do modelo a partir de um checkpoint, de todos os hiperparâmetros e argumentos de treino, e a transferência dos Comet dataset Artifacts, caso tenham sido utilizados na execução original. A execução retomada continuará a registar dados na Experiment existente na interface do Comet:

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

Pesquisa de hiperparâmetros com o Comet Optimizer#

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

Configurar um varrimento do Optimizer#

Para configurar o Comet Optimizer, terás de criar um ficheiro JSON com as informações sobre o varrimento. 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 script hpo.py aceita os mesmos argumentos que train.py. Se quiseres transmitir argumentos adicionais ao teu varrimento, 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 disponibiliza várias formas de visualizar os resultados do teu varrimento. Consulta aqui um projeto com um varrimento concluído.

Visualização de hiperparâmetros do Comet

Comentários