Ultralytics YOLO27:
Get Started

Treinamento de modelos com o Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Introdução#

Treinar um modelo de aprendizado profundo envolve fornecer dados e ajustar os parâmetros para que ele possa fazer previsões precisas. O modo de treinamento do Ultralytics YOLO26 foi desenvolvido para treinar modelos de detecção de objetos de forma eficaz e eficiente, aproveitando ao máximo os recursos do hardware moderno. Este guia aborda todos os detalhes necessários para começar a treinar seus próprios modelos usando o conjunto robusto de recursos do YOLO26. Se você ainda não instalou o Ultralytics, comece pelo Guia de início rápido.

Confira a prévia inédita do YOLO27 para ver exemplos de treinamento planejados.



Assista: Como treinar um modelo YOLO com seu conjunto de dados personalizado no Google Colab.

Por que escolher o Ultralytics YOLO para treinamento?#

Aqui estão alguns bons motivos para escolher o modo de treinamento do YOLO26:

  • Eficiência: Aproveite ao máximo seu hardware, seja em uma configuração com uma única GPU ou em uma escala que utilize várias GPUs.
  • Versatilidade: Treine com conjuntos de dados personalizados, além dos disponíveis, como COCO, VOC e ImageNet.
  • Facilidade de uso: Interfaces simples, mas poderosas, de CLI e Python para uma experiência de treinamento descomplicada.
  • Flexibilidade de hiperparâmetros: Uma ampla variedade de hiperparâmetros personalizáveis para ajustar o desempenho do modelo. Para ter mais controle, você pode personalizar o treinador.
  • Treinamento na nuvem: Treine em GPUs na nuvem pela plataforma Ultralytics, com métricas em tempo real e salvamento automático de checkpoints.

Principais recursos do modo de treinamento#

Veja a seguir alguns recursos importantes do modo de treinamento do YOLO26:

  • Download automático de conjuntos de dados: As configurações de conjuntos de dados que incluem uma fonte de download são baixadas automaticamente no primeiro uso, por exemplo, yolo train data=coco8.yaml. Consulte a Visão geral dos conjuntos de dados para conhecer os formatos e conjuntos de dados compatíveis.
  • Suporte a várias GPUs: Amplie facilmente o treinamento para várias GPUs e acelere o processo.
  • Configuração de hiperparâmetros: É possível modificar os hiperparâmetros por meio de arquivos de configuração YAML ou argumentos da CLI.
  • Visualização e monitoramento: Acompanhe as métricas de treinamento em tempo real e visualize o processo de aprendizado para obter melhores insights.

Exemplos de uso#

Treine o YOLO26n no conjunto de dados COCO8 por 100 épocas, com tamanho de imagem 640. Você pode especificar o dispositivo de treinamento usando o argumento device. Se nenhum argumento for informado, a GPU device=0 será usada quando disponível; caso contrário, será usado device='cpu'. Consulte a seção Argumentos abaixo para ver a lista completa de argumentos de treinamento.

Erro de multiprocessamento no Windows

No Windows, você pode receber um RuntimeError ao iniciar o treinamento como um script. Para resolver o problema, adicione um bloco if __name__ == "__main__": antes do código de treinamento.

Exemplo de treinamento com uma GPU ou CPU

O dispositivo é determinado automaticamente. Se houver uma GPU disponível, ela será usada (dispositivo CUDA 0 por padrão); caso contrário, o treinamento será iniciado na CPU.

from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n.yaml")  # crie um novo modelo a partir de YAML
model = YOLO("yolo26n.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # crie a partir de YAML e transfira os pesos

# Treinar o modelo
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Treinamento com várias GPUs#

O treinamento com várias GPUs permite utilizar os recursos de hardware disponíveis com mais eficiência, distribuindo a carga de treinamento entre várias GPUs. Esse recurso está disponível tanto pela API Python quanto pela interface de linha de comando. Para ativar o treinamento com várias GPUs, especifique os IDs dos dispositivos GPU que deseja usar.

Exemplo de treinamento com várias GPUs

Para treinar com duas GPUs, os dispositivos CUDA 0 e 1, use os comandos a seguir. Amplie para GPUs adicionais conforme necessário.

from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)

# Treine o modelo com duas GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Treine o modelo com as duas GPUs mais ociosas
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Suporte a várias GPUs no Windows

O treinamento com várias GPUs não funciona no Windows com os pacotes oficiais do PyTorch para torch>=2.4. O Ultralytics inicia o DDP por meio de torch.distributed.run, cuja etapa de rendezvous cria um TCPStore que usa o backend libuv por padrão desde o PyTorch 2.4; os pacotes oficiais do Windows são compilados sem libuv. O treinamento é encerrado imediatamente com:

