Ultralytics YOLO27:

Bilgi Damıtımı#

Hızlı Başlangıç#

distill_model argümanını 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ıtımı Nedir?#

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

Bilgi damıtımı iş akışı görseli

Damıtımı ş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 yüksek doğruluk istiyorsan
Not

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

Performans#

Bilgi damıtımı, COCO üzerinde tüm YOLO26 ailesinde öğrenci modellerin mAP değerini artırır ve çıkarım maliyetini artırmaz. Aşağıdaki tabloda standart YOLO26 modelleri (temel değer), önerilen öğretmenleriyle damıtım kullanılarak eğitilen aynı modellerle karşılaştırılır.

Modelboyut
(piksel)
mAPval
50-95

temel
mAPval
50-95

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

temel
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çin verilmiştir.
    Damıtılmış bir satırı yeniden üretmek için yolo val detect model=yolo26n-distill.pt data=coco.yaml device=0 kullan; e2e sütunu için nms=False ekle.
  • e2e değerleri NMS içermeyen çıkarım yolunu (nms=False) kullanır; e2e olmayan değerler varsayılan NMS son işlemesini (nms=None) kullanır. Ayrıntılar için Uçtan Uca Nesne Tespiti bölümüne bak.

Ö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 kontrol noktası.
  • Eşleşen görev: Öğrenciyle aynı görevi yapan ve ilgili veriler üzerinde eğitilmiş bir öğretmen kullan.
  • GPU kaynakları: Her iki modeli de bellekte tutmaya yetecek kaynak gerekir; öğretmen, gradyanlar veya optimize edici durumu olmadan yalnızca ileri geçiş çalıştırır.
ÖğrenciÖnerilen Öğretmen
yolo26n.ptyolo26s.pt
yolo26s.ptyolo26m.pt
yolo26m.ptyolo26x.pt
yolo26l.ptyolo26x.pt

Farklı aileler arasında damıtım (ö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, bilgi damıtımını etkinleştirir.
disfloat6.0Damıtma kaybı ağırlığı. Damıtma kaybının toplam eğitim kaybına ne ölçüde katkı sağlayacağını belirler.

Nasıl Çalışır?#

  1. Öğretmen model, eval kipinde sabit kalır ve her yığında çıkarım yapar
  2. Öğrenci model, standart görev kayıplarına ek olarak damıtım rehberliğiyle eğitilir
  3. Özellikler, Detect ailesi başlığını besleyen üç boyun katmanında her iki modelden de çıkarılır
  4. İki 1×1 ReLU evrişiminden oluşan bir projektör, her öğrenci özellik haritasını öğretmenin kanallarına uyarlar
  5. Skor ağırlıklı L2 kaybı, yansıtılmış öğrenci özelliklerini öğretmen özellikleriyle karşılaştırır ve öğretmenin sınıflandırma güvenine göre ağırlıklandırı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ıtım uygulaması, modelin Detect ailesi başlığını besleyen üç boyun katmanından özellikler çıkarır. segment, pose ve obb başlıkları aynı Detect mimarisinden türediğinden damıtım bu görevlerle de teknik olarak uyumludur.

Sınıflandırma, anlamsal bölütleme, derinlik kestirimi ve RT-DETR uyumlu bir Detect ailesi başlığı kullanmaz ve desteklenmez.

Uyarı

Deneysel olarak yalnızca detect görevi kıyaslanmış ve doğrulanmıştır. segment, pose veya obb için damıtım ç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ıtımı
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ıtımla eğitim, standart eğitimle aynıdır. Etkinleştirmek için distill_model yolunu belirt:

Bilgi Damıtımı Eğitimi
from ultralytics import YOLO

# Öğrenci modeli yükle
student = YOLO("yolo26m.pt")

# Daha büyük bir öğretmen modelinden bilgi damıtımı yaparak eğit
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ıtım Eğitimine Devam Etme#

Damıtım eğitimi, kontrol noktalarından devam etmeyi destekler. Öğretmen modeli, kontrol noktasında kayıtlı distill_model yolundan otomatik olarak yeniden oluşturulur:

Damıtım Eğitimine Devam Et
from ultralytics import YOLO

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

Eğitim Çıktısı#

Damıtım 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.

Sık Sorulan Sorular#

    • Öğ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 modelin 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ü olmayan standart bir YOLO modelidir.

  • Evet. Öğretmen her yığın için bir ileri geçiş ekler; bu nedenle zaman ve bellek yükü öğretmen/öğrenci eşleşmesine bağlıdır. Öğretmen, gradyanlar veya optimize edici durumu olmadan eval kipinde çalışır.

  • Bilgi damıtımı, Detect ailesi başlığını besleyen üç boyun 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 deneysel olarak yalnızca detect için doğrulanmıştır. Segment, pose ve obb teknik olarak uyumludur ancak henüz kıyaslama testlerinden geçirilmemiştir.

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

Yorumlar