Meet YOLO26: next-gen vision AI.

Link to this sectionBilgi Damıtma#

Link to this sectionHızlı Başlangıç#

distill_model argümanını ekleyerek daha büyük bir öğretmen modelin rehberliğinde daha küçük bir öğrenci model eğitin:

Örnek
from ultralytics import YOLO

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

Link to this sectionBilgi Damıtma Nedir?#

Bilgi damıtma, büyük ve yüksek doğruluklu bir öğretmen modelden daha küçük bir öğrenci modele bilgi aktarır. Öğrenci, öğretmenin içsel özellik temsillerini taklit etmeyi öğrenir ve genellikle sıfırdan eğitime göre daha iyi doğruluk oranlarına ulaşır.

Şu durumlarda damıtma kullanın:

  • Dağıtım için daha küçük ve daha hızlı bir modele ihtiyacınız olduğunda
  • Aynı veri üzerinde eğitilmiş yüksek doğruluklu bir öğretmen modeliniz olduğunda
  • Standart eğitimin sunduğundan daha iyi bir doğruluk elde etmek istediğinizde
Not

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

Link to this sectionPerformans#

Bilgi damıtma, ek çıkarım maliyeti olmadan tüm YOLO26 ailesi genelinde öğrenci mAP değerlerini COCO üzerinde geliştirir. Aşağıdaki tablo, standart YOLO26 modellerini (temel hat) önerilen öğretmenlerinden damıtma ile eğitilen aynı modellerle karşılaştırır.

Modelboyut
(piksel)
mAPval
50-95

temel hat
mAPval
50-95

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

temel hat
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ümesinde tek model ve tek ölçek içindir.
    yolo val detect data=coco.yaml device=0 komutuyla yeniden üretebilirsin.
  • e2e değerleri varsayılan NMS-free çıkarım yolunu kullanır; e2e olmayan değerler geleneksel NMS son işlemeyi (end2end=False) kullanır. Ayrıntılar için Uçtan Uca Tespit kısmına bak.

Link to this sectionÖn koşullar#

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

  • Eğitilmiş Öğretmen Modeli: Öğrenci modeliyle aynı YOLO ailesinden (örneğin YOLO26) önceden eğitilmiş, yüksek doğruluklu bir öğretmen modeli.
  • Eşleşen Veri Kümesi ve Görev: Hem öğretmen hem de öğrenci modelleri tamamen aynı veri kümesini ve görev yapılandırmasını kullanmalıdır.
  • GPU Kaynakları: Eğitim sırasında her iki modeli aynı anda yüklemek ve çalıştırmak için yeterli GPU belleği (VRAM) (tipik VRAM yükü için SSS kısmına bak).

Link to this sectionÖnerilen Model Çiftleri#

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

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

Link to this sectionAnahtar Parametreler#

ParametreTipVarsayılanAçıklama
distill_modelstrNoneÖğretmen modeli dosyasına giden yol (örneğin yolo26x.pt). Bunu ayarlamak bilgi damıtmayı etkinleştirir.
disfloat6.0Damıtma kaybı ağırlığı. Damıtma kaybının toplam eğitim kaybına ne kadar katkıda bulunacağını kontrol eder.

Link to this sectionNasıl Çalışır#

  1. Öğretmen model, eval modunda dondurulmuş kalır ve her yığın (batch) üzerinde çıkarım yapar.
  2. Öğrenci model, standart görev kayıpları artı damıtma rehberliği ile eğitilir.
  3. Özellikler, her iki modelden de Detect ailesi başlığını besleyen üç boyun katmanından çıkarılır.
  4. Bir yansıtıcı ağ (projeksiyon ağı) (hafif bir MLP), öğrenci özellik boyutlarını öğretmene uyacak şekilde hizalar.
  5. Bir skor ağırlıklı L2 kaybı, yansıtılan öğrenci özelliklerini öğretmen özellikleriyle karşılaştırır ve öğretmenin sınıflandırma güveniyle ağırlıklandırır.
  6. Damıtma kaybı, dis ağırlığı kullanılarak standart kayıplarla birleştirilir.
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 sectionGörev Desteği#

Damıtma uygulaması, modelin Detect ailesi başlığını besleyen üç boyun katmanından özellikleri çıkarır. segment, pose ve obb başlıkları aynı Detect mimarisinden türetildiği için, damıtma teknik olarak bu görevlerle de uyumludur.

Uyarı

Sadece detect görevi deneysel olarak kıyaslanmış ve doğrulanmıştır. segment, pose veya obb için damıtma çalıştırabilirsin, ancak bu görevler için 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")

Link to this sectionEğitim#

Link to this sectionTemel Eğitim#

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

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")

Link to this sectionDamı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)

Link to this sectionDamıtma Eğitimine Kaldığı Yerden Devam Etme#

Damıtma eğitimi, kontrol noktalarından (checkpoint) devam ettirmeyi destekler. Öğretmen model, distill_model yolundan otomatik olarak yeniden oluşturulur:

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

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

Link to this sectionEğ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   dfl_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 eğitilmiş bir öğrenci modeliyle aynıdır.

Link to this sectionSSS#

Link to this sectionNeden damıtma kaybım azalmıyor?#

  • Öğretmen ve öğrencinin aynı YOLO neslinden olduğunu doğrula.
  • distill_model yolunun doğru olduğundan ve dosyanın yüklendiğinden emin ol.
  • Kaybın değeri çok küçükse dis değerini artırmayı dene.
  • Öğretmen modelin aynı veri kümesiyle eğitildiğinden emin ol.

Link to this sectionDamıtmanın standart eğitimden farkı nedir?#

distill_model parametresini ekle; diğer her şey aynı şekilde çalışır. Eğitim sırasında ekstra bir damıtma kaybı hesaplanır, ancak kaydedilen model ek yükü olmayan standart bir YOLO modelidir.

Link to this sectionBilgi damıtma eğitimi yavaşlatır mı?#

Evet. Öğretmen model her yığın üzerinde çıkarım yaptığı için eğitimin 1.2-1.5 kat daha yavaş olmasını ve yaklaşık 1.1 kat daha fazla GPU belleği harcamasını bekleyebilirsin. Öğretmen, ek yükü yönetilebilir tutmak için gradyanlar olmadan eval modunda çalışır. Etkiyi azaltmak için amp=True kullan.

Link to this sectionHangi görevler ve modeller destekleniyor?#

Bilgi damıtma, Detect ailesi başlığını besleyen üç boyun katmanından özellikleri damıttığı için detect, segment, pose ve obb görevleriyle çalışır. Classify ve semantic görevleri desteklenmez.

Sadece detect görevi doğruluk iyileştirmeleri 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 (örneğin YOLOv8, YOLO11 veya YOLO26) ait olmalıdır. Aileler arası damıtma (örneğin bir YOLO11 öğretmeni ile YOLO26 öğrencisi) desteklenmez.

Katkıda bulunanlar

Yorumlar