RuntimeError: use_libuv was requested but PyTorch was built without libuv support

Definir USE_LIBUV=0 não resolve o problema, porque o rendezvous cria diretamente o TCPStore, e esse caminho de código nunca lê a variável. Treine no Linux ou no WSL2 para usar várias GPUs, ou treine com uma única GPU usando device=0 no Windows.

Treinamento com várias GPUs e código personalizado

Quando você especifica vários dispositivos (por exemplo, device=[0, 1]), o Ultralytics inicia internamente uma nova instância do treinador e executa torch.distributed.run nos bastidores. Isso funciona perfeitamente com o uso padrão da CLI e com scripts Python sem modificações.

No entanto, se o seu script tiver componentes personalizados, como um treinador, validador, conjunto de dados ou pipeline de aumento de dados personalizados, esses objetos não poderão ser serializados e transferidos automaticamente para os subprocessos DDP. Nesse caso, você deve iniciar o script diretamente com torch.distributed.run:

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

O treinamento em GPU AMD usa uma versão do PyTorch com ROCm e a sintaxe padrão device=0 ou device=cuda:0. Consulte o guia de integração com AMD para obter informações sobre a instalação do ROCm, treinamento com várias GPUs, observações sobre AMP e inferência do MIGraphX com modelos exportados.

O treinamento em GPU Intel usa device=xpu:0 ou vários IDs XPU com uma versão do PyTorch que fornece XCCL.

Treinamento em NPU Huawei Ascend#

O Ultralytics oferece suporte ao treinamento e à validação em NPUs Huawei Ascend por meio de torch_npu. Instale versões compatíveis entre si do CANN, PyTorch e torch_npu seguindo o guia de instalação da extensão Ascend para PyTorch e, em seguida, carregue o ambiente CANN antes de iniciar o Ultralytics:

source /usr/local/Ascend/ascend-toolkit/set_env.sh
Exemplo de treinamento em NPU Ascend
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Treine em uma NPU Ascend
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Treine em duas NPUs Ascend com HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

Os recursos padrão de treinamento, incluindo AMP, validação, salvamento de checkpoints e retomada, usam 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 por meio do HCCL. Consulte o guia de integração com Huawei Ascend para saber como exportar e implantar modelos após o treinamento.

Treinamento em GPU ociosa#

O treinamento em GPU ociosa seleciona automaticamente as GPUs menos utilizadas em sistemas com várias GPUs, otimizando o uso de recursos sem exigir a seleção manual de uma GPU. Esse recurso identifica as GPUs disponíveis com base nas métricas de utilização e na disponibilidade de VRAM.

Exemplo de treinamento em GPU ociosa

Para selecionar e usar automaticamente a(s) GPU(s) mais ociosa(s) no treinamento, use o parâmetro de dispositivo -1. Isso é especialmente útil em ambientes de computação compartilhados ou servidores com vários usuários.

from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)

# Treine usando a GPU mais ociosa
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Treine usando as duas GPUs mais ociosas
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

O algoritmo de seleção automática prioriza GPUs com:

  1. Percentuais de utilização atuais mais baixos
  2. Mais memória disponível (VRAM livre)

Esse recurso é especialmente útil em ambientes de computação compartilhados ou ao executar vários trabalhos de treinamento em modelos diferentes. Ele se adapta automaticamente às mudanças nas condições do sistema, garantindo a alocação ideal de recursos sem intervenção manual.

Treinamento com MPS no Apple Silicon#

Com a integração do suporte aos chips Apple silicon nos modelos Ultralytics YOLO, agora é possível treinar seus modelos em dispositivos que utilizam a poderosa estrutura Metal Performance Shaders (MPS). O MPS oferece uma maneira de alto desempenho para executar cálculos e tarefas de processamento de imagem nos chips personalizados da Apple.

Para ativar o treinamento em chips Apple silicon, especifique 'mps' como dispositivo ao iniciar o processo de treinamento. Veja a seguir um exemplo de como fazer isso em Python e pela linha de comando:

Exemplo de treinamento com MPS
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)

# Treine o modelo com MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Ao aproveitar a capacidade computacional dos chips Apple silicon, isso permite processar as tarefas de treinamento com mais eficiência. Para orientações mais detalhadas e opções avançadas de configuração, consulte a documentação do PyTorch MPS.

Retomada de treinamentos interrompidos#

Retomar o treinamento a partir de um estado salvo anteriormente é um recurso essencial ao trabalhar com modelos de aprendizado profundo. Isso pode ser útil em vários cenários, como quando o processo de treinamento é interrompido inesperadamente ou quando você deseja continuar treinando 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 da taxa de aprendizado, o número da época e o conjunto de dados. Isso permite continuar o processo de treinamento sem interrupções, a partir do ponto em que foi interrompido. Passe um data= explícito junto com resume para continuar com outro conjunto de dados, em vez do conjunto de dados do checkpoint.

