YOLO Vision 2026:

Bilgi Damıtma#

Hızlı başlangıç#

distill_model bağımsız değişkenini ekleyerek daha büyük bir öğretmen modelinin rehberliğinde daha küçük bir öğrenci modeli eğit:

Örnek
from ultralytics import YOLO

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

Bilgi Damıtma Nedir?#

Bilgi damıtma, büyük ve doğru öğretmen modelindeki bilgiyi daha küçük bir öğrenci modeline aktarır. Öğrenci, öğretmenin dahili özellik temsillerini taklit etmeyi öğrenir ve çoğu zaman sıfırdan eğitime kıyasla daha iyi doğruluk elde eder.

Bilgi damıtma iş akışı görseli

Damıtmayı şu durumlarda kullan:

  • Dağıtım için daha küçük ve hızlı bir modele ihtiyacın varsa
  • Aynı veriler üzerinde eğitilmiş, yüksek doğruluklu bir öğretmen modelin varsa
  • Standart eğitimin sağladığından daha iyi doğruluk istiyorsan
Not

Bilgi damıtma detect, segment, pose ve obb görevleri için uygulanmıştır. Şimdilik doğruluk iyileştirmeleri yalnızca detect görevi için deneysel olarak doğrulanmıştır.

Performans#

Bilgi damıtma, COCO üzerinde tüm YOLO26 ailesinde öğrenci mAP değerini artırır ve çıkarım maliyetine ek yük getirmez. Aşağıdaki tablo, standart YOLO26 modellerini (temel çizgi) önerilen öğretmenlerinden damıtma ile eğitilmiş aynı modellerle karşılaştırır.

Modelboyut
(piksel)
mAPval
50-95

temel çizgi
mAPval
50-95

damıtılmış
mAPval
50-95 (e2e)

temel çizgi
mAPval
50-95 (e2e)

damıtılmış
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
  • mAPval değerleri, COCO val2017 veri kümesi üzerinde tek model ve tek ölçek içindir.
    yolo val detect model=yolo26n-distill.pt data=coco.yaml device=0 ile damıtılmış bir satırı yeniden üret; e2e sütunu için nms=False ekle.
  • e2e değerleri, NMS'siz çıkarım yolunu (nms=False) kullanır; e2e olmayan değerler ise varsayılan NMS son işlemeyi (nms=None) kullanır. Ayrıntılar için End-to-End Detection bölümüne göz at.

Ön koşullar#

Başlamadan önce aşağıdaki gereksinimleri karşıladığından emin ol:

  • Eğitilmiş öğretmen modeli: Öğrenciyle aynı YOLO ailesinden bir .pt checkpoint'i.
  • Eşleşen görev: Öğrenciyle aynı görev için bir öğretmen kullan ve bu öğretmeni ilgili veriler üzerinde eğit.
  • GPU kaynakları: Her iki modeli de bellekte tutmaya yetecek kadar bellek; öğretmen, gradyanlar veya optimizer durumu olmadan yalnızca ileri yönlü çalışır.

Önerilen Model Çiftleri#

ÖğrenciÖnerilen Öğretmen
yolo26n.ptyolo26s.pt
yolo26s.ptyolo26m.pt
yolo26m.ptyolo26x.pt
yolo26l.ptyolo26x.pt

Aileler arası damıtma (ör. YOLO11 öğretmeni ile YOLO26 öğrencisi) desteklenmez.

Temel Parametreler#

ParametreTürVarsayılanAçıklama
distill_modelstrNoneÖğretmen model dosyasının yolu (ör. yolo26x.pt). Bu ayarın yapılması bilgi damıtmayı etkinleştirir.
disfloat6.0Damıtma kaybı ağırlığı. Damıtma kaybının toplam eğitim kaybına ne ölçüde katkıda bulunacağını kontrol eder.

Nasıl Çalışır?#

  1. Öğretmen modeli, eval modunda sabit kalır ve her batch üzerinde çıkarım yapar
  2. Öğrenci modeli, standart görev kayıplarına ek olarak damıtma rehberliğiyle eğitilir
  3. Özellikler, Detect ailesi başlığına girdi sağlayan üç neck katmanında her iki modelden çıkarılır
  4. İki 1×1 evrişim ve ReLU içeren bir projektör, her öğrenci özellik haritasını öğretmenin kanallarına hizalar
  5. Bir skor ağırlıklı L2 kaybı, yansıtılmış öğrenci özelliklerini öğretmen özellikleriyle karşılaştırır; ağırlıklandırma öğretmenin sınıflandırma güvenine göre yapılır
  6. Damıtma kaybı, dis ağırlığı kullanılarak standart kayıplarla birleştirilir
