Ir para o conteúdo

Treinamento de Modelos com a YOLO da Ultralytics

Ecossistema e integrações da YOLO da Ultralytics

Introdução

O treinamento de um modelo de aprendizado profundo envolve fornecer dados e ajustar seus parâmetros para que ele possa fazer previsões precisas. O modo de treino na YOLOv8 da Ultralytics é projetado para um treinamento eficaz e eficiente de modelos de detecção de objetos, aproveitando totalmente as capacidades do hardware moderno. Este guia visa cobrir todos os detalhes que você precisa para começar a treinar seus próprios modelos usando o robusto conjunto de recursos da YOLOv8.



Assista: Como Treinar um modelo YOLOv8 no Seu Conjunto de Dados Personalizado no Google Colab.

Por Que Escolher a YOLO da Ultralytics para Treinamento?

Aqui estão algumas razões convincentes para optar pelo modo de Treino da YOLOv8:

  • Eficiência: Aproveite ao máximo seu hardware, seja em um setup com uma única GPU ou expandindo para múltiplas GPUs.
  • Versatilidade: Treine em conjuntos de dados personalizados, além dos já disponíveis, como COCO, VOC e ImageNet.
  • Facilidade de Uso: Interfaces de linha de comando (CLI) e em Python simples, porém poderosas, para uma experiência de treinamento direta.
  • Flexibilidade de Hiperparâmetros: Uma ampla gama de hiperparâmetros personalizáveis para ajustar o desempenho do modelo.

Principais Recursos do Modo de Treino

Os seguintes são alguns recursos notáveis ​​do modo de Treino da YOLOv8:

  • Download Automático de Datasets: Datasets padrões como COCO, VOC e ImageNet são baixados automaticamente na primeira utilização.
  • Suporte a Multi-GPU: Escalone seus esforços de treinamento de maneira uniforme entre várias GPUs para acelerar o processo.
  • Configuração de Hiperparâmetros: Opção de modificar hiperparâmetros através de arquivos de configuração YAML ou argumentos de CLI.
  • Visualização e Monitoramento: Acompanhamento em tempo real das métricas de treinamento e visualização do processo de aprendizagem para obter melhores insights.

Dica

  • Conjuntos de dados YOLOv8 como COCO, VOC, ImageNet e muitos outros são baixados automaticamente na primeira utilização, ou seja, yolo train data=coco.yaml

Exemplos de Uso

Treine o YOLOv8n no conjunto de dados COCO128 por 100 épocas com tamanho de imagem de 640. O dispositivo de treinamento pode ser especificado usando o argumento device. Se nenhum argumento for passado, a GPU device=0 será usado se disponível, caso contrário, device=cpu será usado. Veja a seção Argumentos abaixo para uma lista completa dos argumentos de treinamento.

Exemplo de Treinamento em Uma Única GPU e CPU

O dispositivo é determinado automaticamente. Se uma GPU estiver disponível, ela será usada, caso contrário, o treinamento começará na CPU.

from ultralytics import YOLO

# Carregar um modelo
model = YOLO('yolov8n.yaml')  # construir um novo modelo a partir do YAML
model = YOLO('yolov8n.pt')  # carregar um modelo pré-treinado (recomendado para treinamento)
model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # construir a partir do YAML e transferir pesos

# Treinar o modelo
results = model.train(data='coco128.yaml', epochs=100, imgsz=640)
# Construir um novo modelo a partir do YAML e começar o treinamento do zero
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640

# Começar o treinamento a partir de um modelo *.pt pré-treinado
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

# Construir um novo modelo a partir do YAML, transferir pesos pré-treinados para ele e começar o treinamento
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640

Treinamento com Multi-GPU

O treinamento com múltiplas GPUs permite uma utilização mais eficiente dos recursos de hardware disponíveis, distribuindo a carga de treinamento entre várias GPUs. Esse recurso está disponível por meio da API do Python e da interface de linha de comando. Para habilitar o treinamento com várias GPUs, especifique os IDs dos dispositivos de GPU que deseja usar.

Exemplo de Treinamento com Multi-GPU

Para treinar com 2 GPUs, dispositivos CUDA 0 e 1 use os seguintes comandos. Expanda para GPUs adicionais conforme necessário.

