Sintonize na YOLO Vision 2025!
25 de setembro de 2025
10:00 — 18:00 BST
Evento híbrido
Yolo Vision 2024

Treine e monitore remotamente o Ultralytics YOLOv5 usando o ClearML

Equipe Ultralytics

4 min de leitura

21 de outubro de 2022

Explore nossa parceria com a ClearML para uma experiência Ultralytics YOLOv5 aprimorada, com integração perfeita de ML, rastreamento de experimentos e muito mais.

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.

ClearML é nosso mais novo parceiro: um conjunto de ferramentas de código aberto projetado para economizar seu tempo.

Com a missão de acelerar a adoção de ML, o ClearML torna o ML perfeito para integrar em qualquer produto de software e hardware.

Essa integração torna ainda mais simples treinar um modelo YOLOv5 e usar o gerenciador de experimentos ClearML para rastreá-lo automaticamente. Você pode especificar facilmente um ID de versão do conjunto de dados ClearML como a entrada de dados, e ele será automaticamente usado para treinar seu modelo.

Leve o rastreamento de seus experimentos para o próximo nível

  • Rastreie cada execução de treinamento do YOLOv5 no gerenciador de experimentos.
  • Controle a versão e acesse facilmente seus dados de treinamento personalizados com a ferramenta integrada ClearML Data Versioning.
  • Obtenha o melhor mAP usando a otimização de hiperparâmetros ClearML.
  • Transforme seu modelo YOLOv5 recém-treinado em uma API com apenas alguns comandos usando o ClearML Serving.

Depende de você quantas dessas ferramentas você deseja usar, você pode usar apenas o gerenciador de experimentos ou encadeá-las em um pipeline impressionante.

Configurando as coisas

Para acompanhar seus experimentos e dados, o ClearML precisa se comunicar com um servidor. Você tem duas opções para isso: inscreva-se gratuitamente no ClearML Hosted Service ou configure seu próprio servidor, veja aqui.

Até mesmo o servidor é de código aberto, então, se você estiver lidando com dados confidenciais, não há problema!

  1. Instale o pacote python clearml: pip install clearml
  2. Conecte o SDK ClearML ao servidor criando credenciais (vá no canto superior direito em Configurações → Espaço de Trabalho → Criar novas credenciais), depois execute o comando abaixo e siga as instruções: clearml-init

E voilà! Você está pronto para começar...

Treinando o YOLOv5 com ClearML

Para habilitar o rastreamento de experimentos do ClearML, basta instalar o pacote pip do ClearML.

pip install clearml

Isso habilitará a integração com o script de treinamento do YOLOv5. Cada execução de treinamento a partir de agora será capturada e armazenada pelo gerenciador de experimentos do ClearML. Se você quiser alterar o project_name ou task_name, vá para o nosso logger personalizado, onde você pode alterá-lo: utils/loggers/clearml/clearml_utils.py

python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache

Isso irá capturar:

  • Código fonte + alterações não commitadas
  • Pacotes instalados
  • (Hiper)parâmetros
  • Arquivos de modelo (use --save-period n para salvar um checkpoint a cada n épocas)
  • Saída do console
  • Escalares (mAP_0.5, mAP_0.5:0.95, precisão, recall, perdas, taxas de aprendizado, ...)
  • Informações gerais, como detalhes da máquina, tempo de execução, data de criação, etc.
  • Todos os gráficos produzidos, como o correlograma de rótulos e a matriz de confusão
  • Imagens com bounding boxes por época
  • Mosaico por época
  • Imagens de validação por época

Nada mal! Agora, podemos visualizar todas essas informações na interface do usuário do ClearML para obter uma visão geral do nosso progresso de treinamento. Adicione colunas personalizadas à visualização de tabela (como, por exemplo, mAP_0.5) para que você possa classificar facilmente o modelo de melhor desempenho. Ou selecione vários experimentos e compare-os diretamente!

Há ainda mais que podemos fazer com todas essas informações, como otimização de hiperparâmetros e execução remota, então continue lendo para saber como!

Gerenciamento de Versão de Dataset

Controlar as versões dos seus dados separadamente do seu código é geralmente uma boa ideia e facilita a aquisição da versão mais recente também. Este repositório oferece suporte ao fornecimento de um ID de versão do conjunto de dados e garante que os dados sejam obtidos, caso ainda não estejam disponíveis. Além disso, este fluxo de trabalho também salva o ID do conjunto de dados usado como parte dos parâmetros da tarefa, para que você sempre saiba com certeza quais dados foram usados em qual experimento!

Prepare Seu Dataset

O repositório YOLOv5 suporta vários datasets diferentes usando arquivos YAML contendo suas informações. Por padrão, os datasets são baixados para a pasta ../datasets em relação à pasta raiz do repositório. Portanto, se você baixou o dataset coco128 usando o link no YAML ou com os scripts fornecidos pelo yolov5, você obtém esta estrutura de pastas:

../
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

Mas este pode ser qualquer conjunto de dados que desejar. Sinta-se à vontade para usar o seu próprio, desde que mantenha esta estrutura de pastas.

Em seguida, ⚠️copie o arquivo YAML correspondente para a raiz da pasta do conjunto de dados⚠️. Esses arquivos YAML contêm as informações que o ClearML precisará para usar corretamente o conjunto de dados. Você também pode criar isso sozinho, é claro, basta seguir a estrutura dos YAMLs de exemplo.

