Como utilizar o Ultralytics YOLOv5 com o Comet

Equipa Ultralytics

5 min. de leitura

11 de outubro de 2022

Descubra como a Ultralytics se associa à Comet para a otimização do modelo Ultralytics YOLOv5: acompanhamento em tempo real, colaboração simplificada e reprodutibilidade melhorada.

Na Ultralytics, estabelecemos parcerias comerciais com outras startups para nos ajudar a financiar a investigação e o desenvolvimento das nossas fantásticas ferramentas de código aberto, como o YOLOv5, para as manter gratuitas para todos. Este artigo pode conter links de afiliados para esses parceiros.

O nosso mais recente parceiro, Comet, cria ferramentas que ajudam os cientistas de dados, engenheiros e líderes de equipa a acelerar e otimizar a aprendizagem automática e os modelos de aprendizagem profunda.

O Comet é uma ferramenta poderosa para acompanhar os seus modelos, conjuntos de dados e métricas. Até regista as variáveis do sistema e do ambiente para garantir a reprodutibilidade e a depuração sem problemas para cada execução. É como ter um assistente virtual que, por magia, sabe que notas guardar. Acompanhe e visualize as métricas do modelo em tempo real, salve seus hiperparâmetros, conjuntos de dados e pontos de verificação do modelo e visualize as previsões do modelo com os painéis personalizados do Comet!

Além disso, o Comet garante que nunca perde o controlo do seu trabalho e facilita a partilha de resultados e a colaboração entre equipas de todas as dimensões!

O YOLOv5 é um ótimo ponto de partida para a sua jornada de visão computacional. Para melhorar o desempenho do seu modelo e prepará-lo para a produção, terá de registar os resultados numa ferramenta de acompanhamento de experiências como o Comet.

A integração do Comet e do YOLOv5 oferece 3 caraterísticas principais:

  • Caraterísticas de registo automático e de registo personalizado
  • Gravação de conjuntos de dados e modelos como artefactos para depuração e reprodutibilidade
  • Organizar a sua vista com os painéis personalizados do Comet


Este guia explica como utilizar o YOLOv5 com o Comet.

Então, pronto para acompanhar as suas experiências em tempo real? Vamos lá começar!

Como começar

1. Instalar o Comet

Pip install comet_ml

2. Configurar as credenciais do Comet

Existem duas formas de configurar o Comet com o YOLOv5.

Pode definir as suas credenciais através de variáveis de ambiente ou criar um ficheiro .comet.config no seu diretório de trabalho e definir aí as suas credenciais.


Variáveis de ambiente

export COMET_API_KEY=export COMET_PROJECT_NAME= # A predefinição será 'yolov5'


Ficheiro de configuração do Comet