flowchart TD
    A[Input Image Batch]:::start --> T[Teacher Model<br/>frozen, eval mode]:::extern
    A --> S[Student Model<br/>trainable]:::proc

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

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

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

    S --> D[Detection Head]:::proc
    D --> DL[box_loss + cls_loss + l1_loss]:::proc

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

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

    classDef start fill:#4CAF50,color:#fff
    classDef proc fill:#2196F3,color:#fff
    classDef decide fill:#FF9800,color:#fff
    classDef out fill:#9C27B0,color:#fff
    classDef extern fill:#607D8B,color:#fff

Görev Desteği#

Damıtma uygulaması, modelin Detect ailesi başlığına girdi sağlayan üç neck katmanından özellikler çıkarır. segment, pose ve obb başlıkları aynı Detect mimarisinden türediği için damıtma teknik olarak bu görevlerle de uyumludur.

Sınıflandırma, anlamsal segmentasyon, derinlik tahmini ve RT-DETR uyumlu bir Detect ailesi başlığı kullanmaz ve desteklenmez.

Uyarı

Şimdiye kadar yalnızca detect görevi deneysel olarak kıyaslanmış ve doğrulanmıştır. segment, pose veya obb için damıtmayı çalıştırabilirsin, ancak bu görevlerdeki doğruluk iyileştirmeleri henüz doğrulanmamıştır.

Diğer Görevler için Bilgi Damıtma
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")

Eğitim#

Temel Eğitim#

Damıtma ile eğitim, standart eğitimle aynıdır. Etkinleştirmek için distill_model yolunu belirt:

Bilgi Damıtma Eğitimi
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")

Damıtma Kaybı Ağırlığını Ayarlama#

dis parametresi (varsayılan: 6.0), damıtma kaybının katkısını kontrol eder:

Özel Damıtma Ağırlığı
from ultralytics import YOLO

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

Damıtma Eğitimine Devam Etme#

Damıtma eğitimi checkpoint'lerden devam etmeyi destekler. Öğretmen modeli, checkpoint'te kayıtlı distill_model yolundan otomatik olarak yeniden oluşturulur:

Damıtma Eğitimine Devam Etme
from ultralytics import YOLO

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

Eğitim Çıktısı#

Damıtma etkinleştirildiğinde eğitim günlüklerinde ek bir dis_loss sütunu görünür:

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

Dışa aktarılan model yalnızca öğrenci ağırlıklarını içerir; dosya boyutu ve çıkarım hızı normal şekilde eğitilmiş bir öğrenci modeliyle aynıdır.

SSS#

    • Öğretmen ve öğrencinin aynı YOLO neslinden olduğunu doğrula
    • distill_model yolunun doğru olduğunu ve dosyanın yüklendiğini doğrula
    • Kayıp değeri çok küçükse dis değerini artırmayı dene
    • Öğretmen modelinin aynı veri kümesi üzerinde eğitildiğinden emin ol
  • distill_model parametresini ekle; diğer her şey aynı şekilde çalışır. Eğitim sırasında ek bir damıtma kaybı hesaplanır, ancak kaydedilen model ek yük içermeyen standart bir YOLO modelidir.

  • Evet. Öğretmen her batch için bir ileri yönlü geçiş ekler; dolayısıyla zaman ve bellek ek yükü öğretmen/öğrenci çiftine bağlıdır. Öğretmen, gradyanlar veya optimizer durumu olmadan eval modunda çalışır.

  • Bilgi damıtma, Detect ailesi başlığına girdi sağlayan üç neck katmanındaki özellikleri damıttığı için detect, segment, pose ve obb görevleriyle çalışır. Classify, semantic, depth ve RT-DETR desteklenmez.

    Doğruluk iyileştirmeleri yalnızca detect görevi için deneysel olarak doğrulanmıştır. Segment, pose ve obb teknik olarak uyumludur ancak henüz kıyaslanmamıştır.

    Öğretmen ve öğrenci aynı YOLO ailesine ait olmalıdır (ör. YOLOv8, YOLO11 veya YOLO26). Aileler arası damıtma (ör. YOLO11 öğretmeni ile YOLO26 öğrencisi) desteklenmez.

Yorumlar