Descubra como a Ultralytics faz parceria com a Comet para otimização do modelo Ultralytics YOLOv5: rastreamento em tempo real, colaboração otimizada e reprodutibilidade aprimorada.

Descubra como a Ultralytics faz parceria com a Comet para otimização do modelo Ultralytics YOLOv5: rastreamento em tempo real, colaboração otimizada e reprodutibilidade aprimorada.
Na Ultralytics, fazemos parcerias comerciais com outras startups para nos ajudar a financiar a pesquisa e o desenvolvimento de nossas incríveis ferramentas de código aberto, como o YOLOv5, para mantê-las gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.
Nosso mais novo parceiro, 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.
O Comet é uma ferramenta poderosa para rastrear seus modelos, conjuntos de dados e métricas. Ele até registra suas variáveis de sistema e ambiente para garantir a reprodutibilidade e a depuração tranquila de cada execução. É como ter um assistente virtual que magicamente sabe quais anotações manter. Rastreie e visualize as 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, 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!
O YOLOv5 é um ótimo ponto de partida para sua jornada na visão computacional. Para melhorar o desempenho do seu modelo e prepará-lo para a produção, você precisará registrar os resultados em uma ferramenta de rastreamento de experimentos como o Comet.
A integração do Comet e YOLOv5 oferece 3 recursos principais:
Este guia abordará como usar o YOLOv5 com o Comet.
Então, pronto para rastrear suas experiências em tempo real? Vamos começar!
Pip install comet_ml
Existem duas maneiras de configurar o Comet com o YOLOv5.
Você pode definir suas credenciais através de variáveis de ambiente ou criar um arquivo .comet.config no seu diretório de trabalho e definir suas credenciais lá.
export COMET_API_KEY=export COMET_PROJECT_NAME= # Isso usará 'yolov5' como padrão
[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'
# Treinar YOLOv5s no COCO128 para 5 épocaspython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
É isso mesmo!
O Comet registrará automaticamente seus hiperparâmetros, argumentos de linha de comando, treinamento e métricas de validação. Você pode visualizar e analisar suas execuções na interface do usuário do Comet.
Confira um exemplo de uma execução concluída aqui.
Ou melhor ainda, experimente você mesmo neste Caderno Colab.
Por padrão, o Comet registrará os seguintes itens:
O Comet pode ser configurado para registrar dados adicionais por meio de flags de linha de comando passadas para o script de treinamento ou variáveis de ambiente.
export COMET_MODE=online # Define se o Comet será executado no modo 'online' ou 'offline'. O padrão é onlineexport COMET_MODEL_NAME= #Define o nome para o modelo salvo. O padrão é yolov5export COMET_LOG_CONFUSION_MATRIX=false # Defina para desativar o registro de uma Matriz de Confusão do Comet. O padrão é trueexport COMET_MAX_IMAGE_UPLOADS= # Controla quantas predições de imagem totais registrar no Comet. O padrão é 100.export COMET_LOG_PER_CLASS_METRICS=true # Defina para registrar métricas de avaliação para cada classe detectada no final do treinamento. O padrão é falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # Defina isso se você quiser retomar o treinamento de um checkpoint diferente. O padrão é 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # Defina isso se você quiser registrar métricas de treinamento no nível do lote. O padrão é false.export COMET_LOG_PREDICTIONS=true # Defina isso como falso para desativar o registro de predições do modelo
O registro de modelos no Comet está 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 por save-period.
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
Por padrão, as previsões do modelo (imagens, rótulos de verdade básica e caixas delimitadoras) serão registradas no Comet. Você pode controlar a frequência das previsões registradas e as 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, estamos registrando a cada 2º lote de dados para cada época.
Nota: O carregador de dados de validação YOLOv5 terá como padrão um tamanho de lote de 32, portanto, você terá que definir a frequência de registro de acordo.
Aqui está um projeto de exemplo usando o Panel.
python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--bbox_interval 2
Ao registrar as previsões do YOLOv5, o Comet registrará as imagens associadas a cada conjunto de previsõ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=200python train.py \--img 640 \--batch 16 \--epochs 5 \--data coco128.yaml \--weights yolov5s.pt \--bbox_interval 1
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.pt
Se quiser armazenar os seus dados usando Comet Artifacts, pode fazê-lo usando a flag upload_dataset.
O conjunto de dados é organizado da forma 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_dataset
Você pode encontrar o conjunto de dados carregado na aba Artifacts (Artefatos) no seu Comet Workspace.
Você pode visualizar os dados diretamente na interface do usuário do Comet.
Os artefatos são versionados e também suportam a adição de metadados sobre o conjunto de dados. O Comet registrará automaticamente os metadados do seu arquivo yaml do conjunto de dados.
Se quiser usar um conjunto de dados de Comet Artifacts, defina a variável de caminho no seu ficheiro yaml do conjunto de dados para apontar para o seguinte URL de recurso do Artifact.
# conteúdo do arquivo artifact.yaml path: "comet:///:"
Em seguida, passe este arquivo para o seu 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 rastrear a linhagem dos dados à medida que eles fluem pelo seu fluxo de trabalho de Experimentação. Aqui você pode ver um gráfico que mostra todos os experimentos que usaram seu conjunto de dados carregado.
Se a sua execução de treino for interrompida por qualquer motivo, por exemplo, interrupção da ligação à Internet, pode retomar a execução usando a flag resume e o Comet Run Path.
O Run Path tem o seguinte formato comet:////.
Isso restaurará a execução ao seu estado anterior à interrupção, o que inclui restaurar o modelo a partir de um checkpoint, restaurar todos os hiperparâmetros e argumentos de treinamento e baixar os artefatos do conjunto de dados Comet, se eles foram usados na execução original. A execução retomada continuará registrando no Experimento existente na interface do usuário do Comet.
python train.py \--resume "comet://"
O YOLOv5 também está integrado ao Optimizer da Comet, facilitando a visualização de varreduras de hiperparâmetros na interface do usuário da Comet.
Para configurar o Comet Optimizer, você terá que criar um arquivo JSON com as informações sobre a varredura.
Um arquivo de exemplo foi fornecido 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ê deseja passar argumentos adicionais para sua varredura, 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 1
otimizador Comet -j utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"
O Comet oferece muitas maneiras de visualizar os resultados de sua varredura. Dê uma olhada em um projeto com uma varredura concluída aqui:
Comece a usar nossa integração com o Comet para gerenciar, visualizar e otimizar seus modelos YOLOv5, desde execuções de treinamento até o monitoramento da produção.
E, claro, junte-se à Comunidade Ultralytics – um lugar para fazer perguntas e partilhar dicas sobre treino, validação e implementação do YOLOv5.