[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'

3. Executar o guião de formação

# Treinar YOLOv5s em COCO128 para 5 épocasspython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

É isso mesmo!

O Comet registará automaticamente os hiperparâmetros, os argumentos da linha de comandos, as métricas de formação e validação. É possível visualizar e analisar suas execuções na interface do usuário do Comet.

Experiências com o YOLOv5 no Comet Dashboard

Experimente você mesmo!

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

Ou melhor ainda, experimente-o você mesmo neste caderno Colab.

Registar automaticamente

Por predefinição, o Comet regista os seguintes itens:

Métricas

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

Parâmetros

  • Hiperparâmetros do modelo
  • Todos os parâmetros passados através das opções da linha de comando

Visualizações

  • Matriz de confusão das previsões do modelo nos dados de validação
  • Gráficos para as curvas PR e F1 em 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 de linha de comandos passados para o script de treino ou variáveis de ambiente.

export COMET_MODE=online # Define se o Comet deve ser executado em modo 'online' ou 'offline'. A predefinição é onlineexport COMET_MODEL_NAME= #Definir o nome do modelo guardado. Por defeito, yolov5export COMET_LOG_CONFUSION_MATRIX=false # Definir para desativar o registo de uma Matriz de Confusão do Comet. Por defeito, trueexport COMET_MAX_IMAGE_UPLOADS= # Controla o número total de previsões de imagens a registar no Comet. A predefinição é 100.export COMET_LOG_PER_CLASS_METRICS=true # Definir para registar métricas de avaliação para cada classe detectada no final do treino. Por defeito, falseexport COMET_DEFAULT_CHECKPOINT_FILENAME= # Defina isto se quiser retomar a formação a partir de um ponto de controlo diferente. A predefinição é 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # Defina esta opção se pretender registar as métricas de formação ao nível do lote. A predefinição é false.export COMET_LOG_PREDICTIONS=true # Defina esta opção como false para desativar o registo das previsões do modelo

Registo de pontos de controlo com o Comet

O registo de modelos no Comet está desativado por predefinição. Para o ativar, passe o argumento save-period para o script de treino. Isto irá guardar os pontos de verificação 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

Previsões do modelo de registo

Por predefinição, as previsões do modelo (imagens, etiquetas da verdade terrestre e caixas delimitadoras) serão registadas no Comet. É possível controlar a frequência das previsões registradas e as imagens associadas passando o argumento da linha de comando bbox_interval. As previsões podem ser visualizadas usando o painel personalizado de deteção de objetos do Comet. Essa frequência corresponde a cada N-ésimo lote de dados por época. No exemplo abaixo, estamos a registar cada 2º lote de dados para cada época.

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

Eis um exemplo de projeto que utiliza o Painel.

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

Controlo do número de imagens de previsão registadas no Comet

Ao registar previsões do YOLOv5, o Comet registará as imagens associadas a cada conjunto de previsões. Por predefinição, é registado um máximo de 100 imagens de validação. É possível 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

Registo de métricas de nível de classe

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

Carregamento de um conjunto de dados para o Comet Artifacts

Se pretender armazenar os seus dados utilizando artefactos Comet, pode fazê-lo utilizando o sinalizador upload_dataset.

O conjunto de dados é organizado da forma descrita na documentação do YOLOv5. O ficheiro yaml de configuração do dataset deve 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

Pode encontrar o conjunto de dados carregado no separador Artefactos no seu Comet Workspace

Separador de artefactos do cometa, YOLOv5

Pode pré-visualizar os dados diretamente na IU do Comet.

Pré-visualização de dados no Comet, YOLOv5

Os artefactos são versionados e também suportam a adição de metadados sobre o conjunto de dados. O Comet registará automaticamente os metadados do seu ficheiro yaml do conjunto de dados.

Metadados de registo do ficheiro YAML no Comet, YOLOv5

Utilizar um artefacto guardado

Se pretender utilizar um conjunto de dados do Comet Artifacts, defina a variável path no ficheiro yaml do conjunto de dados para apontar para o seguinte URL do recurso Artifact.

# conteúdo do caminho do ficheiro artifact.yaml: "comet:///::"

Em seguida, passe este ficheiro para o seu script de formação da seguinte forma:

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

Os artefactos também lhe permitem seguir a linhagem dos dados à medida que estes fluem através do seu fluxo de trabalho de Experimentação. Aqui pode ver um gráfico que mostra todas as experiências que utilizaram o conjunto de dados carregado.

Fluxo de trabalho de experimentação do cometa, YOLOv5

Retomar uma corrida de treino

Se a corrida de treino for interrompida por qualquer motivo, por exemplo, uma interrupção da ligação à Internet, pode retomar a corrida utilizando a bandeira de retoma e o percurso de corrida do Comet.

O percurso de execução tem o seguinte formato comet:////.

Isso restaurará a execução para o estado anterior à interrupção, o que inclui a restauração do modelo a partir de um ponto de verificação, a restauração de todos os hiperparâmetros e argumentos de treinamento e o download de artefatos do conjunto de dados do Comet, caso tenham sido usados na execução original. A execução retomada continuará a registar a experiência existente na IU do Comet.

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

Pesquisa de hiperparâmetros com o optimizador Comet

O YOLOv5 também está integrado no Optimizador do Comet, tornando simples a visualização de varrimentos de hiperparâmetros na IU do Comet.

Configuração de uma varredura do optimizador

Para configurar o Comet Optimizer, terá de criar um ficheiro JSON com as informações sobre a varredura.

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 desejar passar argumentos adicionais ao seu sweep, 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

Execução de uma varredura em paralelo

comet optimizer -j utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

O Comet fornece muitas formas de visualizar os resultados da sua varredura. Veja um projeto com uma varredura concluída aqui:

Visualizar os resultados da varredura no Comet, YOLOv5

Manter-se em contacto

Comece a utilizar a nossa integração com o Comet para gerir, visualizar e otimizar os seus modelos YOLOv5 - desde os treinos até à monitorização da produção.

E, claro, junte-se à Comunidade Ultralytics - um local para colocar questões e partilhar dicas sobre a formação, validação e implementação do YOLOv5.

Vamos construir juntos o futuro
da IA!

Comece a sua viagem com o futuro da aprendizagem automática

Comece gratuitamente
Ligação copiada para a área de transferência