Ultralytics YOLO27: Inscreve-te na lista de espera.
Get Started
Aulainiciante

Primeiro ajuste fino e ciclo de iteração

Faça o ajuste fino dos pesos pré-treinados do YOLO26 com as configurações padrão, classifique as classes por AP com contagens de erros por objetos não detectados e confusões, e transforme a classe mais fraca na próxima correção do conjunto de dados.

A execução de prática desta lição obtém 0.66 mAP50, o que parece indicar um problema na taxa de aprendizado. Uma tabela por classe mostra o contrário: cup tem 14 objetos rotulados no conjunto de validação, e o modelo não encontra nenhum. Isso é um problema nos dados, e nenhum hiperparâmetro teria resolvido. Trate a primeira execução como um diagnóstico que indica qual classe corrigir em seguida.

Resultado

Faça o ajuste fino de um modelo de referência, classifique as classes por AP com a quantidade de objetos não detectados ou confundidos e defina uma ação para o conjunto de dados, especificando o número de imagens.

Via rápida
Se já sabes orientar-te, aqui está a versão resumida.
  1. Faça o ajuste fino do checkpoint pré-treinado do YOLO26 para sua tarefa com as configurações padrão.

  2. Classifique as classes por AP50-95 e conte os objetos não detectados e as confusões de cada uma.

  3. Objetos não detectados indicam falta de cobertura ou de rótulos; confusões indicam problemas nas definições das classes.

  4. Corrija os dados, treine novamente com as mesmas configurações e divisão, e compare os resultados.

Prático

Comece com pesos pré-treinados#

O treinamento do zero aprende cada característica com dados novos, enquanto o aprendizado por transferência ajusta uma rede pré-treinada para a nova tarefa

O ajuste fino começa com pesos que já reconhecem bordas, texturas e formas, por isso converge mais rápido e precisa de muito menos dados do que o treinamento com pesos aleatórios. Escolha o checkpoint do YOLO26 que corresponda à sua tarefa:

TarefaCheckpoint pré-treinadoPré-treinado em
Detecçãoyolo26n.ptCOCO
Segmentaçãoyolo26n-seg.ptCOCO
Semânticayolo26n-sem.ptCityscapes
Poseyolo26n-pose.ptPontos-chave do COCO
OBByolo26n-obb.ptDOTAv1
Classificaçãoyolo26n-cls.ptImageNet
Profundidadeyolo26n-depth.ptUma ampla combinação de dados de profundidade em ambientes internos e externos

O backbone e o neck são transferidos como estão; a cabeça da tarefa é parcialmente reinicializada para corresponder ao número de classes. O treinamento do zero só compensa com conjuntos de dados muito grandes em domínios bastante incomuns. Comece com o modelo nano (n) para obter rapidamente um resultado de referência e passe para modelos maiores somente quando o ciclo de dados deixar de trazer melhorias. O guia de ajuste fino explica o que acontece internamente.

Execute o modelo de referência#

Treine com as configurações padrão; o objetivo da primeira execução é estabelecer uma referência, não bater um recorde. O treinamento usa a divisão do conjunto de prática definida em Divida o conjunto de dados corretamente, começando pela criação do YAML de dados:

from ultralytics import YOLO
from ultralytics.data.utils import check_det_dataset
from ultralytics.utils import YAML

names = check_det_dataset("coco128.yaml")["names"]  # # o conjunto de prática mantém os nomes das classes do COCO
YAML.save("practice.yaml", {"path": "datasets/practice", "train": "train.txt", "val": "val.txt", "test": "test.txt", "names": names})

model = YOLO("yolo26n.pt")  # # pré-treinado no COCO; use o checkpoint correspondente à sua tarefa
model.train(data="practice.yaml", epochs=3, imgsz=320)  # # uma execução real: epochs=100, imgsz=640
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         20        143      0.614        0.6      0.664      0.486

