Meet YOLO26: next-gen vision AI.

Link to this sectionDestilação de Conhecimento#

Link to this sectionInício rápido#

Treina um modelo aluno menor com a orientação de um modelo professor maior, adicionando o argumento distill_model:

Exemplo
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(data="coco8.yaml", epochs=100, distill_model="yolo26s.pt")

Link to this sectionO que é Destilação de Conhecimento?#

Destilação de conhecimento transfere o conhecimento de um modelo professor grande e preciso para um modelo aluno menor. O aluno aprende a imitar as representações internas de características do professor, frequentemente alcançando uma precisão melhor do que o treinamento do zero.

Usa a destilação quando:

  • Precisas de um modelo mais pequeno e rápido para implementação
  • Tens um modelo professor de alta precisão treinado nos mesmos dados
  • Queres uma precisão melhor do que a que o treino padrão proporciona
Nota

A destilação de conhecimento está implementada para tarefas de detect, segment, pose e obb. Apenas a tarefa detect foi verificada experimentalmente quanto a melhorias de precisão até ao momento.

Link to this sectionDesempenho#

A destilação de conhecimento melhora o mAP do aluno em toda a família YOLO26 no COCO, sem custo adicional de inferência. A tabela abaixo compara os modelos YOLO26 padrão (linha de base) com os mesmos modelos treinados com destilação a partir do seu professor recomendado.

Modelotamanho
(pixels)
mAPval
50-95

linha de base
mAPval
50-95

destilado
mAPval
50-95 (e2e)

linha de base
mAPval
50-95 (e2e)

destilado
YOLO26n-distill64040,941.540,140.9
YOLO26s-distill64048,649.247,848.6
YOLO26m-distill64053,153.952,553.3
YOLO26l-distill64055,056.054,455.5
YOLO26x-distill64057,557.956,957.4
  • Os valores de mAPval são para modelo único em escala única no conjunto de dados COCO val2017.
    Reproduz com yolo val detect data=coco.yaml device=0
  • Os valores e2e utilizam o caminho de inferência padrão sem NMS; os valores não e2e utilizam o pós-processamento NMS tradicional (end2end=False). Consulta End-to-End Detection para detalhes.

Link to this sectionPré-requisitos#

Antes de começares, garante que cumpres os seguintes requisitos:

  • Modelo Professor Treinado: Um modelo professor pré-treinado de alta precisão da mesma família YOLO que o modelo aluno (por exemplo, YOLO26).
  • Conjunto de Dados e Tarefa Correspondentes: Tanto o modelo professor como o aluno devem usar a mesma configuração exata de conjunto de dados e tarefa.
  • Recursos de GPU: Memória de GPU (VRAM) suficiente para carregar e executar ambos os modelos simultaneamente durante o treinamento (consulta as FAQ para a sobrecarga típica de VRAM).

Link to this sectionPares de Modelos Recomendados#

AlunoProfessor Recomendado
yolo26n.ptyolo26s.pt
yolo26s.ptyolo26m.pt
yolo26m.ptyolo26x.pt
yolo26l.ptyolo26x.pt

A destilação entre famílias (por exemplo, professor YOLO11 com aluno YOLO26) não é suportada.

Link to this sectionParâmetros Principais#

ParâmetroTipoPredefiniçãoDescrição
distill_modelstrNoneCaminho para o ficheiro do modelo professor (por exemplo, yolo26x.pt). Definir isto ativa a destilação de conhecimento.
disfloat6.0Peso da perda de destilação. Controla o quanto a perda de destilação contribui para a perda total de treinamento.

Link to this sectionComo Funciona#

  1. O modelo professor permanece congelado em modo eval e executa a inferência em cada lote
  2. O modelo aluno treina com perdas de tarefa padrão mais orientação de destilação
  3. As características são extraídas de ambos os modelos nas três camadas do pescoço (neck) que alimentam a cabeça da família Detect
  4. Uma rede projetora (MLP leve) alinha as dimensões das características do aluno para corresponder às do professor
  5. Uma perda L2 ponderada pela pontuação compara as características projetadas do aluno com as do professor, ponderadas pela confiança de classificação do professor
  6. A perda de destilação combina-se com as perdas padrão usando o peso dis
flowchart TD
    A[Input Image Batch] --> T[Teacher Model<br/>frozen, eval mode]
    A --> S[Student Model<br/>trainable]

    T --> |Detect head inputs| TF[Teacher Features]
    S --> |Detect head inputs| SF[Student Features]

    SF --> P[1×1 Conv Projector<br/>with ReLU]
    P --> AF[Aligned Student Features]

    TF --> SW[Score-weighted L2 Loss]
    AF --> SW

    S --> D[Detection Head]
    D --> DL[box_loss + cls_loss + dfl_loss]

    SW --> |× dis| DIS[distillation loss]
    DL --> TOTAL[Total Loss]
    DIS --> TOTAL

    TOTAL --> BP[Backpropagate<br/>Student + Projector only]

