Receita de treinamento do YOLO26#
Introdução#
Este guia documenta a receita exata de treinamento usada para produzir os pontos de verificação pré-treinados oficiais do YOLO26 no COCO. Cada hiperparâmetro apresentado aqui já está incorporado nos pesos .pt disponibilizados, junto com o registro de treinamento por época e a revisão do código usada na execução; tudo isso pode ser inspecionado programaticamente.
Saber o que foi usado nos pontos de verificação oficiais — não apenas a arquitetura, mas também os agendamentos de taxa de aprendizado, os pipelines de aumento de dados e os pesos da função de perda que moldaram o desempenho — ajuda você a tomar decisões melhores ao fazer ajuste fino: quais aumentos de dados manter, quais pesos da função de perda ajustar e quais configurações do otimizador funcionam melhor para o tamanho do seu conjunto de dados.
Esta página aborda os hiperparâmetros registrados nos pontos de verificação disponibilizados. Para entender o raciocínio por trás deles, incluindo a arquitetura, as alterações na função de perda e na atribuição de rótulos, além dos estudos de ablação, leia Ultralytics YOLO26: modelos de visão unificados, em tempo real e ponta a ponta.
Visão geral do treinamento#
Todos os modelos base do YOLO26 foram treinados em duas etapas: pré-treinamento em Objects365v1 por 150 épocas, seguido pelo ajuste fino no COCO. Ambas as etapas foram executadas na resolução de 640x640, com o otimizador MuSGD e tamanho de lote 128. Nenhum ponto de verificação do YOLO26 foi treinado no COCO com pesos aleatórios, por isso a etapa do COCO é curta para a maioria dos tamanhos; os hiperparâmetros dessa etapa foram encontrados por meio de busca evolutiva. Os registros completos de treinamento e as métricas de cada tamanho de modelo são armazenados nos pontos de verificação disponibilizados e renderizados como gráficos na Ultralytics Platform.
Principais decisões de projeto comuns a todos os tamanhos:
- Pré-treinamento em Objects365 para todos os tamanhos antes da etapa do COCO
- Treinamento com duas cabeças usando supervisão um-para-muitos e um-para-um; por padrão, a inferência usa NMS, enquanto
nms=Falseseleciona a cabeça sem NMS - Otimizador MuSGD que combina SGD com atualizações ortogonalizadas no estilo Muon para matrizes de pesos (pesos lineares 2D e filtros convolucionais 4D, que são remodelados para 2D)
- Aumento de mosaico intenso (~0.9-1.0 de probabilidade), desativado nas épocas finais (
close_mosaic=8no pré-treinamento,close_mosaic=10no COCO) - Aumento de escala agressivo (0.5-0.95) para lidar com objetos de diferentes tamanhos
- Rotação/cisalhamento mínimos na maioria dos tamanhos, mantendo baixa a distorção geométrica
Etapa 1: pré-treinamento no Objects365#
Cada ponto de verificação do YOLO26 para COCO foi ajustado a partir de um ponto de verificação do Objects365v1 do mesmo tamanho. Esses pesos pré-treinados também foram publicados e estão documentados na página do conjunto de dados Objects365. Cada ponto de verificação do COCO identifica os pesos iniciais na configuração de treinamento incorporada no arquivo .pt. A seção Inspecionando os argumentos de treinamento dos pontos de verificação do YOLO26, abaixo, mostra como ler essa configuração:
| Ponto de verificação do COCO | Pesos iniciais |
|---|---|
yolo26n.pt | yolo26n-objv1-150.pt |
yolo26s.pt | yolo26s-objv1-150.pt |
yolo26m.pt | yolo26m-objv1-150.pt |
yolo26l.pt | yolo26l-objv1-150.pt |
yolo26x.pt | yolo26x-objv1-150.pt |
O pré-treinamento usou principalmente configurações padrão, em vez de valores encontrados por busca. lr0, lrf, momentum, weight_decay, box e cls correspondem a default.yaml, enquanto warmup_epochs, close_mosaic e dfl foram substituídos. As configurações são compartilhadas entre os tamanhos, com exceção de warmup_epochs no X, das intensidades de aumento de dados e dos pesos internos do MuSGD e da cabeça listados após as tabelas:
| Configuração | Valor |
|---|---|
data | Objects365v1 |
epochs | 150 |
imgsz | 640 |
batch | 128 |
optimizer | MuSGD |
lr0 / lrf | 0.01 / 0.01 |
momentum | 0.937 |
weight_decay | 0.0005 |
warmup_epochs | 1 (2 para X) |
close_mosaic | 8 |
box / cls / dfl | 7.5 / 0.5 / 6.0 |
| Aumento de dados | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
mixup | 0.0 | 0.05 | 0.15 | 0.15 | 0.2 |
copy_paste | 0.1 | 0.15 | 0.4 | 0.5 | 0.6 |
scale | 0.5 | 0.9 | 0.9 | 0.9 | 0.9 |
Essas tabelas abrangem as configurações que moldam o pré-treinamento, não a configuração completa. Os pontos de verificação registram mais de 100 argumentos; portanto, para obter a lista oficial, imprima train_args conforme mostrado abaixo.
Avançado: parâmetros internos de pré-treinamento
O pré-treinamento também variou o mesmo tipo de parâmetros de ramificações experimentais descrito em Parâmetros internos de treinamento. cls_w foi 1.0 para todos os tamanhos:
| Configuração | N | S | M | L | X |
|---|---|---|---|---|---|
muon_w | 0.45 | 0.5 | 0.45 | 0.45 | 0.5 |
sgd_w | 0.55 | 0.5 | 0.55 | 0.55 | 0.6 |
o2m | 0.1 | 0.1 | 0.1 | 1.0 | 1.0 |
Não precisas do conjunto de dados Objects365 para reutilizar a etapa 1. Os checkpoints pré-treinados são transferidos automaticamente, como qualquer outro recurso da Ultralytics, para que possas ajustá-los ao teu próprio conjunto de dados:
from ultralytics import YOLO
model = YOLO("yolo26s-objv1-150.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Para repetir a etapa COCO, começa pelos mesmos pesos e passa os valores do otimizador, da função de perda e da augmentação da etapa 2 correspondentes a esse tamanho, indicados nas tabelas abaixo. As tabelas omitem argumentos menores não predefinidos, como warmup_momentum, warmup_bias_lr, perspective, flipud e cutmix; por isso, imprime train_args a partir do checkpoint para obter a configuração exata. O pacote publicado rejeita os parâmetros internos; para os usar, precisas da ramificação experimental.
Inspecionar os argumentos de treino do checkpoint YOLO26#
Cada checkpoint da Ultralytics armazena a configuração de treino completa usada para o gerar, para que possas verificar cada valor nesta página:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])O resultado apresenta a configuração completa, com mais de 100 entradas, incluindo todos os valores da receita documentados nesta página. Um excerto de yolo26n.pt:
batch: 128
...
box: 5.62767
...
close_mosaic: 10
cls: 0.56099
...
dfl: 9.03871
...
epochs: 245
...
lr0: 0.0054
lrf: 0.04952
...
optimizer: MuSGDIsto funciona com qualquer checkpoint .pt — tanto as versões oficiais como os teus próprios modelos ajustados. Para consultar a lista completa dos argumentos de treino configuráveis, vê a referência da configuração de treino.
Ver as curvas de treino#
train_args não é a única coisa armazenada. Cada checkpoint também inclui o results.csv completo, época a época, da execução que o gerou, juntamente com as métricas finais de validação. As curvas dos checkpoints oficiais YOLO26 estão publicadas na Ultralytics Platform, e podes arrastar e largar qualquer ficheiro .pt num projeto para gerar gráficos com os mesmos dados; os metadados são extraídos automaticamente do ficheiro.
Cada checkpoint corresponde à etapa que o gerou: as curvas COCO estão em yolo26s.pt e as curvas dos 150 epochs do Objects365 estão em yolo26s-objv1-150.pt.
Verificar a revisão do código#
ckpt["git"] regista o commit que gerou o checkpoint. Como esses commits estão em ramificações experimentais públicas do repositório da Ultralytics, podes obter exatamente o código de treino utilizado:
from ultralytics import YOLO
print(YOLO("yolo26n.pt").ckpt["git"])
# {'root': ..., 'branch': 'exp-main', 'commit': 'cb13d5f9cfbd6f299da3620c625f81d721dc2849', ...}git fetch origin cb13d5f9cfbd6f299da3620c625f81d721dc2849
git checkout cb13d5f9cfbd6f299da3620c625f81d721dc2849As ramificações experimentais incluem funcionalidades que nunca foram integradas em main, como o2m e cls_w configuráveis. Se treinares em main com os hiperparâmetros documentados abaixo, os resultados não serão idênticos bit a bit, mas ficarão praticamente iguais às métricas publicadas.
Hiperparâmetros de treino do YOLO26 por tamanho do modelo#
Estes são os valores da etapa 2, aplicados sobre os pesos do Objects365 indicados acima. As tabelas abaixo organizam a receita por categoria: otimizador e programação, pesos das perdas e augmentação. Todos os valores vêm diretamente do train_args incorporado nos checkpoints publicados.
Otimizador e taxa de aprendizagem#
Estas definições do otimizador e da programação foram usadas no ajuste fino no COCO para cada tamanho; repara como o modelo N se distingue dos restantes:
| Configuração | N | S | M | L | X |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.0054 | 0.00038 | 0.00038 | 0.00038 | 0.00038 |
lrf | 0.0495 | 0.882 | 0.882 | 0.882 | 0.882 |
momentum | 0.947 | 0.948 | 0.948 | 0.948 | 0.948 |
weight_decay | 0.00064 | 0.00027 | 0.00027 | 0.00027 | 0.00027 |
warmup_epochs | 0.98 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 245 | 70 | 80 | 60 | 40 |
batch | 128 | 128 | 128 | 128 | 128 |
imgsz | 640 | 640 | 640 | 640 | 640 |
O modelo N usou uma taxa de aprendizagem inicial mais alta, com uma descida acentuada (lrf=0.0495), enquanto os modelos S/M/L/X usaram uma taxa de aprendizagem inicial muito mais baixa e uma programação mais gradual (lrf=0.882). Isto reflete as diferentes dinâmicas de convergência dos modelos mais pequenos e maiores: os modelos mais pequenos precisam de atualizações mais agressivas para aprenderem eficazmente.
Pesos das perdas#
Os pesos das perdas equilibram as três componentes da função de perda de deteção: regressão de IoU da caixa delimitadora (box), classificação (cls) e um termo de regressão da distância da caixa (dfl). Nota que o YOLO26, que não usa DFL, reaproveita o ganho dfl para ponderar uma perda L1 nas distâncias normalizadas da caixa, em vez de uma perda focal de distribuição:
| Configuração | N | S | M | L | X |
|---|---|---|---|---|---|
box | 5.63 | 9.83 | 9.83 | 9.83 | 9.83 |
cls | 0.56 | 0.65 | 0.65 | 0.65 | 0.65 |
dfl | 9.04 | 0.96 | 0.96 | 0.96 | 0.96 |
O modelo N dá prioridade ao termo de regressão da distância dfl, enquanto os modelos S/M/L/X dão mais ênfase à regressão da caixa baseada em IoU. A perda de classificação mantém-se relativamente consistente em todos os tamanhos.
Pipeline de augmentação#
Para uma explicação detalhada de cada técnica, consulta o guia de augmentação de dados YOLO.
| Configuração | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 0.909 | 0.992 | 0.992 | 0.992 | 0.992 |
mixup | 0.012 | 0.05 | 0.427 | 0.427 | 0.427 |
copy_paste | 0.075 | 0.404 | 0.304 | 0.404 | 0.404 |
scale | 0.562 | 0.9 | 0.95 | 0.95 | 0.95 |
fliplr | 0.606 | 0.304 | 0.304 | 0.304 | 0.304 |
degrees | 1.11 | ~0 | ~0 | ~0 | ~0 |
shear | 1.46 | ~0 | ~0 | ~0 | ~0 |
translate | 0.071 | 0.275 | 0.275 | 0.275 | 0.275 |
hsv_h | 0.014 | 0.013 | 0.013 | 0.013 | 0.013 |
hsv_s | 0.645 | 0.353 | 0.353 | 0.353 | 0.353 |
hsv_v | 0.566 | 0.194 | 0.194 | 0.194 | 0.194 |
bgr | 0.106 | 0.0 | 0.0 | 0.0 | 0.0 |
Os valores apresentados como ~0 são inferiores a 0,01 nos checkpoints reais (por exemplo, degrees=0.00012 no modelo S), pelo que a augmentação está efetivamente desativada.
Os modelos maiores usam, em geral, uma augmentação mais agressiva (mais mixup e escala), pois têm maior capacidade e beneficiam de uma regularização mais forte. O modelo N é o único tamanho com rotação, cisalhamento e augmentação BGR significativos.
Parâmetros internos de treino#
Avançado: parâmetros internos do pipeline
Os checkpoints também contêm parâmetros usados na ramificação experimental de treino, mas que não estão disponíveis como definições configuráveis pelo utilizador em default.yaml:
| Configuração | Descrição | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Peso da atualização Muon no MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | Peso da atualização SGD no MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Peso de classificação interno | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | Peso da perda da cabeça um-para-muitos | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Atribuição de rótulos top-k | 8 | 5 | 5 | 5 | 5 |
Consulta a pergunta frequente sobre estes parâmetros para saber o que significam ao ajustar um modelo.
Ajustar o YOLO26 ao teu próprio conjunto de dados#
Ao ajustar o YOLO26 ao teu próprio conjunto de dados, não precisas de reproduzir toda a receita de pré-treino. Os pesos pré-treinados já incorporam os conhecimentos de augmentação e otimização obtidos no treino com COCO. Para conheceres outras boas práticas gerais de treino, consulta as dicas para o treino de modelos.
Ajustar com as definições predefinidas#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)O ajuste fino com as predefinições é uma excelente base. Altera os hiperparâmetros apenas se tiveres uma razão específica para o fazer.
Quando ajustar os hiperparâmetros do YOLO26#
Conjuntos de dados pequenos (< 1.000 imagens):
- Reduz a intensidade da augmentação:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Reduz a taxa de aprendizagem e especifica um otimizador:
optimizer=AdamW,lr0=0.001 - Usa menos epochs e define a paciência:
epochs=50,patience=20 - Considera congelar as camadas do backbone:
freeze=10
Conjuntos de dados grandes (> 50.000 imagens):
- Segue mais de perto a receita de pré-treino
- Considera
optimizer=MuSGDpara execuções mais longas - Aumenta a augmentação:
mosaic=1.0,mixup=0.3,scale=0.9
Imagens de domínios específicos (aéreas, médicas, subaquáticas):
- Aumenta
flipud=0.5se a orientação vertical variar - Aumenta
degreesse os objetos surgirem com rotações arbitrárias - Ajusta
hsv_sehsv_vse as condições de iluminação forem muito diferentes das do COCO
Para otimização automatizada de hiperparâmetros, consulta o guia de ajuste de hiperparâmetros.
Escolher o tamanho do modelo#
| Modelo | Ideal para | Recomendações para o tamanho do batch |
|---|---|---|
| YOLO26n | Dispositivos de edge, dispositivos móveis e tempo real em CPU | Batches grandes (64-128) em GPUs de consumo |
| YOLO26s | Equilíbrio entre velocidade e precisão | Batches médios (32-64) |
| YOLO26m | Maior precisão com capacidade de computação moderada | Batches mais pequenos (16-32) |
| YOLO26l | Alta precisão quando há uma GPU disponível | Batches pequenos (8-16) ou várias GPUs |
| YOLO26x | Precisão máxima, implementação em servidor | Batches pequenos (4-8) ou várias GPUs |
Para conhecer as opções de exportação e implementação, consulta o guia de exportação e as opções de implementação de modelos.
Conclusão#
Os checkpoints YOLO26 incluem a receita de treino completa, pelo que basta uma consulta a train_args para obter os hiperparâmetros exatos de cada tamanho de modelo. Começa o ajuste fino com as predefinições, faz alterações deliberadas com base nas tabelas desta página e valida cada alteração no teu próprio conjunto de validação. Se surgirem dúvidas pelo caminho, pergunta à comunidade no repositório da Ultralytics no GitHub ou no servidor Discord da Ultralytics.
Perguntas frequentes#
Carrega o checkpoint com
torch.load()e acede à chavetrain_args, ou usamodel.ckpt["train_args"]com a API da Ultralytics. Consulta Inspecionar os argumentos de treino do checkpoint YOLO26 para veres exemplos completos.Todos os tamanhos receberam os mesmos 150 epochs de pré-treino com Objects365, pelo que os valores de COCO abrangem apenas a etapa de ajuste fino. Os modelos maiores convergem no COCO em menos epochs: 40 no caso do X, contra 245 no N. Os valores não seguem uma progressão estritamente monotónica (o S usou 70 e o M, 80), pois resultaram da pesquisa de hiperparâmetros para cada tamanho. Ao ajustar o modelo ao teu próprio conjunto de dados, o número ideal de epochs depende do tamanho e da complexidade do conjunto de dados, não do tamanho do modelo. Usa a paragem antecipada (
patience) para encontrar automaticamente o ponto de paragem certo.Estes parâmetros vêm da ramificação experimental que gerou os checkpoints base e estão registados em
train_argspara garantir a reprodutibilidade. Não são definições configuráveis pelo utilizador emdefault.yaml, e passá-los amodel.train()gera um erro de argumento inválido, porque o pacote publicado não os lê. Não precisas de os definir durante o ajuste fino; consulta Parâmetros internos de treino para veres os valores de cada tamanho de modelo.Não. Cada checkpoint COCO foi ajustado a partir de um checkpoint Objects365v1 do mesmo tamanho, já treinado durante 150 epochs, conforme descrito em Etapa 1: pré-treino com Objects365 e no artigo do YOLO26. Os resultados publicados não incluem nenhuma execução COCO desde o início, pelo que uma comparação com esses resultados não seria equivalente.
Estão nos checkpoints e representados graficamente na Ultralytics Platform. Cada checkpoint armazena o
results.csvcompleto da execução, época a época, pelo que basta largar um ficheiro.ptnum projeto da Platform para representar graficamente as perdas, a evolução do mAP e as taxas de aprendizagem, sem escrever código. Consulta Ver as curvas de treino. A etapa Objects365 tem o seu próprio registo nos checkpointsyolo26*-objv1-150.pt.Os resultados serão próximos das métricas publicadas, mas não idênticos. Para reproduzir exatamente a configuração, obtém o commit registado no checkpoint e treina nessa ramificação. Consulta Verificar a revisão do código.