A pasta da execução (runs/detect/train/) agora contém weights/best.pt. Na primeira execução, vale a pena considerar apenas três argumentos:

ArgumentoPadrãoQuando alterar
epochs100Menos para conjuntos de dados minúsculos; 200–300 para conjuntos muito grandes
imgsz6401024 ou 1280 se houver muitos objetos pequenos no quadro
batch16-1 para ajuste automático do tamanho do lote; reduza o valor em caso de erros de falta de memória

Treine seu primeiro modelo explica detalhadamente a chamada de treinamento e o registro em tempo real.

Classifique as classes e analise os erros por objetos não detectados#

O mAP geral oculta a origem do problema. Classifique as classes por AP50-95 e use a matriz de confusão para dividir os erros de cada classe entre objetos que o modelo não detectou e objetos que classificou como outra classe:

from ultralytics import YOLO

model = YOLO("runs/detect/train/weights/best.pt")  # your fine-tuned checkpoint
metrics = model.val(data="practice.yaml", imgsz=320, verbose=False)  # same data YAML and imgsz as training

matrix = metrics.confusion_matrix.matrix  # rows: predicted class, columns: true class; last row = background
for ap, cls in sorted(zip(metrics.box.ap, metrics.box.ap_class_index))[:5]:  # weakest five classes first
    total, missed, correct = matrix[:, cls].sum(), matrix[-1, cls], matrix[cls, cls]
    print(f"{model.names[cls]:>8}  AP50-95={ap:.3f}  {total:2.0f} labeled: {correct:2.0f} found, "
          f"{missed:2.0f} missed, {total - correct - missed:2.0f} called another class")
     car  AP50-95=0.000   4 labeled:  0 found,  4 missed,  0 called another class
    fork  AP50-95=0.000   1 labeled:  0 found,  0 missed,  1 called another class
 handbag  AP50-95=0.025   1 labeled:  1 found,  0 missed,  0 called another class
     cup  AP50-95=0.039  14 labeled:  0 found, 10 missed,  4 called another class
    sink  AP50-95=0.075   1 labeled:  1 found,  0 missed,  0 called another class

Cada tipo de erro aponta para uma correção diferente no conjunto de dados:

  • Poucas instâncias no conjunto de validação (fork, handbag, sink, com 1 cada): o AP é ruído. Não aja com base em uma classe até que o conjunto de validação contenha pelo menos algumas dezenas de instâncias dela; primeiro, colete mais grupos para validação.
  • Não detectado (car 4 de 4, cup 10 de 14): o modelo não detecta nenhum objeto. Verifique se esse cenário está coberto no conjunto de treinamento e procure rótulos ausentes com suspect_labels.py.
  • Classificado como outra classe (cup 4 de 14): as definições das classes se sobrepõem. Abra essas imagens, refine as definições e identifique no guia a classe parecida.

cup é o achado que exige ação neste caso: 14 instâncias rotuladas, e nenhuma foi encontrada.

Interprete a pasta da execução como retorno sobre os dados#

Gráficos de treinamento da Ultralytics Platform para um modelo de segmentação: cartões de resumo de mAP50, mAP50-95, precisão e revocação acima das curvas de precisão, revocação e mAP50-95 por época

Cada execução de treinamento gera estes arquivos, e a Ultralytics Platform apresenta os mesmos gráficos em tempo real durante o treinamento na nuvem:

ArquivoO que informa sobre os dados
confusion_matrix_normalized.pngQuais classes são confundidas entre si ou não são detectadas e acabam como fundo
BoxPR_curve.pngPrecisão-revocação por classe; uma curva baixa indica uma classe fraca
val_batch0_pred.jpgPrevisões em imagens reais de validação; procure erros sistemáticos de detecção
labels.jpgContagens de classes e tamanhos das caixas delimitadoras usados no treinamento do modelo
results.pngCurvas de perda e métricas; o aumento da perda de validação enquanto a perda de treinamento diminui indica sobreajuste

