Como usar Ultralytics YOLOv5 com a Comet
Descubra como a Ultralytics trabalha com a Comet para otimizar modelos Ultralytics YOLOv5: rastreamento em tempo real, colaboração simplificada e maior reprodutibilidade.
Nuvola Ladi6 min de leitura
Na Ultralytics, estabelecemos parcerias comerciais com outras startups para ajudar a financiar a pesquisa e o desenvolvimento de nossas ferramentas de código aberto, como o YOLOv5, e mantê-las gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.
Nosso mais novo parceiro, Comet, desenvolve 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.
Comet é uma ferramenta poderosa para acompanhar seus modelos, conjuntos de dados e métricas. Ela também registra as variáveis do sistema e do ambiente para garantir a reprodutibilidade e facilitar a depuração de cada execução. 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 seu modelo com os painéis personalizados do Comet!
Além disso, 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!
YOLOv5 é um excelente ponto de partida para sua jornada em visão computacional. Para melhorar o desempenho do seu modelo e deixá-lo pronto para produção, você precisará registrar os resultados em uma ferramenta de acompanhamento de experimentos, como Comet.
A integração do Comet com YOLOv5 oferece 3 recursos principais:
- Recursos de registro automático e personalizado
- Salvar conjuntos de dados e modelos como artefatos para depuração e reprodutibilidade
- Organizar sua visualização com os painéis personalizados do Comet
Este guia aborda como usar YOLOv5 com Comet.
Então, pronto para acompanhar seus experimentos em tempo real? Vamos começar!
Introdução#
1. Instale Comet#
pip install comet_ml2. Configure as credenciais do Comet#
Há duas maneiras de configurar o Comet com YOLOv5.
Você pode definir suas credenciais por meio de variáveis de ambiente ou criar um arquivo .comet.config no diretório de trabalho e defini-las nele.
Variáveis de ambiente#
export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'Arquivo de configuração do Comet#
[comet]
api_key=<Your API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'3. 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É só isso!
Comet registrará automaticamente seus hiperparâmetros, argumentos de linha de comando, métricas de treinamento e validação. Você pode visualizar e analisar suas execuções na interface do Comet.

Experimente você mesmo!#
Confira um exemplo de execução concluída.
Ou, melhor ainda, experimente você mesmo no notebook YOLOv5 do Colab.
Registrar automaticamente#
Por padrão, Comet registra os seguintes itens:
Métricas#
- Perda de caixas, perda de objetos e perda de classificação para os dados de treinamento e validação
- Métricas mAP50 e mAP50-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 de 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 de classe
Configurar o registro no Comet#
Comet pode ser configurado para registrar dados adicionais por meio de opções de 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=<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 predictionsRegistrar pontos de verificação com Comet#
O registro de modelos no Comet fica desativado por padrão. Para ativá-lo, passe o argumento save-period ao script de treinamento. Isso salvará os pontos de verificação registrados no Comet com base no intervalo definido por save-period.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Registrar 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 das previsões registradas e das imagens associadas passando o argumento de linha de comando bbox_interval. As previsões podem ser visualizadas usando o painel personalizado de detecção de objetos do Comet. Essa frequência corresponde a cada N-ésimo 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 por padrão um tamanho de lote de 32, 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 2Controlar o número de imagens de previsão registradas no Comet#
Ao registrar previsões do YOLOv5, Comet 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 1Registrar 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.ptEnviar um conjunto de dados para os artefatos do Comet#
Se quiser armazenar seus dados usando Comet Artifacts, você pode fazer isso usando a opção upload_dataset.
O conjunto de dados está organizado da maneira descrita na documentação do YOLOv5. O arquivo YAML de configuração do conjunto de dados 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_datasetVocê encontra o conjunto de dados enviado na guia Artifacts do seu espaço de trabalho do Comet.

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

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

Utilizar um artefacto guardado#
Se quiser usar um conjunto de dados dos Comet Artifacts, defina a variável path no arquivo YAML do conjunto de dados para apontar para a URL do recurso Artifact a seguir.
# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"Depois, passa este ficheiro ao teu script de treino da seguinte forma:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptOs artefatos também permitem acompanhar a linhagem dos dados ao longo do 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.

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 retomá-la utilizando a flag resume e o caminho da execução do Comet.
O caminho da execução tem o seguinte formato: comet://<your workspace name>/<your project name>/<experiment id>.
Isto restaurará a execução ao estado anterior à interrupção, incluindo a reposição do modelo a partir de um ponto de controlo, de todos os hiperparâmetros e argumentos de treino, e a transferência dos artefactos dos conjuntos de dados do Comet, caso tenham sido utilizados na execução original. A execução retomada continuará a registar dados na experiência existente na interface do Comet.
python train.py \
--resume "comet://<your run path>"Pesquisa de hiperparâmetros com o otimizador do Comet#
O YOLOv5 também está integrado com o otimizador do Comet, o que facilita a visualização de varrimentos de hiperparâmetros na interface do Comet.
Configurar um varrimento do otimizador#
Para configurar o otimizador do Comet, terás de criar um ficheiro JSON com 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 quiser passar argumentos adicionais para a sua busca, 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 1Executar um varrimento em paralelo#
comet optimizer -j <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonO Comet oferece várias maneiras de visualizar os resultados da sua busca. Confira um projeto com uma busca concluída:

Mantém-te em contacto#
Começa a utilizar a nossa integração com o Comet para gerir, visualizar e otimizar os teus modelos YOLOv5 — desde as execuções de treino até à monitorização em produção.
E, claro, junta-te à Comunidade Ultralytics — um espaço para fazer perguntas e partilhar dicas sobre o treino, a validação e a implementação do YOLOv5.
Escrito por
Comentários
Faça uma pergunta, compartilhe seus resultados ou ajude alguém.










