YOLO Vision 2026:

Treinamento de Modelo com Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

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.

Erro de Multi-Processamento no Windows

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.

Exemplo de Treinamento com GPU Única e CPU

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.

Exemplo de Treinamento com Múltiplas GPUs

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])
Treinamento com Múltiplas GPUs com Código Personalizado

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.py

O 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.sh
Exemplo de Treino em NPU Ascend
from 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.

Exemplo de Treinamento em GPU Ociosa

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:

  1. Menores percentagens de utilização atual
  2. Maior memória disponível (VRAM livre)
  3. 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:

Exemplo de Treinamento MPS
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:

Exemplo de Retomar Treinamento
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=MuSGD

Consulta a implementação em ultralytics/optim/muon.py e a lógica de seleção automática de otimizador em BaseTrainer.build_optimizer.

ArgumentoTipoPredefiniçãoDescrição
modelstrNoneEspecifica 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.
datastrNoneCaminho 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).
epochsint100Nú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.
timefloatNoneTempo 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.
patienceint100Nú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.
batchint ou float16Batch 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).
imgszint640Tamanho 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.
saveboolTruePermite salvar os checkpoints de treinamento e os pesos finais do modelo. Útil para retomar o treinamento ou para a model deployment.
save_periodint-1Frequê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.
cacheboolFalsePermite 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.
deviceint ou str ou listNoneEspecifica 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]).
workersint8Nú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.
projectstrNoneNome do diretório do projeto onde as saídas do treinamento são salvas. Permite o armazenamento organizado de diferentes experimentos.
namestrNoneNome 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_okboolFalseSe 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_dirstrNoneEspecifica 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.
pretrainedbool ou strTrueDetermina 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_remapboolTrueAo 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.
optimizerstr'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.
seedint0Define a semente aleatória para o treinamento, garantindo a reprodutibilidade dos resultados entre execuções com as mesmas configurações.
deterministicboolTrueForç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.
verboseboolTrueAtiva a saída detalhada durante o treinamento, exibindo barras de progresso, métricas por época e informações adicionais de treinamento no console.
single_clsboolFalseTrata 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.
classeslist[int]NoneEspecifica uma lista de IDs de classes para treinar. Útil para filtrar e focar apenas em certas classes durante o treinamento.
rectboolFalseAtiva 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_scalefloat0.0Varia 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_lrboolFalseUtiliza 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_mosaicint10Desativa a data augmentation de mosaico nas últimas N épocas para estabilizar o treinamento antes da conclusão. Definir como 0 desativa esse recurso.
resumeboolFalseRetoma 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.
ampboolTrueAtiva 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.
fractionfloat1.0Especifica 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.
profileboolFalseAtiva a criação de perfil (profiling) das velocidades de ONNX e TensorRT durante o treinamento, útil para otimizar a implantação do modelo.
freezeint ou listNoneCongela 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.
lr0float0.01Taxa 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.
lrffloat0.01Taxa 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.
momentumfloat0.937Fator de momento para SGD ou beta1 para Adam optimizers, influenciando a incorporação de gradientes passados na atualização atual.
weight_decayfloat0.0005Termo de regularization L2, penalizando pesos grandes para evitar o overfitting.
warmup_epochsfloat3.0Nú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_momentumfloat0.8Momentum inicial para a fase de aquecimento, ajustando-se gradualmente ao momentum definido durante o período de aquecimento.
warmup_bias_lrfloat0.1Taxa de aprendizado para parâmetros de bias durante a fase de aquecimento, ajudando a estabilizar o treinamento do modelo nas épocas iniciais.
distill_modelstrNoneCaminho 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.
disfloat6.0Peso 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.
boxfloat7.5Peso do componente de perda de caixa na loss function, influenciando quanta ênfase é colocada na previsão precisa das coordenadas da bounding box.
clsfloat0.5Peso 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_pwfloat0.0Potê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.
dflfloat1.5Peso 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.
posefloat12.0Peso da perda de pose em modelos treinados para estimativa de pose, influenciando a ênfase na previsão precisa dos pontos-chave de pose.
kobjfloat1.0Peso 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.
rlefloat1.0Peso 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.
anglefloat1.0Peso da perda de ângulo em modelos obb, afetando a precisão das previsões de ângulo da caixa delimitadora orientada.
dlogfloat1.0Peso da perda logarítmica escala-invariante (SILog) em modelos de estimativa de profundidade, o termo principal que impulsiona a precisão de profundidade.
dgradfloat0.5Peso 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.
dlamfloat1.0Fator 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.
nbsint64Tamanho de lote nominal para normalização da perda.
overlap_maskboolTrueDetermina 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_ratioint4Taxa de downsample para máscaras de segmentação, afetando a resolução das máscaras usadas durante o treinamento.
dropoutfloat0.0Taxa de dropout para regularização em tarefas de classificação, evitando o overfitting ao omitir unidades aleatoriamente durante o treinamento.
valboolTrueAtiva a validação durante o treinamento, permitindo a avaliação periódica do desempenho do modelo em um conjunto de dados separado.
plotsboolTrueGera 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.
compilebool ou strFalseAtiva 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_lastboolFalseUsa 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_detint300Especifica o número máximo de objetos retidos durante a fase de validação do treinamento.
Nota sobre as configurações de tamanho de lote (batch-size)

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=-1 para 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:

ArgumentoTipoPredefiniçãoTarefas SuportadasIntervaloDescrição
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Ajusta 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_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Altera a saturação da imagem por uma fração, afetando a intensidade das cores. Útil para simular diferentes condições ambientais.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Modifica o valor (brilho) da imagem por uma fração, ajudando o modelo a ter um bom desempenho sob diversas condições de iluminação.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Rotaciona a imagem aleatoriamente dentro do intervalo de graus especificado, melhorando a capacidade do modelo de reconhecer objetos em várias orientações.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Translada a imagem horizontal e verticalmente por uma fração do tamanho da imagem, ajudando a aprender a detectar objetos parcialmente visíveis.
scalefloat0.5detect, segment, semantic, depth, classify, pose, obb0 - 1Escala a imagem por um fator de ganho, simulando objetos a diferentes distâncias da câmera.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Inclina a imagem por um grau especificado, imitando o efeito de objetos sendo vistos de diferentes ângulos.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Aplica uma transformação de perspectiva aleatória à imagem, aprimorando a capacidade do modelo de entender objetos no espaço 3D.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Inverte a imagem de cima para baixo com a probabilidade especificada, aumentando a variabilidade dos dados sem afetar as características do objeto.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Inverte 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.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Inverte os canais da imagem de RGB para BGR com a probabilidade especificada, útil para aumentar a robustez a ordenações incorretas de canais.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Combina 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.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Mistura 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.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Combina 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_pastefloat0segment0.0 - 1.0Copia e cola objetos entre imagens para aumentar as instâncias de objetos.
copy_paste_modestrflipsegment-Especifica a estratégia copy-paste a ser usada. As opções incluem 'flip' e 'mixup'.
auto_augmentstrrandaugmentclassify-Aplica uma política de aumento predefinida ('randaugment', 'autoaugment' ou 'augmix') para melhorar o desempenho do modelo por meio da diversidade visual.
erasingfloat0.4classify0.0 - 1.0Apaga aleatoriamente regiões da imagem durante o treinamento para incentivar o modelo a focar em características menos óbvias.
augmentationslistNonedetect, 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.

Info

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:

Exemplo
# 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:

Exemplo
# 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:

Exemplo
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Para usar o TensorBoard localmente, executa o comando abaixo e visualiza os resultados em localhost:6006.

Exemplo
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Isso 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:

Exemplo de Treinamento com GPU Única e CPU
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.

Exemplo de Retomar Treinamento
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 classes
  • cls_pw=1.0: Aplica ponderação de frequência inversa total
  • Valores entre 0.0 e 1.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.

Treinamento em Conjunto de Dados Desbalanceado
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)
Dica

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.

Exemplo de Treinamento MPS
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:

ArgumentoPredefiniçãoDescrição
modelNoneCaminho para o arquivo do modelo para treinamento.
dataNoneCaminho para o YAML do dataset (por exemplo, coco8.yaml), ou um diretório ou nome de dataset (por exemplo, imagenet10) para classificação.
epochs100Número total de épocas de treinamento.
batch16Tamanho do lote (batch size), ajustável como inteiro ou modo automático.
imgsz640Tamanho de imagem alvo para o treinamento.
deviceNoneDispositivo(s) computacional(is) para treinamento como cpu, 0, 0,1 ou mps.
saveTrueHabilita 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.

Comentários