Treina e Monitoriza Remotamente o YOLOv5 da Ultralytics Usando ClearML
Explora a nossa parceria com a ClearML para uma experiência otimizada com o YOLOv5 da Ultralytics, com integração de ML contínua, rastreamento de experiências e mais.

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 ClearML é nosso mais novo parceiro: uma caixa de ferramentas open-source projetada para economizar seu tempo.
Com a missão de acelerar a adoção de ML, o ClearML torna a integração de ML perfeita em qualquer produto de Software e Hardware existente.
Essa integração torna ainda mais simples treinar um modelo YOLOv5 e usar o gerenciador de experimentos do ClearML para rastreá-lo automaticamente. Você pode especificar facilmente um ID de versão de conjunto de dados do ClearML como entrada de dados, e ele será usado automaticamente para treinar seu modelo.
Link to this sectionLeve o rastreamento dos seus experimentos para o próximo nível#
- Acompanhe cada execução de treinamento do YOLOv5 no gerenciador de experimentos.
- Versione e acesse facilmente seus dados de treinamento personalizados com a Ferramenta de Versionamento de Dados do ClearML integrada.
- Obtenha o melhor mAP possível usando a Otimização de Hiperparâmetros do ClearML.
- Transforme seu modelo YOLOv5 recém-treinado em uma API com apenas alguns comandos usando o ClearML Serving.
Cabe a você decidir quantas dessas ferramentas deseja usar; você pode manter apenas o gerenciador de experimentos ou encadeá-las em um pipeline impressionante.
Link to this sectionConfigurando as coisas#
Para acompanhar os teus experimentos e dados, o ClearML precisa de se comunicar com um servidor. Tens duas opções para isto: ou registas-te gratuitamente no ClearML Hosted Service ou configuras o teu próprio servidor, vê a documentação de implementação do ClearML Server.
Até o servidor é open-source, então se você estiver lidando com dados sensíveis, não tem problema!
- Instale o pacote python clearml:
pip install clearml - Conecte o SDK do ClearML ao servidor criando credenciais (vá para o canto superior direito em Settings → Workspace → Create new credentials), depois execute o comando abaixo e siga as instruções:
clearml-init
E voilà! Você está pronto para começar...
Link to this sectionTreinando o YOLOv5 com o ClearML#
Para ativar o rastreamento de experimentos do ClearML, basta instalar o pacote pip do ClearML.
pip install clearmlIsso permitirá 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á até 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 --cacheIsso capturará:
- Código-fonte + alterações não confirmadas
- 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 correlograma de rótulos e matriz de confusão
- Imagens com caixas delimitadoras (BBox) por época
- Mosaico por época
- Imagens de validação por época
Nada mal! Agora, podemos visualizar todas essas informações na UI do ClearML para ter uma visão geral do nosso progresso de treinamento. Adicione colunas personalizadas à visualização da tabela (como, por exemplo, mAP_0.5) para que você possa classificar facilmente o modelo com melhor desempenho. Ou selecione vários experimentos e compare-os diretamente!
Há ainda mais o que podemos fazer com todas essas informações, como otimização de hiperparâmetros e execução remota, então continue lendo para aprender como!
Link to this sectionGerenciamento de Versão de Conjunto de Dados#
Versionar seus dados separadamente do seu código é geralmente uma boa ideia e também facilita a obtenção da versão mais recente. Este repositório oferece suporte ao fornecimento de um ID de versão de conjunto de dados, e ele garantirá a obtenção dos dados caso ainda não estejam lá. Além disso, este fluxo de trabalho também salva o ID do conjunto de dados utilizado como parte dos parâmetros da tarefa, para que você sempre saiba com certeza quais dados foram usados em qual experimento!
Link to this sectionPrepare seu conjunto de dados#
O repositório YOLOv5 oferece suporte a vários conjuntos de dados diferentes usando arquivos YAML contendo suas informações. Por padrão, os conjuntos de dados são baixados para a pasta ../datasets em relação à pasta raiz do repositório. Portanto, se você baixou o conjunto de dados 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.txtMas este pode ser qualquer conjunto de dados que você desejar. Sinta-se à vontade para usar o seu próprio, desde que você 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 o conjunto de dados corretamente. Você mesmo pode fazer isso também, é 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 # ← HERE!
|_ LICENSE
|_ README.txtLink to this sectionCarregue 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 poderia executar esses comandos um após o outro:
# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeLink to this sectionExecute o treinamento usando um conjunto de dados do ClearML#
Agora que você tem um conjunto de dados do ClearML, pode usá-lo muito facilmente para treinar modelos YOLOv5 personalizados.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheLink to this sectionOtimização de Hiperparâmetros#
Agora que temos nossos experimentos e a versão dos dados, é hora de dar uma olhada no que podemos construir em cima disso!
Usando as informações do código, pacotes instalados e detalhes do ambiente, o experimento em si agora é completamente reproduzível. Na verdade, o ClearML permite que você clone um experimento e até mesmo altere seus parâmetros. Podemos então simplesmente executá-lo novamente com esses novos parâmetros automaticamente; é basicamente isso que a Otimização de Hiperparâmetros (HPO) faz!
Para executar a otimização de hiperparâmetros localmente, incluímos um script pré-pronto para você. Apenas certifique-se de que uma tarefa de treinamento tenha sido executada pelo menos uma vez, para que ela esteja no gerenciador de experimentos do ClearML; nós 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, em seguida, basta executá-lo. Você pode alterar task.execute_locally() para task.execute() para colocá-lo em uma fila do ClearML e fazer com que um agente remoto trabalhe nele.
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.pyLink to this sectionExecução Remota (Avançado)#
Executar a HPO localmente é muito útil, mas e se quisermos executar nossos experimentos em uma máquina remota? Talvez você tenha acesso a uma máquina com GPU muito potente no local, ou tenha algum orçamento para usar GPUs em nuvem. É aqui que o ClearML Agent entra em cena.
Confira o que o agente pode fazer aqui:
Em resumo: 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.). Portanto, um agente do ClearML faz exatamente isso: ele escuta uma fila em busca de tarefas recebidas e, quando encontra uma, recria o ambiente e a executa enquanto ainda relata escalares, gráficos, etc., ao gerenciador de experimentos.
Você pode transformar qualquer máquina (uma VM na nuvem, uma máquina local com GPU, seu próprio laptop) em um agente do ClearML simplesmente executando:
clearml-agent daemon --queue [--docker]Link to this sectionClonagem, Edição e Enfileiramento#
Com nosso agente rodando, podemos dar a ele algum trabalho. Lembra da seção de HPO, que podemos clonar uma tarefa e editar os hiperparâmetros? Podemos fazer isso pela interface também!
🪄 Clone o experimento clicando com o botão direito nele
🎯 Edite os hiperparâmetros para o que você desejar
⏳ Enfileire a tarefa em qualquer uma das filas clicando com o botão direito nela
Link to this sectionExecutando uma tarefa remotamente#
Agora você pode clonar uma tarefa conforme 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 do YOLOv5 remotamente, tudo o que você precisa fazer é adicionar esta linha ao script train.py após o logger do ClearML ter sido instanciado:
# ...
# 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 LINEAlguma dúvida? Junte-se à nossa comunidade e deixe sua pergunta hoje!






