Treinamento de Modelo com Ultralytics YOLO#
Introdução#
Treinar um modelo de deep learning envolve fornecer dados a ele e ajustar seus parâmetros para que possa fazer previsões precisas. O modo de treino no Ultralytics YOLO26 foi projetado para o treinamento eficaz e eficiente de modelos de detecção de objetos, utilizando plenamente as capacidades de hardware moderno. Este guia tem como objetivo cobrir todos os detalhes necessários para começares a treinar os teus próprios modelos usando o conjunto robusto de recursos do YOLO26. Se ainda não instalaste o Ultralytics, começa pelo Guia de início rápido.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Por que Escolher o Ultralytics YOLO para Treinamento?#
Aqui estão algumas razões convincentes para optar pelo modo Train do YOLO26:
- Eficiência: Aproveita ao máximo o teu hardware, estejas a usar uma configuração de GPU única ou a escalar através de múltiplas GPUs.
- Versatilidade: Treina em conjuntos de dados personalizados, além daqueles prontamente disponíveis como COCO, VOC e ImageNet.
- Fácil de usar: Interfaces CLI e Python simples, mas poderosas, para uma experiência de treinamento direta.
- Flexibilidade de Hiperparâmetros: Uma ampla gama de hiperparâmetros personalizáveis para afinar o desempenho do modelo. Para um controle mais profundo, podes personalizar o próprio treinador.
- Treinamento na Nuvem: Treina em GPUs na nuvem através da Ultralytics Platform com métricas em tempo real e salvamento automático de pontos de verificação (checkpointing).
Principais Funcionalidades do Modo Train#
As seguintes são algumas das funcionalidades notáveis do modo Train do YOLO26:
- Download Automático de Dataset: As configurações de dataset com uma origem de download são baixadas automaticamente no primeiro uso, por exemplo,
yolo train data=coco8.yaml. Consulta a Visão geral de datasets para ver formatos e datasets suportados. - Suporte a Múltiplas GPUs: Escala os teus esforços de treinamento perfeitamente através de várias GPUs para acelerar o processo.
- Configuração de Hiperparâmetros: A opção de modificar hiperparâmetros através de arquivos de configuração YAML ou argumentos CLI.
- Visualização e Monitoramento: Rastreamento em tempo real das métricas de treinamento e visualização do processo de aprendizado para melhores insights.
Exemplos de uso#
Treina o YOLO26n no dataset COCO8 por 100 épocas com tamanho de imagem 640. O dispositivo de treinamento pode ser especificado usando o argumento device. Se nenhum argumento for passado, a GPU device=0 será usada quando disponível; caso contrário, device='cpu' será usada. Consulta a seção de Argumentos abaixo para obter uma lista completa de argumentos de treinamento.
No Windows, podes receber um RuntimeError ao iniciar o treinamento como um script. Adiciona um bloco if __name__ == "__main__": antes do teu código de treinamento para resolver isso.
O dispositivo é determinado automaticamente. Se uma GPU estiver disponível, ela será usada (dispositivo CUDA padrão 0); caso contrário, o treinamento começará na CPU.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.yaml") # build a new model from YAML
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Treinamento com Múltiplas GPUs#
O treinamento com múltiplas GPUs permite uma utilização mais eficiente dos recursos de hardware disponíveis ao distribuir a carga de treinamento por várias GPUs. Esta funcionalidade está disponível tanto através da API Python quanto da interface de linha de comando. Para ativar o treinamento com múltiplas GPUs, especifica os IDs dos dispositivos GPU que desejas usar.
Para treinar com 2 GPUs, dispositivos CUDA 0 e 1, usa os seguintes comandos. Expande para GPUs adicionais conforme necessário.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])Quando especificas vários dispositivos (por exemplo, device=[0, 1]), o Ultralytics cria internamente uma nova instância de treinador e executa torch.distributed.run nos bastidores. Isso funciona perfeitamente para o uso padrão da CLI e scripts Python não modificados.
No entanto, se o teu script contiver componentes personalizados — como um treinador, validador, dataset ou pipeline de aumento personalizados —, esses objetos não podem ser serializados automaticamente e transferidos para os subprocessos do DDP. Nesse caso, deves iniciar o teu script diretamente com torch.distributed.run:
python -m torch.distributed.run --nproc_per_node 2 your_training_script.pyO treinamento em GPU AMD utiliza uma compilação ROCm do PyTorch com a sintaxe padrão device=0 ou device=cuda:0. Consulta o
Guia de integração AMD para ver a instalação e o status atual de suporte ao MIGraphX, DirectML e Ryzen AI NPU.
O treinamento em GPU Intel usa device=xpu:0, ou vários IDs XPU com uma compilação do PyTorch que fornece XCCL.
Treino em NPU Huawei Ascend#
O Ultralytics suporta treinamento e validação em NPUs Huawei Ascend através de
torch_npu. Instala versões mutuamente compatíveis do CANN, PyTorch e torch_npu
seguindo o Guia de instalação do Ascend Extension for PyTorch,
e depois carrega o ambiente CANN antes de iniciar o Ultralytics:
source /usr/local/Ascend/ascend-toolkit/set_env.shfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")
# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")Os recursos de treinamento padrão, incluindo AMP, validação, criação de pontos de verificação (checkpointing) e retomada, utilizam a NPU ativa. O AutoBatch está disponível para treinamento com uma única NPU, enquanto vários IDs de NPU iniciam o treinamento distribuído através do HCCL. Consulta o Guia de integração Huawei Ascend para exportação e implantação de modelos após o treinamento.
Treinamento em GPU Ociosa#
O Treinamento em GPU Ociosa permite a seleção automática das GPUs menos utilizadas em sistemas com múltiplas GPUs, otimizando o uso de recursos sem seleção manual de GPU. Esta funcionalidade identifica as GPUs disponíveis com base em métricas de utilização e disponibilidade de VRAM.
Para selecionar e utilizar automaticamente a(s) GPU(s) mais ociosa(s) para treinamento, usa o parâmetro de dispositivo -1. Isso é particularmente útil em ambientes de computação compartilhados ou servidores com vários usuários.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)
# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])O algoritmo de auto-seleção prioriza GPUs com:
- Menores percentagens de utilização atual
- Maior memória disponível (VRAM livre)
- Menor temperatura e consumo de energia
Esta funcionalidade é especialmente valiosa em ambientes de computação partilhada ou ao executar múltiplos trabalhos de treinamento em diferentes modelos. Ela adapta-se automaticamente a condições variáveis do sistema, garantindo a alocação ideal de recursos sem intervenção manual.
Treinamento MPS no Apple Silicon#
Com o suporte para chips Apple silicon integrado nos modelos Ultralytics YOLO, agora é possível treinar os teus modelos em dispositivos que utilizam a poderosa estrutura Metal Performance Shaders (MPS). O MPS oferece uma maneira de alto desempenho de executar tarefas de computação e processamento de imagem no silício personalizado da Apple.
Para ativar o treinamento em chips Apple silicon, deves especificar 'mps' como o teu dispositivo ao iniciar o processo de treinamento. Abaixo está um exemplo de como podes fazer isto em Python e via linha de comando:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Ao aproveitar o poder computacional dos chips Apple Silicon, isto permite um processamento mais eficiente das tarefas de treinamento. Para orientações mais detalhadas e opções de configuração avançadas, consulta a documentação do PyTorch MPS.
Retomar Treinamentos Interrompidos#
Retomar o treinamento a partir de um estado salvo anteriormente é uma funcionalidade crucial ao trabalhar com modelos de deep learning. Isto pode ser útil em várias situações, como quando o processo de treinamento foi interrompido inesperadamente, ou quando desejas continuar a treinar um modelo com novos dados ou por mais épocas.
Quando o treinamento é retomado, o Ultralytics YOLO carrega os pesos do último modelo salvo e também restaura o estado do otimizador, o agendador de taxa de aprendizado e o número da época. Isto permite-te continuar o processo de treinamento de forma integrada a partir de onde parou.
Podes retomar facilmente o treinamento no Ultralytics YOLO definindo o argumento resume como True ao chamar o método train, e especificando o caminho para o arquivo .pt contendo os pesos do modelo parcialmente treinado.
Abaixo está um exemplo de como retomar um treinamento interrompido usando Python e via linha de comando:
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/last.pt") # load a partially trained model
# Resume training
results = model.train(resume=True)Ao definir resume=True, a função train continuará o treinamento de onde parou, utilizando o estado armazenado no arquivo 'path/to/last.pt'. Se o argumento resume for omitido ou definido como False, a função train iniciará uma nova sessão de treinamento.
Lembra-te de que os pontos de verificação são salvos no final de cada época por predefinição, ou em intervalos fixos usando o argumento save_period, por isso deves concluir pelo menos 1 época para retomar uma execução de treinamento.
Configurações de Treinamento#
As configurações de treinamento para modelos YOLO abrangem vários hiperparâmetros e configurações usados durante o processo de treinamento. Essas configurações influenciam o desempenho, a velocidade e a precisão do modelo. As principais configurações de treinamento incluem o tamanho do lote (batch size), a taxa de aprendizado, o momentum e a decaimento de peso (weight decay). Além disso, a escolha do otimizador, da função de perda e da composição do dataset de treinamento pode afetar o processo de treinamento. O ajuste cuidadoso e a experimentação com essas configurações são cruciais para otimizar o desempenho.
Otimizador MuSGD#
No YOLO26, o MuSGD é um otimizador híbrido que combina atualizações padrão de SGD com atualizações ortogonalizadas ao estilo Muon.
É recomendado para execuções de treinamento mais longas do YOLO26 e conjuntos de dados maiores, onde as atualizações ortogonalizadas do Muon podem ajudar a estabilizar a otimização.
Apenas os pesos lineares 2D e os filtros convolucionais 4D (redimensionados para 2D) recebem a atualização no estilo Muon em conjunto com o SGD, enquanto todos os outros parâmetros, como os pesos de normalização de lotes e os termos de viés, permanecem no SGD padrão.
Quando optimizer=auto é utilizado, o Ultralytics seleciona automaticamente o MuSGD para execuções de treinamento mais longas (tipicamente quando as iterações > 10000). Para execuções mais curtas, o treinador recorre ao AdamW.
Exemplo de uso:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDConsulta a implementação em ultralytics/optim/muon.py e a lógica de seleção automática de otimizador em BaseTrainer.build_optimizer.
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
model | str | None | Especifica o arquivo de modelo para treinamento. Aceita um caminho para um modelo pré-treinado .pt ou para um arquivo de configuração .yaml. Essencial para definir a estrutura do modelo ou inicializar pesos. |
data | str | None | Caminho para o YAML do dataset (por exemplo, coco8.yaml), que contém os caminhos para os dados de validação e de treino, os nomes das classes e o número de classes. A classificação, por sua vez, aceita um diretório de dataset ou o nome de um dataset integrado (por exemplo, imagenet10). |
epochs | int | 100 | Número total de épocas de treinamento. Cada epoch representa uma passagem completa por todo o dataset. Ajustar este valor pode afetar a duração do treinamento e o desempenho do modelo. |
time | float | None | Tempo máximo de treinamento em horas. Se definido, isso substitui o argumento epochs, permitindo que o treinamento pare automaticamente após a duração especificada. Útil para cenários de treinamento com restrição de tempo. |
patience | int | 100 | Número de épocas a aguardar sem melhora nas métricas de validação antes de interromper o treinamento antecipadamente. Ajuda a evitar o overfitting, interrompendo o treinamento quando o desempenho atinge um patamar. |
batch | int ou float | 16 | Batch size, com três modos: definido como um número inteiro (por exemplo, batch=16), modo automático para 60% de utilização da memória da GPU (batch=-1) ou modo automático com fração de utilização especificada (batch=0.70). |
imgsz | int | 640 | Tamanho da imagem de destino para o treinamento. As imagens são redimensionadas para quadrados com lados iguais ao valor especificado (se rect=False), preservando a proporção para modelos YOLO, mas não para o RT-DETR. Afeta a accuracy do modelo e a complexidade computacional. |
save | bool | True | Permite salvar os checkpoints de treinamento e os pesos finais do modelo. Útil para retomar o treinamento ou para a model deployment. |
save_period | int | -1 | Frequência de salvamento de checkpoints do modelo, especificada em épocas. Um valor de -1 desativa esta funcionalidade. Útil para salvar modelos intermédios durante sessões de treinamento longas. |
cache | bool | False | Permite o cache de imagens do dataset na memória (True/ram), em disco (disk) ou o desativa (False). Melhora a velocidade de treinamento reduzindo o I/O de disco ao custo de um maior uso de memória. |
device | int ou str ou list | None | Especifica o(s) dispositivo(s) computacional(is) para o treinamento: uma única GPU (device=0), múltiplas GPUs (device=[0,1]), CPU (device=cpu), MPS para Apple silicon (device=mps), Huawei Ascend NPU (device=npu:0 ou device=npu:0,1) ou seleção automática de GPU ociosa (device=-1) ou múltiplas GPUs ociosas (device=[-1,-1]). |
workers | int | 8 | Número de threads de trabalho para o carregamento de dados (por RANK em treinamento com múltiplas GPUs). Influencia a velocidade de pré-processamento de dados e o fornecimento ao modelo, sendo especialmente útil em configurações com múltiplas GPUs. |
project | str | None | Nome do diretório do projeto onde as saídas do treinamento são salvas. Permite o armazenamento organizado de diferentes experimentos. |
name | str | None | Nome da execução do treinamento. Usado para criar um subdiretório dentro da pasta do projeto, onde os logs e saídas do treinamento são armazenados. |
exist_ok | bool | False | Se True, permite a substituição de um diretório de projeto/nome existente. Útil para experimentação iterativa sem precisar limpar manualmente as saídas anteriores. |
save_dir | str | None | Especifica o diretório exato onde as saídas da execução são salvas, substituindo a combinação project/name. O caminho é usado exatamente como está, sem incremento automático, portanto, execuções consecutivas reutilizam o mesmo diretório. |
pretrained | bool ou str | True | Determina se o treinamento deve ser iniciado a partir de pesos pré-treinados. Pode ser um valor booleano ou um caminho em string para os pesos a serem carregados. pretrained=False treina a partir de pesos inicializados aleatoriamente, mantendo a arquitetura do modelo. |
cls_remap | bool | True | Ao fazer o fine-tuning entre conjuntos de dados, copia as linhas do cabeçote de classificação pré-treinado para o novo modelo onde os nomes das classes correspondem, para que as classes sobrepostas mantenham seu viés aprendido, além de seus pesos quando a largura do cabeçote não for alterada. Aplica-se quer a contagem de classes seja diferente ou igual com uma ordem de classes diferente. |
optimizer | str | 'auto' | Escolha do otimizador para o treinamento. As opções incluem SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp ou auto para seleção automática com base na configuração do modelo. Afeta a velocidade de convergência e a estabilidade. |
seed | int | 0 | Define a semente aleatória para o treinamento, garantindo a reprodutibilidade dos resultados entre execuções com as mesmas configurações. |
deterministic | bool | True | Força o uso de algoritmos determinísticos, garantindo a reprodutibilidade, mas podendo afetar o desempenho e a velocidade devido à restrição de algoritmos não determinísticos. |
verbose | bool | True | Ativa a saída detalhada durante o treinamento, exibindo barras de progresso, métricas por época e informações adicionais de treinamento no console. |
single_cls | bool | False | Trata todas as classes em conjuntos de dados multiclasse como uma única classe durante o treinamento. Útil para tarefas de classificação binária ou quando o foco é a presença de objetos em vez da classificação. |
classes | list[int] | None | Especifica uma lista de IDs de classes para treinar. Útil para filtrar e focar apenas em certas classes durante o treinamento. |
rect | bool | False | Ativa a estratégia de preenchimento mínimo (minimum padding)—as imagens em um lote são preenchidas minimamente para atingir um tamanho comum, com o lado mais longo igual a imgsz. Pode melhorar a eficiência e a velocidade, mas pode afetar a precisão do modelo. |
multi_scale | float | 0.0 | Varia aleatoriamente imgsz a cada lote por +/- multi_scale (por exemplo, 0.25 -> 0.75x a 1.25x), arredondando para múltiplos do passo do modelo; 0.0 desativa o treinamento em multiescala. |
cos_lr | bool | False | Utiliza um agendador de learning rate em cosseno, ajustando a taxa de aprendizado seguindo uma curva de cosseno ao longo das épocas. Ajuda a gerenciar a taxa de aprendizado para uma melhor convergência. |
close_mosaic | int | 10 | Desativa a data augmentation de mosaico nas últimas N épocas para estabilizar o treinamento antes da conclusão. Definir como 0 desativa esse recurso. |
resume | bool | False | Retoma o treinamento a partir do último checkpoint salvo. Carrega automaticamente os pesos do modelo, o estado do otimizador e a contagem de épocas, continuando o treinamento de forma contínua. |
amp | bool | True | Ativa o treinamento com Mixed Precision Automática (AMP), reduzindo o uso de memória e possivelmente acelerando o treinamento com impacto mínimo na precisão. |
fraction | float | 1.0 | Especifica a fração do conjunto de dados a ser usada para treinamento. Permite treinar em um subconjunto do conjunto de dados completo, útil para experimentos ou quando os recursos são limitados. |
profile | bool | False | Ativa a criação de perfil (profiling) das velocidades de ONNX e TensorRT durante o treinamento, útil para otimizar a implantação do modelo. |
freeze | int ou list | None | Congela as primeiras N camadas do modelo ou camadas especificadas por índice, reduzindo o número de parâmetros treináveis. Útil para ajuste fino ou transfer learning. |
lr0 | float | 0.01 | Taxa de aprendizado inicial (ou seja, SGD=1E-2, Adam=1E-3). Ajustar esse valor é crucial para o processo de otimização, influenciando a rapidez com que os pesos do modelo são atualizados. |
lrf | float | 0.01 | Taxa de aprendizado final como uma fração da taxa inicial = (lr0 * lrf), usada em conjunto com os agendadores para ajustar a taxa de aprendizado ao longo do tempo. |
momentum | float | 0.937 | Fator de momento para SGD ou beta1 para Adam optimizers, influenciando a incorporação de gradientes passados na atualização atual. |
weight_decay | float | 0.0005 | Termo de regularization L2, penalizando pesos grandes para evitar o overfitting. |
warmup_epochs | float | 3.0 | Número de épocas para aquecimento (warmup) da taxa de aprendizado, aumentando gradualmente a taxa de aprendizado de um valor baixo até a taxa de aprendizado inicial para estabilizar o treinamento desde o início. |
warmup_momentum | float | 0.8 | Momentum inicial para a fase de aquecimento, ajustando-se gradualmente ao momentum definido durante o período de aquecimento. |
warmup_bias_lr | float | 0.1 | Taxa de aprendizado para parâmetros de bias durante a fase de aquecimento, ajudando a estabilizar o treinamento do modelo nas épocas iniciais. |
distill_model | str | None | Caminho para um checkpoint de modelo professor (por exemplo, yolo26x.pt) para destilação de conhecimento. Quando definido, o modelo aluno é treinado com uma perda de destilação extra guiada pelo professor congelado. |
dis | float | 6.0 | Peso da perda de destilação adicionada às perdas de detecção padrão. Valores mais altos aumentam a influência da orientação de recursos do professor. |
box | float | 7.5 | Peso do componente de perda de caixa na loss function, influenciando quanta ênfase é colocada na previsão precisa das coordenadas da bounding box. |
cls | float | 0.5 | Peso da perda de classificação na função de perda total, afetando a importância da previsão correta da classe em relação a outros componentes. |
cls_pw | float | 0.0 | Potência para a ponderação de classes para lidar com o desequilíbrio de classes usando a frequência inversa de classes. 0.0 desativa a ponderação de classes, 1.0 aplica a ponderação de frequência inversa total. Valores entre 0 e 1 fornecem ponderação parcial. |
dfl | float | 1.5 | Peso da distribuição focal loss (DFL), um termo de localização de bounding box que faz a regressão das distâncias das bordas da caixa. |
pose | float | 12.0 | Peso da perda de pose em modelos treinados para estimativa de pose, influenciando a ênfase na previsão precisa dos pontos-chave de pose. |
kobj | float | 1.0 | Peso da perda de objetividade de pontos-chave (keypoint objectness loss) em modelos de estimativa de pose, equilibrando a confiança da detecção com a precisão da pose. |
rle | float | 1.0 | Peso da perda de estimativa de log-verossimilhança residual em modelos de estimativa de pose, afetando a precisão da localização dos pontos-chave. |
angle | float | 1.0 | Peso da perda de ângulo em modelos obb, afetando a precisão das previsões de ângulo da caixa delimitadora orientada. |
dlog | float | 1.0 | Peso da perda logarítmica escala-invariante (SILog) em modelos de estimativa de profundidade, o termo principal que impulsiona a precisão de profundidade. |
dgrad | float | 0.5 | Peso da perda de gradiente em modelos de estimativa de profundidade, penalizando erros nas bordas de profundidade e incentivando limites de superfície mais nítidos. |
dlam | float | 1.0 | Fator de foco de variância da perda SILog em modelos de estimativa de profundidade. 1.0 torna a perda totalmente invariável à escala, enquanto 0.0 a reduz para o log-RMSE simples. |
nbs | int | 64 | Tamanho de lote nominal para normalização da perda. |
overlap_mask | bool | True | Determina se as máscaras de objeto devem ser mescladas em uma única máscara para treinamento ou mantidas separadas para cada objeto. Em caso de sobreposição, a máscara menor é sobreposta à máscara maior durante a mesclagem. |
mask_ratio | int | 4 | Taxa de downsample para máscaras de segmentação, afetando a resolução das máscaras usadas durante o treinamento. |
dropout | float | 0.0 | Taxa de dropout para regularização em tarefas de classificação, evitando o overfitting ao omitir unidades aleatoriamente durante o treinamento. |
val | bool | True | Ativa a validação durante o treinamento, permitindo a avaliação periódica do desempenho do modelo em um conjunto de dados separado. |
plots | bool | True | Gera e salva gráficos de métricas de treinamento e validação, bem como exemplos de previsão, fornecendo insights visuais sobre o desempenho do modelo e a progressão do aprendizado. |
compile | bool ou str | False | Ativa a compilação de grafos PyTorch 2.x torch.compile com backend='inductor'. Aceita True → "default", False → desativa, ou um modo de string como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Retorna para o modo ávido (eager) com um aviso se não for suportado. |
channels_last | bool | False | Usa o formato de memória channels_last (NHWC) para convoluções durante o treinamento, acelerando GPUs CUDA Tensor Core sem alteração nos resultados. É ignorado automaticamente em CPU e MPS, onde não oferece benefícios. |
max_det | int | 300 | Especifica o número máximo de objetos retidos durante a fase de validação do treinamento. |
O argumento batch pode ser configurado de três maneiras:
- Tamanho de Lote Fixo: Define um valor inteiro (por exemplo,
batch=16), especificando diretamente o número de imagens por lote. - Modo Automático (60% da Memória da GPU): Usa
batch=-1para ajustar automaticamente o tamanho do lote para aproximadamente 60% de utilização da memória CUDA. - Modo Automático com Fração de Utilização: Define um valor de fração (por exemplo,
batch=0.70) para ajustar o tamanho do lote com base na fração especificada de uso da memória da GPU. - Tentativa Automática de OOM: Se ocorrer um erro de falta de memória CUDA (out-of-memory) durante a primeira época, o treinador reduz automaticamente o tamanho do lote pela metade e tenta novamente (até 3 vezes). Isso se aplica apenas ao treinamento em uma única GPU; o treinamento multi-GPU (DDP) gerará o erro imediatamente.
Configurações de Aumentação e Hiperparâmetros#
As técnicas de aumento (augmentation) são essenciais para melhorar a robustez e o desempenho dos modelos YOLO ao introduzir variabilidade nos dados de treinamento, ajudando o modelo a generalizar melhor para dados não vistos. A tabela seguinte descreve o propósito e o efeito de cada argumento de aumento:
| Argumento | Tipo | Predefinição | Tarefas Suportadas | Intervalo | Descrição |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Ajusta a matiz (hue) da imagem por uma fração da roda de cores, introduzindo variabilidade de cor. Ajuda o modelo a generalizar em diferentes condições de iluminação. |
hsv_s | float | 0.7 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Altera a saturação da imagem por uma fração, afetando a intensidade das cores. Útil para simular diferentes condições ambientais. |
hsv_v | float | 0.4 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Modifica o valor (brilho) da imagem por uma fração, ajudando o modelo a ter um bom desempenho sob diversas condições de iluminação. |
degrees | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 180 | Rotaciona a imagem aleatoriamente dentro do intervalo de graus especificado, melhorando a capacidade do modelo de reconhecer objetos em várias orientações. |
translate | float | 0.1 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Translada a imagem horizontal e verticalmente por uma fração do tamanho da imagem, ajudando a aprender a detectar objetos parcialmente visíveis. |
scale | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0 - 1 | Escala a imagem por um fator de ganho, simulando objetos a diferentes distâncias da câmera. |
shear | float | 0 | detect, segment, semantic, depth, pose, obb | -180 - +180 | Inclina a imagem por um grau especificado, imitando o efeito de objetos sendo vistos de diferentes ângulos. |
perspective | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 0.001 | Aplica uma transformação de perspectiva aleatória à imagem, aprimorando a capacidade do modelo de entender objetos no espaço 3D. |
flipud | float | 0 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Inverte a imagem de cima para baixo com a probabilidade especificada, aumentando a variabilidade dos dados sem afetar as características do objeto. |
fliplr | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Inverte a imagem da esquerda para a direita com a probabilidade especificada, útil para aprender objetos simétricos e aumentar a diversidade do conjunto de dados. |
bgr | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Inverte os canais da imagem de RGB para BGR com a probabilidade especificada, útil para aumentar a robustez a ordenações incorretas de canais. |
mosaic | float | 1 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Combina quatro imagens de treinamento em uma, simulando diferentes composições de cena e interações de objetos. Altamente eficaz para a compreensão de cenas complexas. |
mixup | float | 0 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Mistura duas imagens e seus rótulos, criando uma imagem composta. Melhora a capacidade do modelo de generalizar ao introduzir ruído de rótulo e variabilidade visual. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Combina porções de duas imagens, criando uma mistura parcial enquanto mantém regiões distintas. Aumenta a robustez do modelo ao criar cenários de oclusão. |
copy_paste | float | 0 | segment | 0.0 - 1.0 | Copia e cola objetos entre imagens para aumentar as instâncias de objetos. |
copy_paste_mode | str | flip | segment | - | Especifica a estratégia copy-paste a ser usada. As opções incluem 'flip' e 'mixup'. |
auto_augment | str | randaugment | classify | - | Aplica uma política de aumento predefinida ('randaugment', 'autoaugment' ou 'augmix') para melhorar o desempenho do modelo por meio da diversidade visual. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Apaga aleatoriamente regiões da imagem durante o treinamento para incentivar o modelo a focar em características menos óbvias. |
augmentations | list | None | detect, segment, semantic, pose, obb | - | Transformações personalizadas de Albumentations para aumento de dados avançado (apenas API Python). Aceita uma lista de objetos de transformação para necessidades de aumento especializadas. |
Estas configurações podem ser ajustadas para atender aos requisitos específicos do conjunto de dados e da tarefa em questão. Experimentar com diferentes valores pode ajudar a encontrar a estratégia de aumento ideal que leva ao melhor desempenho do modelo.
Para mais informações sobre operações de aumento de treinamento, consulta a seção de referência.
Registro (Logging)#
Ao treinar um modelo YOLO26, podes achar útil acompanhar o desempenho do modelo ao longo do tempo. É aqui que entram os registos (logging). O Ultralytics YOLO oferece suporte a três tipos de registadores (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 programadores rastrear, comparar, explicar e otimizar experimentos e modelos. Ele fornece funcionalidades como métricas em tempo real, diffs de código e rastreamento de hiperparâmetros.
Para usar o Comet:
# pip install comet_ml
import comet_ml
comet_ml.init()Lembre-se de entrar na sua conta Comet no site deles e obter sua chave de API. Você precisará adicioná-la à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 na partilha eficiente de recursos. Foi concebida para ajudar equipas a gerir, executar e reproduzir o seu trabalho de ML de forma mais eficiente.
Para usar o ClearML:
# pip install clearml
import clearml
clearml.browser_login()Após executar este script, você precisará entrar na sua conta ClearML no navegador e autenticar sua sessão.
TensorBoard#
TensorBoard é um kit de ferramentas de visualização para o TensorFlow. Permite-te visualizar o teu grafo do TensorFlow, traçar métricas quantitativas sobre a execução do teu grafo e mostrar dados adicionais como imagens que passam por ele.
Para usar o TensorBoard no Google Colab:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryPara usar o TensorBoard localmente, executa o comando abaixo e visualiza os resultados em localhost:6006.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryIsso carregará o TensorBoard e o direcionará para o diretório onde seus logs de treinamento estão salvos.
Após configurar seu logger, você pode prosseguir com o treinamento do seu modelo. Todas as métricas de treinamento serão registradas automaticamente na plataforma escolhida, e você poderá acessar esses logs para monitorar o desempenho do seu modelo ao longo do tempo, comparar diferentes modelos e identificar áreas para melhoria.
O que vem a seguir#
Valida o teu modelo treinado contra dados reservados para verificar a sua precisão no mundo real, depois exporta-o para ONNX, TensorRT ou outro formato de implantação. Vais treinar com os teus próprios dados em vez de COCO8? Formata-os primeiro com o Guia de Datasets.
FAQ#
Posso treinar sem uma GPU local?#
Sim. O treinamento na nuvem da Ultralytics Platform inclui créditos gratuitos para começar. Carrega o teu dataset, seleciona um modelo e uma GPU, e treina diretamente a partir do navegador.
Como posso treinar um modelo de detecção de objetos usando o Ultralytics YOLO26?#
Para treinar um modelo de detecção de objetos usando o Ultralytics YOLO26, você pode usar a API Python ou a CLI. Abaixo está um exemplo para ambos:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Para mais detalhes, consulta a seção Configurações de Treinamento.
Quais são os principais recursos do modo de Treinamento do Ultralytics YOLO26?#
Os principais recursos do modo de Treinamento do Ultralytics YOLO26 incluem:
- Download Automático de Conjuntos de Dados: Baixa automaticamente conjuntos de dados padrão como COCO, VOC e ImageNet.
- Suporte a Multi-GPU: Escala o treinamento em múltiplas GPUs para processamento mais rápido.
- Configuração de Hiperparâmetros: Personalize hiperparâmetros por meio de arquivos YAML ou argumentos da CLI.
- Visualização e Monitoramento: Rastreamento em tempo real de métricas de treinamento para melhores insights.
Estes recursos tornam o treinamento eficiente e personalizável às tuas necessidades. Para mais detalhes, consulta a seção Recursos Principais do Modo de Treinamento.
Como retomo o treinamento de uma sessão interrompida no Ultralytics YOLO26?#
Para retomar o treinamento a partir de uma sessão interrompida, define o argumento resume como True e especifica o caminho para o último ponto de verificação (checkpoint) salvo.
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)Consulta a seção sobre Retomada de Treinamentos Interrompidos para mais informações.
Como treino um modelo em um conjunto de dados desbalanceado?#
O desequilíbrio de classes ocorre quando algumas classes têm significativamente menos exemplos do que outras nos teus dados de treinamento. Isso pode fazer com que o modelo tenha um desempenho fraco em classes raras. O Ultralytics YOLO suporta ponderação de classes através do argumento cls_pw para resolver esse problema.
O argumento cls_pw controla a potência da ponderação de classes com base na frequência inversa das classes:
cls_pw=0.0(predefinição): Desativa a ponderação de classescls_pw=1.0: Aplica ponderação de frequência inversa total- Valores entre
0.0e1.0: Fornecem ponderação parcial para desequilíbrio moderado
Os pesos das classes são calculados como (1.0 / class_counts) ^ cls_pw e normalizados para que a sua média seja igual a 1,0.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)Começa com cls_pw=0.25 para datasets moderadamente desequilibrados e aumenta para 1.0 se as classes raras continuarem a ter um desempenho fraco. Podes verificar os pesos de classe calculados nos registos de treinamento para verificar a distribuição de pesos.
Posso treinar modelos YOLO26 em chips de silício da Apple?#
Sim, o Ultralytics YOLO26 suporta treinamento em chips de silício da Apple utilizando o framework Metal Performance Shaders (MPS). Especifique 'mps' como seu dispositivo de treinamento.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Para mais detalhes, consulta a seção Treinamento Apple Silicon MPS.
Quais são as configurações comuns de treinamento e como as configuro?#
O Ultralytics YOLO26 permite que você configure uma variedade de definições de treinamento, como tamanho do lote, taxa de aprendizado, épocas e mais, por meio de argumentos. Aqui está uma breve visão geral:
| Argumento | Predefinição | Descrição |
|---|---|---|
model | None | Caminho para o arquivo do modelo para treinamento. |
data | None | Caminho para o YAML do dataset (por exemplo, coco8.yaml), ou um diretório ou nome de dataset (por exemplo, imagenet10) para classificação. |
epochs | 100 | Número total de épocas de treinamento. |
batch | 16 | Tamanho do lote (batch size), ajustável como inteiro ou modo automático. |
imgsz | 640 | Tamanho de imagem alvo para o treinamento. |
device | None | Dispositivo(s) computacional(is) para treinamento como cpu, 0, 0,1 ou mps. |
save | True | Habilita o salvamento de checkpoints de treinamento e pesos finais do modelo. |
Para um guia aprofundado sobre as configurações de treinamento, consulta a seção Configurações de Treinamento.