Você pode retomar facilmente o treinamento no Ultralytics YOLO definindo o argumento resume como True ao chamar o método train e especificando o caminho do arquivo .pt que contém os pesos do modelo parcialmente treinado.

Abaixo está um exemplo de como retomar um treinamento interrompido usando Python e a linha de comando:

Exemplo de retomada do treinamento
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("path/to/last.pt")  # carregar um modelo parcialmente treinado

# Retomar o treinamento
results = model.train(resume=True)

Ao definir resume=True, a função train continuará o treinamento do ponto em que foi interrompido, usando 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.

Lembre-se de que, por padrão, os checkpoints são salvos ao final de cada época, ou em intervalos fixos usando o argumento save_period; portanto, você precisa concluir pelo menos 1 época para retomar uma execução de treinamento.

Configurações de treino#

As configurações de treinamento dos 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. Entre as principais configurações de treinamento estão o tamanho do lote, a taxa de aprendizado, o momentum e a regularização dos pesos. Além disso, a escolha do otimizador, da função de perda e da composição do conjunto de dados de treinamento pode afetar o processo de treinamento. O ajuste cuidadoso e a experimentação com essas configurações são essenciais para otimizar o desempenho.

Otimizador MuSGD#

No YOLO26, MuSGD é um otimizador híbrido que combina atualizações padrão de SGD com atualizações ortogonalizadas no estilo Muon.

Ele é recomendado para execuções de treinamento mais longas do YOLO26 e conjuntos de dados maiores, nos quais as atualizações ortogonalizadas do Muon podem ajudar a estabilizar a otimização.

Somente os pesos lineares 2D e os filtros convolucionais 4D (remodelados para 2D) recebem a atualização no estilo Muon junto com SGD; todos os outros parâmetros, como os pesos de normalização em lote e os termos de viés, permanecem com o SGD padrão.

Quando optimizer=auto é usado, o Ultralytics seleciona automaticamente MuSGD para execuções de treinamento mais longas (normalmente quando as iterações > 10000). Para execuções mais curtas, o treinador usa AdamW. No modo auto, o treinador também seleciona a taxa de aprendizado, portanto um lr0 fornecido pelo usuário é ignorado. Para controlar essas configurações manualmente, selecione um otimizador explicitamente, por exemplo, optimizer=AdamW lr0=0.001.

Exemplo de uso:

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

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