Valide e diagnostique explica cada gráfico; aqui, a pergunta é sempre o que está faltando nos dados.

O ciclo com foco nos dados#

Uma iteração típica: escolha a classe mais fraca que tenha instâncias suficientes no conjunto de validação, audite cerca de 50 imagens que a contenham, corrija os dados, treine novamente com as mesmas configurações e divisão, e compare o AP por classe. Em seguida, passe para a próxima classe mais fraca.

Altere uma coisa por retreinamento

Se você adicionar 300 imagens e aumentar imgsz no mesmo retreinamento, não conseguirá saber qual mudança alterou a pontuação. Mantenha as configurações e a divisão idênticas ao iterar sobre os dados, para que cada comparação isole uma mudança nos dados.

Quando recorrer aos hiperparâmetros#

Após duas ou três iterações com os dados, quando as classes fracas restantes já não puderem ser atribuídas a problemas de cobertura, rótulos ou definições, o ajuste fino pode render os últimos pontos. O guia de ajuste fino explica o congelamento de camadas, as taxas de aprendizado e a escolha do otimizador. Mas, se ajustar antes de os dados estarem corretos, você passará semanas otimizando um modelo para o conjunto de dados errado.

Quando um modelo passar em acceptance_test.py no conjunto de teste bloqueado, Ultralytics YOLO em produção explica a exportação e a disponibilização do modelo, enquanto Monitore a integridade e a precisão e Automatize o ciclo de retreinamento, em Crie com a Ultralytics Platform, explicam o ciclo de retreinamento.

Experimente

Faça o ajuste fino do checkpoint do YOLO26 correspondente à sua tarefa com as configurações padrão e, em seguida, execute rank_classes.py em best.pt. Ignore as classes com poucas instâncias no conjunto de validação, audite cerca de 50 imagens da classe restante mais fraca e determine se os erros são objetos não detectados ou confusões. Entregável: uma ação para o conjunto de dados (coletar, refazer a rotulagem ou redefinir) com a quantidade de imagens afetadas.

Concluído quando
Você concluiu a aula quando todos estes critérios forem atendidos.
  • Uma execução de referência com as configurações padrão gerou best.pt e uma tabela ordenada por classe.

  • A classe mais fraca com instâncias suficientes no conjunto de validação está identificada, com as contagens de objetos não detectados e confusões.

  • Uma ação no conjunto de dados é descrita com o número de imagens que afeta, e nenhum hiperparâmetro foi alterado ainda.

Mostrar solução

Na execução de teste, cup é a classe que exige atenção: 14 rotuladas na validação, 0 encontradas, 10 não detectadas, 4 classificadas como outra classe. Um plano dimensionado:

ConstataçãoAção no conjunto de dadosQuantidade
10 de 14 copos não detectadosVerifica a cobertura do conjunto de treino: conta as imagens de treino com copos por câmera e dia; coleta imagens de copos nos grupos que não têm nenhuma40 novas imagens com copos, distribuídas por 4 combinações de câmera e dia
4 de 14 classificadas como outra classeAbre essas imagens em val_batch0_pred.jpg e na matriz de confusão; se forem classificadas como wine glass ou bowl, adiciona ambas as classes parecidas à definição de cupRotula novamente cerca de 30 imagens de treino de acordo com a nova regra
Classes com 1 instânciaNão faças nada ainda; adiciona grupos de validação que as contenhamPróxima rodada de coleta

Depois, treina novamente com epochs, imgsz e a divisão inalterados, executa rank_classes.py outra vez e compara o AP de cup antes e depois. Se aumentar, os dados eram o gargalo; se não aumentar, audita as próximas 50 imagens antes de mexer em qualquer hiperparâmetro.

Próximos passos

A última lição reúne todo o curso em uma lista de verificação de uma página que podes usar com um cliente no início de cada projeto.

Entre para salvar seu progresso