Como Usar o YOLOv5 da Ultralytics Com a Comet
Descobre como a Ultralytics faz parceria com a Comet para otimização do modelo YOLOv5 da Ultralytics: rastreamento em tempo real, colaboração simplificada e maior reprodutibilidade.

Na Ultralytics, temos parcerias comerciais com outras startups para nos ajudar a financiar a pesquisa e o desenvolvimento de nossas ferramentas de código aberto incríveis, como o YOLOv5, para mantê-las gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.
O nosso parceiro mais recente, o Comet, cria ferramentas que ajudam cientistas de dados, engenheiros e líderes de equipa a acelerar e otimizar modelos de machine learning e deep learning.
O Comet é uma ferramenta poderosa para rastrear os teus modelos, conjuntos de dados e métricas. Ele até regista o teu sistema e as variáveis de ambiente para garantir a reprodutibilidade e uma depuração fluida em todas as execuções. É como ter um assistente virtual que sabe magicamente que notas manter. Rastreia e visualiza métricas de modelos em tempo real, guarda os teus hiperparâmetros, conjuntos de dados e checkpoints de modelos, e visualiza as predições do teu modelo com os Comet Custom Panels!
Além disso, 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!
YOLOv5 é um excelente ponto de partida para a tua jornada em computer vision. Para melhorar o desempenho do teu modelo e prepará-lo para produção, precisarás de registar os resultados numa ferramenta de rastreio de experiências como o Comet.
A integração entre Comet e YOLOv5 oferece 3 recursos principais:
- Recursos de registro automático e registro personalizado
- Salvamento de datasets e modelos como artefatos para depuração e reprodutibilidade
- Organização da sua visualização com os painéis personalizados do Comet
Este guia cobrirá como usar o YOLOv5 com o Comet.
Então, pronto para rastrear seus experimentos em tempo real? Vamos começar!
Primeiros Passos#
Instale o Comet#
pip install comet_mlConfigure as Credenciais do Comet#
Existem duas formas de configurar o Comet com o YOLOv5.
Você pode definir suas credenciais por meio de variáveis de ambiente ou criar um arquivo .comet.config em seu diretório de trabalho e definir suas credenciais lá.
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'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É isso!
O Comet registrará automaticamente seus hiperparâmetros, argumentos de linha de comando, e métricas de treinamento e validação. Você pode visualizar e analisar suas execuções na UI do Comet.

Experimente Você Mesmo!#
Consulta um exemplo de uma execução concluída aqui.
Ou melhor ainda, experimenta tu mesmo em este Colab Notebook.
Registro Automático#
Por padrão, o Comet registrará os seguintes itens:
Métricas#
- Box Loss, Object Loss e Classification Loss para os dados de treinamento e validação
- Métricas 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 de linha de comando
Visualizações#
- Matriz de Confusão das predições do modelo nos dados de validação
- Gráficos para as curvas PR e F1 em todas as classes
- Correlograma dos Rótulos de Classe
Configurar Registro no Comet#
O Comet pode ser configurado para registrar dados adicionais por meio de flags de linha de comando passadas ao script de treinamento ou 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 predictionsRegistrando Checkpoints com o Comet#
O registro de modelos no Comet é desativado por padrão. Para ativá-lo, passe o argumento save-period para o script de treinamento. Isso salvará os checkpoints registrados no Comet com base no valor de intervalo fornecido pelo save-period.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1Registrando Predições do Modelo#
Por padrão, as predições do modelo (imagens, rótulos de ground truth e bounding boxes) serão registradas no Comet. Você pode controlar a frequência das predições registradas e as imagens associadas passando o argumento de linha de comando bbox_interval. As predições podem ser visualizadas usando o Painel Personalizado de Detecção de Objetos do Comet. Esta frequência corresponde a cada N-ésimo lote de dados por época. No exemplo abaixo, estamos registrando cada 2º lote de dados para cada época.
Nota: O carregador de dados de validação do YOLOv5 usará por padrão um tamanho de lote (batch size) de 32, portanto você precisará definir a frequência de registro de acordo.
Aqui está 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 2Controlando o Número de Imagens de Predição Registradas no Comet#
Ao registrar predições do YOLOv5, o Comet registrará as imagens associadas a cada conjunto de predições. Por padrão, um máximo de 100 imagens de validação são registradas. 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 1Registrando Métricas em Nível de Classe#
Use a variável de ambiente COMET_LOG_PER_CLASS_METRICS para registrar 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.ptEnviando um Dataset para os Artefatos do Comet#
Se quiseres armazenar os teus dados utilizando os Comet Artifacts, podes fazê-lo utilizando a flag upload_dataset.
O conjunto de dados está organizado da forma descrita na documentação do YOLOv5. O ficheiro yaml de configuração do conjunto de dados deve seguir o mesmo formato que o ficheiro coco128.yaml.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_datasetVocê pode encontrar o dataset enviado na aba Artefatos no seu Espaço de Trabalho (Workspace) do Comet.

Você pode visualizar os dados diretamente na UI do Comet.

Os artefatos são versionados e também suportam a adição de metadados sobre o dataset. O Comet registrará automaticamente os metadados do seu arquivo yaml de dataset.

Usando um Artefato Salvo#
Se você quiser usar um dataset dos Artefatos do Comet, defina a variável path no seu arquivo yaml de dataset para apontar para a seguinte URL de recurso de Artefato.
# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"Em seguida, passe este arquivo para seu script de treinamento da seguinte maneira:
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptOs artefatos também permitem que você rastreie a linhagem de dados conforme eles fluem pelo seu fluxo de trabalho de Experimentação. Aqui você pode ver um gráfico que mostra todos os experimentos que utilizaram o seu dataset enviado.

Retomando uma Execução de Treinamento#
Se sua execução de treinamento for interrompida por qualquer motivo, por exemplo, conexão com a internet interrompida, você pode retomar a execução usando a flag resume e o Caminho da Execução (Run Path) do Comet.
O Run Path tem o seguinte formato comet://<your workspace name>/<your project name>/<experiment id>.
Isso restaurará a execução ao seu estado antes da interrupção, o que inclui restaurar o modelo a partir de um checkpoint, restaurar todos os hiperparâmetros e argumentos de treinamento, e baixar Artefatos de dataset do Comet se eles foram usados na execução original. A execução retomada continuará registrando na Experiência existente na UI 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, tornando simples visualizar sweeps de hiperparâmetros na UI do Comet.
Configurando um Sweep de Otimizador#
Para configurar o Otimizador do Comet, você precisará criar um arquivo JSON com as informações sobre o sweep.
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 o train.py. Se você desejar passar argumentos adicionais para seu sweep, simplesmente adicione-os após o script.
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1Executando um Sweep em Paralelo#
comet optimizer -j <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonO Comet oferece muitas formas de visualizar os resultados da tua varredura. Dá uma vista de olhos a um projeto com uma varredura concluída aqui:

Mantenha Contato#
Começa a utilizar a nossa integração com o Comet para gerir, visualizar e otimizar os teus modelos YOLOv5 — desde as runs de treino até à monitorização em produção.
E, claro, junta-te à Ultralytics Community – um espaço para fazer perguntas e partilhar dicas sobre o treino, validação e implementação do YOLOv5.