from ultralytics import YOLO

# Carregar um modelo
model = YOLO('yolov8n.pt')  # carregar um modelo pré-treinado (recomendado para treinamento)

# Treinar o modelo com 2 GPUs
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device=[0, 1])
# Começar o treinamento a partir de um modelo *.pt pré-treinado usando as GPUs 0 e 1
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=0,1

Treinamento com Apple M1 e M2 MPS

Com a integração do suporte para os chips Apple M1 e M2 nos modelos YOLO da Ultralytics, agora é possível treinar seus modelos em dispositivos que utilizam o poderoso framework Metal Performance Shaders (MPS). O MPS oferece uma forma de alto desempenho de executar tarefas de computação e processamento de imagens no silício personalizado da Apple.

Para habilitar o treinamento nos chips Apple M1 e M2, você deve especificar 'mps' como seu dispositivo ao iniciar o processo de treinamento. Abaixo está um exemplo de como você pode fazer isso em Python e via linha de comando:

Exemplo de Treinamento com MPS

from ultralytics import YOLO

# Carregar um modelo
model = YOLO('yolov8n.pt')  # carregar um modelo pré-treinado (recomendado para treinamento)

# Treinar o modelo com MPS
results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device='mps')
# Começar o treinamento a partir de um modelo *.pt pré-treinado usando MPS
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=mps

Ao aproveitar o poder computacional dos chips M1/M2, isso possibilita o processamento mais eficiente das tarefas de treinamento. Para orientações mais detalhadas e opções avançadas de configuração, consulte a documentação do PyTorch MPS.

Registro de Logs

Ao treinar um modelo YOLOv8, você pode achar valioso acompanhar o desempenho do modelo ao longo do tempo. É aqui que o registro de logs se torna útil. O YOLO da Ultralytics oferece suporte para três tipos de loggers - Comet, ClearML e TensorBoard.

Para usar um logger, selecione-o no menu suspenso no trecho de código acima e execute-o. O logger escolhido será instalado e inicializado.

Comet

Comet é uma plataforma que permite a cientistas de dados e desenvolvedores rastrear, comparar, explicar e otimizar experimentos e modelos. Oferece funcionalidades como métricas em tempo real, diffs de código e acompanhamento de hiperparâmetros.

Para usar o Comet:

Exemplo

# pip install comet_ml
import comet_ml

comet_ml.init()

Lembre-se de fazer login na sua conta Comet no site deles e obter sua chave de API. Você precisará adicionar isso às suas variáveis de ambiente ou ao seu script para registrar seus experimentos.

ClearML

ClearML é uma plataforma de código aberto que automatiza o rastreamento de experimentos e ajuda com o compartilhamento eficiente de recursos. É projetada para ajudar as equipes a gerenciar, executar e reproduzir seus trabalhos de ML de maneira mais eficiente.

Para usar o ClearML:

Exemplo

# pip install clearml
import clearml

clearml.browser_login()

Após executar este script, você precisará fazer login na sua conta ClearML no navegador e autenticar sua sessão.

TensorBoard

TensorBoard é um kit de ferramentas de visualização para TensorFlow. Permite visualizar o seu gráfico TensorFlow, plotar métricas quantitativas sobre a execução do seu gráfico e mostrar dados adicionais como imagens que passam por ele.

Para usar o TensorBoard em Google Colab:

Exemplo

load_ext tensorboard
tensorboard --logdir ultralytics/runs  # substitua pelo diretório 'runs'

Para usar o TensorBoard localmente, execute o comando abaixo e veja os resultados em http://localhost:6006/:

Exemplo

tensorboard --logdir ultralytics/runs  # substitua pelo diretório 'runs'

Isso irá carregar o TensorBoard e direcioná-lo para o diretório onde seus logs de treinamento estão salvos.

Depois de configurar o seu logger, você pode então prosseguir com o treinamento do seu modelo. Todas as métricas de treinamento serão registradas automaticamente na sua plataforma escolhida, e você pode acessar esses logs para monitorar o desempenho do seu modelo ao longo do tempo, comparar diferentes modelos e identificar áreas para melhoria.


Created 2023-11-13, Updated 2023-11-18
Authors: glenn-jocher (2)

Comentários