ArgumentoTipoPadrãoDescrição
modelstrNoneEspecifica o ficheiro do modelo usado no treino. Aceita o caminho para um modelo pré-treinado .pt ou para um ficheiro de configuração .yaml. É essencial para definir a estrutura do modelo ou inicializar os pesos.
datastrNoneCaminho para o YAML do conjunto de dados (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 requer um diretório do conjunto de dados ou o nome de um conjunto de dados integrado (por exemplo, imagenet10).
epochsint100Número total de épocas de treino. Cada época corresponde a uma passagem completa pelo conjunto de dados. Ajustar este valor pode afetar a duração do treino e o desempenho do modelo.
timefloatNoneDuração máxima do treino, em horas. Se definido, substitui o argumento epochs, permitindo que o treino pare automaticamente após o período especificado. Útil em cenários com limitações de tempo.
patienceint100Número de épocas a aguardar sem melhoria nas métricas de validação antes de interromper o treino antecipadamente. Ajuda a evitar o sobreajuste, parando o treino quando o desempenho estabiliza.
batchint ou float16Tamanho do lote, com três modos: define um número inteiro (por exemplo, batch=16), usa o modo automático para 60% da utilização da memória da GPU (batch=-1) ou usa o modo automático com uma fração de utilização especificada (batch=0.70).
imgszint640Tamanho de imagem pretendido para o treino. As imagens são redimensionadas para quadrados cujos lados correspondem ao valor especificado (se rect=False), preservando a proporção nos modelos YOLO, mas não no RT-DETR. Afeta a precisão do modelo e a complexidade computacional.
saveboolTruePermite guardar pontos de controlo do treino e os pesos finais do modelo. Útil para retomar o treino ou para a implementação do modelo.
save_periodint-1Frequência de gravação dos pontos de controlo do modelo, especificada em épocas. O valor -1 desativa esta funcionalidade. Útil para guardar modelos intermédios durante sessões de treino longas.
cachebool ou strFalsePermite guardar em cache as imagens do conjunto de dados na memória (True/ram), no disco (disk) ou desativa a cache (False). Acelera o treino ao reduzir as operações de E/S do disco, à custa de um maior consumo de memória.
deviceint ou str ou listNoneEspecifica o(s) dispositivo(s) de computação para o treino: uma única GPU (device=0), várias GPUs (device=[0,1]), CPU (device=cpu), MPS para Apple silicon (device=mps), NPU Huawei Ascend (device=npu:0 ou device=npu:0,1), Intel XPU (device=xpu:0), ou seleção automática de uma GPU inativa (device=-1) ou de várias GPUs inativas (device=[-1,-1]).
workersint8Número de threads de trabalho para carregar dados (por RANK no treino com várias GPUs). Afeta a velocidade do pré-processamento e do envio dos dados para o modelo, sendo especialmente útil em configurações com várias GPUs.
projectstrNoneNome do diretório do projeto onde os resultados do treino são guardados. Permite organizar o armazenamento de diferentes experiências.
namestrNoneNome da execução de treino. Usado para criar um subdiretório na pasta do projeto, onde são armazenados os registos e os resultados do treino.
exist_okboolFalseSe True, permite substituir um diretório de projeto/nome existente. Útil para experiências iterativas sem ter de limpar manualmente os resultados anteriores.
save_dirstrNoneEspecifica o diretório exato onde os resultados da execução são guardados, substituindo a combinação project/name. O caminho é usado tal como está, sem incrementação automática, pelo que execuções consecutivas reutilizam o mesmo diretório.
pretrainedbool ou strTrueDetermina se o treino começa com pesos pré-treinados. Pode ser um valor booleano ou um caminho em formato de string para os pesos a carregar. pretrained=False treina com pesos inicializados aleatoriamente, mantendo a arquitetura do modelo.
cls_remapboolTrueAo ajustar o modelo em vários conjuntos de dados, copia as linhas da camada de classificação pré-treinada para o novo modelo sempre que os nomes das classes coincidem. Assim, as classes correspondentes mantêm o viés aprendido e também os pesos, se a largura da camada não mudar. Aplica-se quer o número de classes seja diferente, quer seja igual mas com uma ordem diferente.
optimizerstr'auto'Escolha do otimizador para o treino. As opções incluem SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp ou auto para escolher AdamW ou MuSGD com base no número de iterações de treino. Afeta a velocidade e a estabilidade da convergência.
seedint0Define a semente aleatória do treino, garantindo a reprodutibilidade dos resultados entre execuções com as mesmas configurações.
deterministicboolTrueForça a utilização 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 treino, mostrando barras de progresso, métricas por época e informações adicionais sobre o treino na consola.
single_clsboolFalseTrata todas as classes dos conjuntos de dados multiclasse como uma única classe durante o treino. Útil para tarefas de classificação binária ou quando o objetivo é detetar a presença de objetos em vez de os classificar.
classeslist[int]NoneEspecifica uma lista de IDs de classes a usar no treino. Útil para filtrar e focar apenas em determinadas classes durante o treino.
rectboolFalseAtiva a estratégia de preenchimento mínimo — as imagens de um lote recebem o mínimo de preenchimento necessário para atingir um tamanho comum, com o lado mais longo igual a imgsz. Isso pode melhorar a eficiência e a velocidade, mas afetar a precisão do modelo. O treinador padrão do YOLO usa rect=True para a validação de detecção, segmentação, pose e OBB, independentemente desta configuração.
multi_scalefloat0.0Varia aleatoriamente imgsz em cada lote em +/- multi_scale (por exemplo, 0.25 -> 0.75x a 1.25x), arredondando para múltiplos do stride do modelo; 0.0 desativa o treino multiescala.
cos_lrboolFalseUtiliza um programador de taxa de aprendizagem cosseno, ajustando a taxa de aprendizagem segundo uma curva cosseno ao longo das épocas. Ajuda a gerir a taxa de aprendizagem para obter uma melhor convergência.
close_mosaicint10Desativa a ampliação de dados mosaico nas últimas N épocas para estabilizar o treino antes de este terminar. Definir como 0 desativa esta funcionalidade.
resumeboolFalseRetoma o treino a partir do último ponto de controlo guardado. Carrega automaticamente os pesos do modelo, o estado do otimizador e o número da época, dando continuidade ao treino.
ampbool ou strTrueDefine a precisão do treino: True ou "fp16" usa FP16, "bf16" usa BF16 em dispositivos CUDA compatíveis e False ou "fp32" usa FP32.
quantizeint ou strNoneDefine como 8 (ou "int8") para o treino com reconhecimento de quantização INT8 (QAT), que ajusta o modelo com quantização simulada no ciclo para que os pesos tolerem a exportação INT8. Consulta Treino com reconhecimento de quantização.
fractionfloat, int ou list1.0Subconjunto do conjunto de dados, definido como proporção/contagem ou lista [train, val, test]. 1 indica a divisão completa, os números inteiros superiores a 1 são contagens de imagens e apenas a entrada de teste opcional aceita 0/0.0 para indicar nenhum. As listas de dois elementos mantêm o conjunto de teste completo.
profileboolFalseAtiva a criação de perfis de velocidade do ONNX e do TensorRT durante o treino, o que é útil para otimizar a implementação do modelo.
freezeint ou listNoneCongela as primeiras N camadas do modelo ou camadas específicas pelo índice ou pelo nome do módulo (23.cv2, sem o model. inicial), reduzindo o número de parâmetros treináveis. Útil para o ajuste fino ou a aprendizagem por transferência.
lr0float0.01Taxa de aprendizagem inicial (ou seja, SGD=1E-2, Adam=1E-3). É ignorada com o valor predefinido optimizer='auto'; especifica um otimizador explicitamente para a usar.
lrffloat0.01Taxa de aprendizagem final como fração da taxa inicial = (lr0 * lrf), usada em conjunto com os programadores para ajustar a taxa de aprendizagem ao longo do tempo.
momentumfloat0.937Fator de momento para SGD ou beta1 para os otimizadores Adam, que influencia a incorporação dos gradientes anteriores na atualização atual.
weight_decayfloat0.0005Termo de regularização L2, que penaliza pesos elevados para evitar o sobreajuste.
warmup_epochsfloat3.0Número de épocas de aquecimento da taxa de aprendizagem, durante as quais esta aumenta gradualmente de um valor baixo até à taxa inicial para estabilizar o início do treino.
warmup_momentumfloat0.8Momento inicial da fase de aquecimento, ajustado gradualmente até ao momento definido durante o período de aquecimento.
warmup_bias_lrfloat0.1Taxa de aprendizagem dos parâmetros de viés durante a fase de aquecimento, que ajuda a estabilizar o treino do modelo nas primeiras épocas. É definida automaticamente como 0.0 com o valor predefinido optimizer='auto'; especifica um otimizador explicitamente para a usar.
distill_modelstrNoneCaminho para um ponto de controlo do modelo professor (por exemplo, yolo26x.pt) para destilação de conhecimento. Quando definido, o modelo aluno é treinado com uma perda de destilação adicional, orientada pelo modelo professor congelado.
disfloat6.0Peso da perda de destilação adicionada às perdas de deteção padrão. Valores mais altos aumentam a influência da orientação das características do modelo professor.
boxfloat7.5Peso da componente de perda da caixa na função de perda, que determina a importância dada à previsão precisa das coordenadas da caixa delimitadora.
clsfloat0.5Peso da perda de classificação na função de perda total, que afeta a importância da previsão correta da classe em relação às outras componentes.
cls_pwfloat0.0Expoente para ponderar classes e lidar com o desequilíbrio entre classes usando o inverso da frequência de cada classe. 0.0 desativa a ponderação de classes; 1.0 aplica a ponderação inversa da frequência na totalidade. Os valores entre 0 e 1 aplicam uma ponderação parcial.
dflfloat1.5Peso do termo de regressão da distância da caixa: perda focal de distribuição (DFL) quando a cabeça de deteção usa reg_max > 1; perda L1 nas distâncias normalizadas das caixas para o YOLO26 sem DFL (reg_max: 1).
posefloat12.0Peso da perda de pose nos modelos treinados para estimativa de pose, que determina a importância dada à previsão precisa dos pontos-chave da pose.
kobjfloat1.0Peso da perda de objetividade dos pontos-chave nos modelos de estimativa de pose, que equilibra a confiança da deteção com a precisão da pose.
rlefloat1.0Peso da perda de estimativa da verosimilhança logarítmica residual nos modelos de estimativa de pose, que afeta a precisão da localização dos pontos-chave.
anglefloat1.0Peso da perda angular nos modelos obb, que afeta a precisão das previsões dos ângulos das caixas delimitadoras orientadas.
dlogfloat1.0Peso da perda logarítmica invariante à escala (SILog) nos modelos de estimativa de profundidade, o principal termo que determina a precisão da profundidade.
dgradfloat0.5Peso da perda de gradiente nos modelos de estimativa de profundidade, que penaliza erros nas arestas de profundidade e incentiva limites de superfície mais nítidos.
dlamfloat1.0Fator de foco da variância da perda SILog nos modelos de estimativa de profundidade. 1.0 torna a perda totalmente invariante à escala, enquanto 0.0 a reduz a um RMSE logarítmico simples.
nbsint64Tamanho nominal do lote para normalização da perda.
overlap_maskboolTrueDetermina se as máscaras dos objetos devem ser combinadas numa única máscara para o treino ou mantidas separadas para cada objeto. Em caso de sobreposição, ao combinar, a máscara mais pequena é sobreposta à maior.
mask_ratioint4Fator de redução da resolução das máscaras de segmentação, que afeta a resolução das máscaras usadas durante o treino. Não altera a resolução das máscaras previstas.
dropoutfloat0.0Taxa de dropout para regularização em tarefas de classificação, que evita o sobreajuste ao omitir unidades aleatoriamente durante o treino.
valboolTrueAtiva a validação durante o treino, permitindo avaliar periodicamente o desempenho do modelo num conjunto de dados separado.
nmsbool, opcionalNoneSeleciona a cabeça de inferência usada para a validação de cada época, a seleção de pontos de controlo e a paragem antecipada. None ou True usa a abordagem um-para-muitos com NMS; False usa a cabeça sem NMS, quando disponível. Ambas as cabeças mantêm as respetivas perdas de treino.
plotsboolTrueGera e guarda gráficos das métricas de treino e validação, bem como exemplos de previsões, proporcionando uma visão visual do desempenho do modelo e da evolução da aprendizagem.
compilebool ou strFalseAtiva a compilação de grafos torch.compile do PyTorch 2.x com backend='inductor'. Aceita True → "default", False → desativa, ou um modo em formato de string, como "default", "reduce-overhead", "max-autotune-no-cudagraphs". Se não for suportado, recorre à execução ansiosa e apresenta um aviso.
channels_lastboolNoneUsa o formato de memória channels_last (NHWC) para convoluções durante o treino. None ativa-o automaticamente em CUDA com PyTorch 1.11 ou posterior, exceto no Windows, onde foi medido um desempenho mais lento. False desativa-o e True solicita-o explicitamente. O treino em CPU ou MPS mantém sempre o formato NCHW (True é ignorado com um aviso).
max_detint300Número máximo de deteções por imagem durante a validação do treino. Para detect, segment, pose e OBB, o valor predefinido de 300 aumenta para a maior contagem de objetos anotados no treino/validação apenas quando essa contagem excede 300. Os outros valores permanecem fixos; exceder o limite gera um aviso.
Nota sobre as configurações do tamanho do lote

O argumento batch pode ser configurado de três maneiras:

  • Tamanho fixo do lote: defina um valor inteiro (por exemplo, batch=16) para especificar diretamente o número de imagens por lote.
  • Modo automático (60% da memória da GPU): use batch=-1 para ajustar automaticamente o tamanho do lote e utilizar aproximadamente 60% da memória CUDA.
  • Modo automático com fração de utilização: defina um valor fracionário (por exemplo, batch=0.70) para ajustar o tamanho do lote com base na fração especificada de uso da memória da GPU.
  • Nova tentativa automática em caso de OOM: se ocorrer um erro de falta de memória CUDA durante a primeira época, o treinador reduzirá automaticamente o tamanho do lote pela metade e tentará novamente (até 3 vezes). Isso se aplica somente ao treinamento com uma única GPU; o treinamento com várias GPUs (DDP) gerará o erro imediatamente.
  • Nenhum tamanho adequado encontrado: Se nenhum tamanho de lote candidato gerar um perfil utilizável, o AutoBatch apresenta um RuntimeError claro em vez de recorrer silenciosamente a um valor predefinido não relacionado.

Configurações de aumento de dados e hiperparâmetros#

As técnicas de aumento de dados são essenciais para melhorar a robustez e o desempenho dos modelos YOLO, pois introduzem variabilidade nos dados de treinamento e ajudam o modelo a generalizar melhor para dados não vistos. A tabela a seguir apresenta a finalidade e o efeito de cada argumento de aumento de dados:

ArgumentoTipoPadrãoTarefas suportadasIntervaloDescrição
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Ajusta o matiz da imagem numa fração da roda das cores, introduzindo variabilidade cromática. Ajuda o modelo a generalizar em diferentes condições de iluminação. Para classify, isto aplica-se apenas quando auto_augment=None.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Altera a saturação da imagem numa determinada fração, afetando a intensidade das cores. É útil para simular diferentes condições ambientais. Para classify, isto aplica-se apenas quando auto_augment=None.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Modifica o valor (brilho) da imagem numa determinada fração, ajudando o modelo a ter um bom desempenho em várias condições de iluminação. Para classify, isto aplica-se apenas quando auto_augment=None.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Roda 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.0Desloca a imagem na horizontal e na vertical numa fração do tamanho da imagem, ajudando o modelo a aprender a detetar objetos parcialmente visíveis.
scalefloat | tuple0.5detect, segment, semantic, depth, classify, pose, obb0 - 1 ou uma tupla (min, max) explícita (não para classify)Redimensiona a imagem por um fator de escala, simulando objetos a diferentes distâncias da câmara.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Aplica uma deformação de cisalhamento à imagem segundo um grau especificado, imitando o efeito de observar objetos de diferentes ângulos.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Aplica uma transformação de perspetiva aleatória à imagem, melhorando a capacidade do modelo de compreender objetos no espaço 3D.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Inverte a imagem de cabeça 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, o que é ú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, o que é útil para aumentar a robustez a uma ordem incorreta dos canais.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Combina quatro imagens de treino numa só, simulando diferentes composições de cenas e interações entre objetos. É altamente eficaz para compreender cenas complexas.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Combina duas imagens e as respetivas etiquetas, criando uma imagem composta. Melhora a capacidade de generalização do modelo ao introduzir ruído nas etiquetas e variabilidade visual.
cutmixfloat0detect, segment, semantic, pose, obb0.0 - 1.0Combina partes de duas imagens, criando uma mistura parcial e mantendo regiões distintas. Melhora a robustez do modelo ao criar cenários de oclusão.
copy_pastefloat0segment, semantic, obb0.0 - 1.0Fração de objetos elegíveis colados; flip espelha-os dentro da imagem, enquanto mixup também usa o valor como probabilidade de aplicação entre imagens.
copy_paste_modestrflipsegment, semantic, obb-Especifica a estratégia copy-paste a utilizar. As opções incluem 'flip' e 'mixup'.
auto_augmentstrrandaugmentclassify-Aplica uma política de aumento de dados predefinida ('randaugment', 'autoaugment' ou 'augmix') para melhorar o desempenho do modelo através da diversidade visual.
erasingfloat0.4classify0.0 - 1.0Apaga aleatoriamente regiões da imagem durante o treino para incentivar o modelo a focar-se em características menos óbvias.
augmentationslistNonedetect, segment, semantic, depth, pose, obb-Transformações Albumentations personalizadas para aumento de dados avançado (apenas API Python). Aceita uma lista de objetos de transformação para necessidades especializadas de aumento de dados.

Essas configurações podem ser ajustadas para atender aos requisitos específicos do conjunto de dados e da tarefa em questão. Experimentar valores diferentes pode ajudar a encontrar a estratégia de aumento de dados ideal para obter o melhor desempenho do modelo.

Informações

Para saber mais sobre as operações de aumento de dados no treinamento, consulte a seção de referência.

Registro de dados#

As métricas de treinamento, os gráficos e os checkpoints são sempre gravados no diretório da execução, e o Ultralytics também os transmite a qualquer rastreador de experimentos que você tenha instalado e ativado: Comet, ClearML, TensorBoard, MLflow, Weights & Biases e DVCLive. Cada registrador pode ser ativado ou desativado nas configurações do Ultralytics, por exemplo, com yolo settings tensorboard=True. As três configurações mais comuns são mostradas abaixo.

Comet#

Comet é uma plataforma que permite a cientistas de dados e desenvolvedores acompanhar, comparar, explicar e otimizar experimentos e modelos. A plataforma oferece recursos como métricas em tempo real, diferenças no código e acompanhamento de hiperparâmetros.

Para usar o Comet:

Exemplo
# pip install comet_ml
import comet_ml

comet_ml.login()

Lembre-se de entrar na sua conta do Comet pelo site e obter sua chave de API. Você precisará adicioná-la às variáveis de ambiente ou ao script para registrar seus experimentos.

ClearML#

ClearML é uma plataforma de código aberto que automatiza o acompanhamento de experimentos e ajuda a compartilhar recursos com eficiência. Ela foi projetada para ajudar as equipes a gerenciar, executar e reproduzir seu trabalho de ML com mais eficiência.

Para usar o ClearML:

Exemplo
# pip install clearml
import clearml

clearml.browser_login()

Depois de executar este script, você precisará entrar na sua conta do ClearML pelo navegador e autenticar sua sessão.

TensorBoard#

TensorBoard é um conjunto de ferramentas de visualização para TensorFlow. Ele permite visualizar o grafo do TensorFlow, gerar gráficos de métricas quantitativas sobre a execução do grafo e exibir dados adicionais, como as 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, execute o comando abaixo e consulte os resultados em localhost:6006.

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

Isso carregará o TensorBoard e o direcionará ao diretório onde os registros do treinamento estão salvos.

Depois de configurar o registrador, você pode iniciar o treinamento do modelo. Todas as métricas de treinamento serão registradas automaticamente na plataforma escolhida, e você poderá acessar esses registros para acompanhar o desempenho do modelo ao longo do tempo, comparar diferentes modelos e identificar áreas que podem ser aprimoradas.

O que fazer a seguir#

Valide seu modelo treinado com dados separados para verificar sua precisão no mundo real e, em seguida, exporte o modelo para ONNX, TensorRT ou outro formato de implantação. Vai treinar com seus próprios dados em vez do COCO8? Formate-os primeiro usando o guia de conjuntos de dados.

Perguntas frequentes#

  • Sim. O treinamento na nuvem da Ultralytics Platform inclui créditos gratuitos para você começar. Envie seu conjunto de dados, selecione um modelo e uma GPU e treine diretamente no navegador.

  • Para treinar um modelo de detecção de objetos usando o Ultralytics YOLO26, você pode usar a API Python ou a CLI. Veja abaixo um exemplo de cada opção:

    Exemplo de treinamento com uma GPU ou CPU
    from ultralytics import YOLO
    
    # Carregar um modelo
    model = YOLO("yolo26n.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)
    
    # Treinar o modelo
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    Para mais detalhes, consulte a seção Configurações de treinamento.

  • Os principais recursos do modo Train 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 várias GPUs: dimensione o treinamento para várias GPUs e acelere o processamento.
    • Configuração de hiperparâmetros: personalize os hiperparâmetros por meio de arquivos YAML ou argumentos da CLI.
    • Visualização e monitoramento: acompanhamento das métricas de treinamento em tempo real para obter melhores insights.

    Esses recursos tornam o treinamento eficiente e personalizável de acordo com suas necessidades. Para mais detalhes, consulte a seção Principais recursos do modo Train.

  • Para retomar o treinamento de uma sessão interrompida, defina o argumento resume como True e especifique o caminho para o último checkpoint salvo.

    Exemplo de retomada do treinamento
    from ultralytics import YOLO
    
    # Carregar o modelo parcialmente treinado
    model = YOLO("path/to/last.pt")
    
    # Retomar o treinamento
    results = model.train(resume=True)

    Consulte a seção sobre retomada de treinamentos interrompidos para mais informações.

  • O desbalanceamento de classes ocorre quando algumas classes têm significativamente menos exemplos do que outras nos dados de treinamento. Isso pode fazer com que o modelo tenha um desempenho ruim nas classes raras. O Ultralytics YOLO oferece suporte à ponderação de classes por meio do argumento cls_pw para lidar com esse problema.

    O argumento cls_pw controla a intensidade da ponderação das classes com base na frequência inversa das classes:

    • cls_pw=0.0 (padrão): desativa a ponderação de classes
    • cls_pw=1.0: aplica a ponderação total pela frequência inversa
    • Valores entre 0.0 e 1.0: aplicam ponderação parcial para desbalanceamentos moderados

    Os pesos das classes são calculados como (1.0 / class_counts) ^ cls_pw e normalizados para que sua média seja igual a 1.0.

    Treinamento com conjunto de dados desbalanceado
    from ultralytics import YOLO
    
    # Carregar um modelo pré-treinado
    model = YOLO("yolo26n.pt")
    
    # Treinar com ponderação total de classes para dados muito desbalanceados
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
    
    # Ou usar ponderação parcial (0.25) para desbalanceamento moderado
    results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
    Dica

    Comece com cls_pw=0.25 para conjuntos de dados moderadamente desbalanceados e aumente para 1.0 se as classes raras ainda tiverem baixo desempenho. Você pode conferir os pesos das classes calculados nos registros do treinamento para verificar a distribuição dos pesos.

  • Sim, o Ultralytics YOLO26 oferece suporte ao treinamento em chips Apple silicon usando a estrutura Metal Performance Shaders (MPS). Especifique 'mps' como dispositivo de treinamento.

    Exemplo de treinamento com MPS
    from ultralytics import YOLO
    
    # Carregar um modelo pré-treinado
    model = YOLO("yolo26n.pt")
    
    # Treinar o modelo em um chip Apple silicon (M1/M2/M3/M4)
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

    Para mais detalhes, consulte a seção Treinamento com Apple Silicon MPS.

  • O Ultralytics YOLO26 permite configurar várias opções de treinamento por meio de argumentos, como tamanho do lote, taxa de aprendizado, épocas e muito mais. Veja um breve resumo:

    ArgumentoPadrãoDescrição
    modelNoneCaminho para o arquivo do modelo usado no treinamento.
    dataNoneCaminho para o YAML do conjunto de dados (por exemplo, coco8.yaml), ou um diretório ou nome de conjunto de dados (por exemplo, imagenet10) para classificação.
    epochs100Número total de épocas de treinamento.
    batch16Tamanho do lote, configurável como inteiro ou no modo automático.
    imgsz640Tamanho de imagem desejado para o treinamento.
    deviceNoneDispositivo(s) computacional(is) para o treinamento, como cpu, 0, 0,1 ou mps.
    saveTrueAtiva o salvamento dos checkpoints do treinamento e dos pesos finais do modelo.

    Para um guia detalhado sobre as configurações de treinamento, consulte a seção Configurações de treinamento.

Comentários