Link to this sectionSuporte de Tarefas#

A implementação da destilação extrai características das três camadas do pescoço que alimentam a cabeça da família Detect do modelo. Como as cabeças de segment, pose e obb herdam a mesma arquitetura Detect, a destilação é tecnicamente compatível com essas tarefas também.

Aviso

Apenas a tarefa detect foi testada e verificada experimentalmente. Podes executar a destilação para segment, pose ou obb, mas as melhorias de precisão para essas tarefas ainda não foram validadas.

Destilação de Conhecimento para Outras Tarefas
from ultralytics import YOLO

# Segment
model = YOLO("yolo26n-seg.pt")
model.train(data="coco8-seg.yaml", epochs=100, distill_model="yolo26s-seg.pt")

# Pose
model = YOLO("yolo26n-pose.pt")
model.train(data="coco8-pose.yaml", epochs=100, distill_model="yolo26s-pose.pt")

# OBB
model = YOLO("yolo26n-obb.pt")
model.train(data="dota8.yaml", epochs=100, distill_model="yolo26s-obb.pt")

Link to this sectionTreinamento#

Link to this sectionTreinamento Básico#

O treinamento com destilação é idêntico ao treinamento padrão. Fornece o caminho distill_model para o ativar:

Treinamento com Destilação de Conhecimento
from ultralytics import YOLO

# Load a student model
student = YOLO("yolo26m.pt")

# Train with knowledge distillation from a larger teacher model
results = student.train(data="coco8.yaml", epochs=100, distill_model="yolo26x.pt")

Link to this sectionAjustar o Peso da Perda de Destilação#

O parâmetro dis (padrão: 6.0) controla a contribuição da perda de destilação:

Peso de Destilação Personalizado
from ultralytics import YOLO

student = YOLO("yolo26n.pt")
results = student.train(data="coco8.yaml", epochs=100, distill_model="yolo26s.pt", dis=10.0)

Link to this sectionRetomar o Treinamento com Destilação#

O treinamento com destilação suporta a retomada a partir de pontos de verificação. O modelo professor é reconstruído automaticamente a partir do caminho distill_model:

Retomar o Treinamento com Destilação
from ultralytics import YOLO

student = YOLO("runs/detect/train/weights/last.pt")
results = student.train(resume=True)

Link to this sectionSaída do Treinamento#

Quando a destilação está ativada, uma coluna adicional dis_loss aparece nos registos de treinamento:

      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss   dis_loss  Instances       Size
      1/80      46.2G      1.566      5.404    0.003249      6.658        231        640

O modelo exportado contém apenas os pesos do aluno — o tamanho do ficheiro e a velocidade de inferência correspondem a um modelo aluno treinado normalmente.

Link to this sectionFAQ#

Link to this sectionPor que a minha perda de destilação não está a diminuir?#

  • Verifica se o professor e o aluno são da mesma geração YOLO
  • Confirma se o caminho distill_model está correto e se o ficheiro carrega
  • Tenta aumentar dis se o valor da perda for muito pequeno
  • Garante que o modelo professor foi treinado no mesmo conjunto de dados

Link to this sectionComo é que a destilação difere do treinamento padrão?#

Adiciona o parâmetro distill_model — tudo o resto funciona de forma idêntica. Uma perda de destilação extra é calculada durante o treino, mas o modelo guardado é um modelo YOLO padrão sem sobrecarga.

Link to this sectionA destilação de conhecimento abranda o treinamento?#

Sim. Espera um treinamento 1.2-1.5x mais lento e cerca de 1.1x mais memória de GPU porque o modelo professor executa a inferência em cada lote. O professor corre em modo eval sem gradientes, mantendo a sobrecarga gerível. Usa amp=True para reduzir o impacto.

Link to this sectionQuais tarefas e modelos são suportados?#

A destilação de conhecimento funciona com tarefas de detect, segment, pose e obb porque destila características das três camadas do pescoço que alimentam a cabeça da família Detect. As tarefas de classify e semantic não são suportadas.

Apenas a tarefa detect foi verificada experimentalmente quanto a melhorias de precisão. Segment, pose e obb são tecnicamente compatíveis, mas ainda não foram avaliados.

O professor e o aluno devem pertencer à mesma família YOLO (por exemplo, YOLOv8, YOLO11 ou YOLO26). A destilação entre famílias (por exemplo, um professor YOLO11 com um aluno YOLO26) não é suportada.

Colaboradores

Comentários