Basicamente, precisamos das seguintes chaves: path, train, test, val, nc, names.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml # ← AQUI!
        |_ LICENSE
        |_ README.txt

Carregar Seu Conjunto de Dados

Para colocar este conjunto de dados no ClearML como um conjunto de dados versionado, vá para a pasta raiz do conjunto de dados e execute o seguinte comando:

cd coco128

clearml-data sync --project YOLOv5 --name coco128 --folder .


O comando clearml-data sync é, na verdade, um comando abreviado. Você também pode executar estes comandos um após o outro:

# Opcionalmente, adicione --parent se quiser basear

# esta versão em outra versão do conjunto de dados, para que nenhum arquivo duplicado seja carregado!

clearml-data create --name coco128 --project YOLOv5/p>

clearml-data add --files .

clearml-data close

Executar Treinamento Usando um Conjunto de Dados ClearML

Agora que você tem um conjunto de dados ClearML, pode usá-lo de forma muito simples para treinar modelos YOLOv5 personalizados.

python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache

Otimização de Hiperparâmetros

Agora que temos nossos experimentos e versão de dados, é hora de dar uma olhada no que podemos construir em cima!

Usando as informações do código, os pacotes instalados e os detalhes do ambiente, o experimento em si agora é completamente reproduzível. Na verdade, o ClearML permite clonar um experimento e até mesmo alterar seus parâmetros. Podemos então apenas executá-lo novamente com esses novos parâmetros automaticamente, que é basicamente o que o HPO faz!

Para executar a otimização de hiperparâmetros localmente, incluímos um script pré-fabricado para você. Apenas certifique-se de que uma tarefa de treinamento tenha sido executada pelo menos uma vez, para que esteja no gerenciador de experimentos do ClearML, essencialmente a clonaremos e alteraremos seus hiperparâmetros.

Você precisará preencher o ID desta tarefa de modelo no script encontrado em utils/loggers/clearml/hpo.py e então apenas executá-lo. Você pode alterar task.execute_locally() para task.execute() para colocá-lo em uma fila ClearML e fazer com que um agente remoto trabalhe nele.

# Para usar o optuna, instale-o primeiro, caso contrário, você pode alterar o otimizador para ser apenas RandomSearch pip install optuna python utils/loggers/clearml/hpo.py

Execução Remota (Avançado)

Executar HPO localmente é realmente útil, mas e se quisermos executar nossos experimentos em uma máquina remota? Talvez você tenha acesso a uma máquina GPU muito poderosa no local ou tenha algum orçamento para usar GPUs na nuvem. É aqui que o ClearML Agent entra em ação.

Veja o que o agente pode fazer aqui:

Resumidamente: cada experimento rastreado pelo gerenciador de experimentos contém informações suficientes para reproduzi-lo em uma máquina diferente (pacotes instalados, alterações não confirmadas, etc.). Assim, um agente ClearML faz exatamente isso: ele escuta uma fila de tarefas recebidas e, quando encontra uma, recria o ambiente e o executa, enquanto continua reportando escalares, gráficos, etc. ao gerenciador de experimentos.

Você pode transformar qualquer máquina (uma VM na nuvem, uma máquina GPU local, seu próprio laptop) em um agente ClearML simplesmente executando:

clearml-agent daemon --queue [--docker]

Clonagem, Edição e Enfileiramento

Com nosso agente em execução, podemos dar-lhe algum trabalho. Lembra-se da seção de HPO em que podemos clonar uma tarefa e editar os hiperparâmetros? Podemos fazer isso também a partir da interface!

🪄 Clone o experimento clicando com o botão direito do mouse sobre ele

🎯 Edite os hiperparâmetros para o que você deseja que eles sejam

⏳ Enfileire a tarefa em qualquer uma das filas clicando com o botão direito do mouse sobre ela

Executando uma Tarefa Remotamente

Agora você pode clonar uma tarefa como explicamos acima, ou simplesmente marcar seu script atual adicionando task.execute_remotely() e, na execução, ele será colocado em uma fila, para o agente começar a trabalhar!

Para executar o script de treinamento YOLOv5 remotamente, tudo o que você precisa fazer é adicionar esta linha ao script training.py após a instanciação do logger ClearML:

# ... # Loggers data_dict = None if RANK in {-1, 0}: loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance if loggers.clearml: loggers.clearml.task.execute_remotely(queue='my_queue') # <------ ADD THIS LINE # Data_dict is either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...

Ao executar o script de treinamento após esta alteração, o python executará o script até essa linha, após o qual ele empacotará o código e o enviará para a fila!

Trabalhadores de escalonamento automático

O ClearML também vem com auto scalers! Essa ferramenta iniciará automaticamente novas máquinas remotas na nuvem de sua escolha (AWS, GCP, Azure) e as transformará em agentes ClearML para você sempre que houver experimentos detectados na fila. Depois que as tarefas forem processadas, o auto scaler desligará automaticamente as máquinas remotas e você para de pagar! Confira o vídeo de introdução aos auto scalers abaixo.

Alguma pergunta? Junte-se à nossa comunidade e deixe sua pergunta hoje!

Vamos construir o futuro
da IA juntos!

Comece sua jornada com o futuro do aprendizado de máquina

Comece gratuitamente
Link copiado para a área de transferência