YOLO Vision 2026:

Özel Bir Veri Kümesinde YOLO'yu İnce Ayarlama#

İnce ayarlama, rastgele başlatma yerine öğrenilmiş ağırlıklarla başlayarak önceden eğitilmiş bir modeli yeni sınıfları tanıyacak şekilde uyarlar. Sıfırdan yüzlerce epoch boyunca eğitim yapmak yerine ince ayarlama, önceden eğitilmiş COCO özelliklerinden yararlanır ve özel veriler üzerinde çok daha kısa sürede yakınsar.

Bu kılavuz, temel kullanımdan katman dondurma ve iki aşamalı eğitim gibi ileri tekniklere kadar özel veri kümelerinde YOLO26 ince ayarlamasını kapsar.

İnce Ayarlama ve Sıfırdan Eğitim Karşılaştırması#

Önceden eğitilmiş bir model, milyonlarca görüntüden kenar algılama, doku tanıma ve şekil anlama gibi genel görsel özellikleri zaten öğrenmiştir. İnce ayarlama yoluyla transfer öğrenme, bu bilgiyi yeniden kullanır ve modele yalnızca yeni sınıfların neye benzediğini öğretir; bu nedenle model daha hızlı yakınsar ve daha az veri gerektirir. Sıfırdan eğitim ise tüm bunları göz ardı eder ve modeli piksel düzeyindeki örüntülerden başlayarak her şeyi öğrenmeye zorlar; bu da önemli ölçüde daha fazla kaynak gerektirir. Yalnızca mimari içeren .yaml dosyalarının checkpoint'lerden nasıl farklı olduğunu öğrenmek için Model YAML Yapılandırma Kılavuzu sayfasına bak.

İnce AyarSıfırdan Eğitim
Başlangıç ağırlıklarıCOCO üzerinde önceden eğitilmiş (80 sınıf)Rastgele başlatma
KomutYOLO("yolo26n.pt")YOLO("yolo26n.yaml")
YakınsamaDaha hızlı - omurga zaten eğitilmiştirDaha yavaş - tüm katmanlar sıfırdan öğrenir
Veri gereksinimleriDaha düşük - önceden eğitilmiş özellikler daha az veriyi telafi ederDaha yüksek - model tüm özellikleri yalnızca veri kümesinden öğrenmelidir
Ne zaman kullanılmalıDoğal görüntüler içeren özel sınıflarCOCO'dan temelde farklı alanlar (tıbbi, uydu, radar)
İnce ayarlama için ek kod gerekmez

Bir .pt dosyası YOLO("yolo26n.pt") ile yüklendiğinde, önceden eğitilmiş ağırlıklar modelde depolanır. Ardından .train(data="custom.yaml") çağrıldığında, uyumlu tüm ağırlıklar yeni model mimarisine otomatik olarak aktarılır, eşleşmeyen katmanlar (sınıf sayısı farklı olduğunda algılama başlığı gibi) yeniden başlatılır ve eğitim başlar. Elle ağırlık yükleme, katman değiştirme veya özel transfer öğrenme kodu gerekmez.

Önceden Eğitilmiş Ağırlık Aktarımı Nasıl Çalışır?#

Önceden eğitilmiş bir model, sınıf sayısı farklı olan bir veri kümesinde ince ayarlandığında (örneğin COCO'nun 80 sınıfından 5 özel sınıfa geçişte), Ultralytics şekil farkındalıklı ağırlık aktarımı gerçekleştirir:

  1. Omurga ve boyun tamamen aktarılır - bu katmanlar genel görsel özellikleri çıkarır ve şekilleri sınıf sayısından bağımsızdır.
  2. Algılama başlığı kısmen yeniden başlatılır - sınıflandırma çıktı katmanlarının (cv3, one2one_cv3) şekilleri sınıf sayısına bağlıdır (80'e karşı 5). Sınıf adları eşleşen uyumlu satırlar, eşleşmeyen satırlar başlatılmadan önce yeniden eşlenir. Başlıktaki kutu regresyon katmanlarının (cv2, one2one_cv2) şekilleri sınıf sayısından bağımsız olarak sabittir; bu nedenle normal şekilde aktarılırlar.
  3. Sınıf sayısı değiştirilirken ağırlıkların büyük çoğunluğu aktarılır. Örneğin YOLO26n, COCO'dan (80 sınıf) 5 sınıflı bir veri kümesine ince ayarlandığında, adları eşleşen uyumlu sınıflandırma satırlarına ek olarak 708 ağırlık tensörünün 606'sı aktarılır.

Önceden eğitilmiş modelle aynı sınıf sayısına sahip veri kümelerinde (örneğin COCO üzerinde önceden eğitilmiş ağırlıkların başka bir 80 sınıflı veri kümesinde ince ayarlanması), algılama başlığı da dahil olmak üzere ağırlıkların %100'ü aktarılır.

Ad Takma Adlarıyla Sınıf Aktarımı#

Ultralytics, veri kümeleri arasında sınıflandırma başlığı satırlarını sınıf adına göre eşleştirerek aktarır; büyük/küçük harfleri ve çevredeki boşlukları yok sayar. Eşdeğer sınıflar farklı adlar kullanıyorsa, yüklemeden önce kaynak checkpoint'inin sınıflarını bellekte yeniden adlandır. Bu işlem, aksi durumda eşleşmemiş kabul edilip rastgele başlatılacak ortak kavramlara ait önceden eğitilmiş sınıflandırma ağırlıklarını korur.

Bu Objects365 v2'den COCO'ya örnek, yüklenen checkpoint'teki kaynak sınıflarını yeniden adlandırır; ardından train() bunları önceden eğitilmiş ağırlıklar olarak aktarır:

from ultralytics import YOLO

# Source Objects365 v2 name (lowercased) -> target COCO name
ALIASES = {
    "wild bird": "bird",
    "handbag/satchel": "handbag",
    "luggage": "suitcase",
    "bowl/basin": "bowl",
    "orange/tangerine": "orange",
    "monitor/tv": "tv",
    "stuffed toy": "teddy bear",
    "hair dryer": "hair drier",
}

model = YOLO("path/to/yolo26s-objects365.pt")
# Objects365 class names are Title-Cased, so match on the lowercased name
model.model.names = {i: ALIASES.get(name.lower(), name) for i, name in model.model.names.items()}
model.train(data="coco.yaml", epochs=100, imgsz=640)

cls_remap ayarı, ada dayalı bu aktarımı varsayılan olarak etkinleştirir. Eğitim, uyumlu satırlar kopyalandığında Remapped N/M cls head rows from pretrained weights by class name çıktısını yazdırır; devre dışı bırakmak için cls_remap=False değerini ayarla.

Temel İnce Ayarlama Örneği#

Örnek
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # load pretrained model
model.train(data="custom.yaml", epochs=50, imgsz=640)

Model Boyutu Seçme#

Daha büyük modellerin kapasitesi daha yüksektir, ancak güncellenecek parametre sayısı da daha fazladır; bu durum, eğitim verisi sınırlı olduğunda aşırı öğrenme riskini artırabilir. Daha küçük bir modelle (YOLO26n veya YOLO26s) başlayıp yalnızca doğrulama metrikleri yatay seyrettiğinde ölçeği büyütmek pratik bir yaklaşımdır. En uygun model boyutu görevin karmaşıklığına, sınıf sayısına, veri kümesinin çeşitliliğine ve dağıtım için kullanılabilir donanıma bağlıdır. Kullanılabilir boyutlar ve performans karşılaştırmaları için YOLO26 model sayfasının tamamına bak.

Optimizer ve Öğrenme Oranı Seçimi#

Varsayılan optimizer=auto ayarı, optimizer'ı ve öğrenme oranını toplam eğitim iterasyonu sayısına göre seçer:

  • 10.000 veya daha az iterasyon (küçük veri kümeleri veya az epoch): düşük, otomatik hesaplanan öğrenme oranıyla AdamW
  • 10.000'den fazla iterasyon (büyük veri kümeleri): MuSGD (hibrit Muon+SGD optimizer'ı), lr=0.01 ile

Çoğu ince ayarlama görevi için varsayılan ayar, elle ayarlama yapılmadan iyi çalışır. Şu durumlarda optimizer'ı açıkça ayarlamayı düşün:

  • Eğitim kararsızsa (kayıp artışları veya ıraksama): daha kararlı yakınsama için optimizer=AdamW, lr0=0.001 değerini dene
  • Büyük bir model küçük bir veri kümesinde ince ayarlanıyorsa: optimizer=AdamW, lr0=0.001 gibi daha düşük öğrenme oranına sahip açıkça belirtilmiş bir optimizer, önceden eğitilmiş özelliklerin korunmasına yardımcı olabilir
Otomatik optimizer, elle ayarlanan lr0 değerini geçersiz kılar

optimizer=auto kullanıldığında lr0 ve momentum değerleri yok sayılır. Öğrenme oranını elle kontrol etmek için optimizer'ı açıkça ayarla: optimizer=SGD, lr0=0.005.

Katmanları Dondurma#

Dondurma, belirli katmanların eğitim sırasında güncellenmesini engeller. Bu işlem eğitimi hızlandırır ve veri kümesi model kapasitesine göre küçük olduğunda aşırı öğrenmeyi azaltır.

freeze parametresi bir tamsayı veya liste kabul eder. freeze=10 tamsayısı, YOLO26 omurgasının çoğunu kapsayan ilk 10 katmanı (0-9 indeksleri) dondurur. Omurga 0-10 arasındaki katmanları kapsar; dolayısıyla freeze=10, son C2PSA bloğunu (10. katman) eğitilebilir bırakır; omurganın tamamını dondurmak için freeze=11 kullan. Liste, omurganın bir kısmını dondurmak için freeze=[0, 3, 5] gibi katman indeksleri veya bir katman içindeki belirli dallar üzerinde ayrıntılı kontrol sağlamak için freeze=["23.cv2", "23.one2one_cv2"] gibi modül adı dizeleri içerebilir (burada algılama başlığının her iki kutu regresyon dalı).

Örnek
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(data="custom.yaml", epochs=50, freeze=10)

Uygun dondurma derinliği, hedef alanın önceden eğitilmiş verilere ne kadar benzediğine ve ne kadar eğitim verisi bulunduğuna bağlıdır:

SenaryoÖneriGerekçe
Büyük veri kümesi, benzer alanfreeze=None (varsayılan)Aşırı öğrenme olmadan tüm katmanları uyarlamaya yetecek veri vardır
Küçük veri kümesi, benzer alanfreeze=10Omurga özelliklerini korur, eğitilebilir parametreleri azaltır
Çok küçük veri kümesifreeze=23Yalnızca algılama başlığı eğitilir, böylece aşırı öğrenme riski en aza indirilir
COCO'dan uzak alanfreeze=NoneOmurga özellikleri iyi aktarılmayabilir ve yeniden eğitilmeleri gerekir

Dondurma derinliği bir hiperparametre olarak da ele alınabilir; birkaç değeri (0, 5, 10) denemek ve doğrulama mAP değerlerini karşılaştırmak, belirli bir veri kümesi için en iyi ayarı bulmanın pratik bir yoludur.

İnce Ayarlama için Temel Hiperparametreler#

İnce ayarlama genellikle sıfırdan eğitime göre daha az hiperparametre ayarı gerektirir. En önemli parametreler şunlardır:

  • epochs: İnce ayarlama, sıfırdan eğitimden daha hızlı yakınsar. Orta düzeyde bir değerle başla ve doğrulama metrikleri yatay seyrettiğinde eğitimi erken durdurmak için patience kullan.
  • patience: Varsayılan 100 değeri uzun eğitim çalışmaları için tasarlanmıştır. Bunu 10-20'ye düşürmek, zaten yakınsamış çalışmalarda zaman kaybını önler.
  • warmup_epochs: Isınma, öğrenme oranını ilk epoch'lar boyunca planlanan değerine kademeli olarak taşır; böylece ilk batch'lerin önceden eğitilmiş özellikleri bozma olasılığı azalır. İnce ayarlama sırasında bunu sıfırdan farklı tut, ancak tam 3 epoch'luk varsayılan değer gerekli değildir: resmî YOLO26 COCO ince ayarlamasının arkasındaki evrimsel arama — Objects365 ağırlıklarından çok epoch'lu bir devam eğitimi — her model boyutu için yaklaşık bir epoch üzerinde karar kılmıştır.

Eğitim parametrelerinin tam listesi için eğitim yapılandırması referansına bak. Parametrelerin sunmadığı davranışlar — katman başına öğrenme oranları, gradyan kırpma veya özel doğrulama metrikleri — için eğitimci sınıfını alt sınıflandır.

İki Aşamalı İnce Ayarlama#

İki aşamalı ince ayarlama, eğitimi iki faza böler. İlk aşamada omurga dondurulur ve yalnızca boyun ile başlık eğitilir; böylece algılama katmanları, önceden eğitilmiş özellikleri bozmadan yeni sınıflara uyarlanabilir. İkinci aşamada tüm katmanların dondurması kaldırılır ve omurgayı hedef alana uyarlamak için tam model daha düşük bir öğrenme oranıyla eğitilir.

Bu yaklaşım, hedef alan COCO'dan önemli ölçüde farklı olduğunda (tıbbi görüntüler, hava görüntüleri, mikroskopi) özellikle kullanışlıdır; çünkü omurganın uyarlanması gerekebilir, ancak her şeyi aynı anda eğitmek kararsızlığa neden olur. Callback tabanlı bir yaklaşımla otomatik dondurma kaldırma için Omurgayı Dondurma ve Dondurmasını Kaldırma sayfasına bak.

İki aşamalı ince ayarlama
from ultralytics import YOLO

# Stage 1: freeze backbone, train head and neck
model = YOLO("yolo26n.pt")
model.train(data="custom.yaml", epochs=20, freeze=10, name="stage1", exist_ok=True)

# Stage 2: unfreeze all, fine-tune with lower lr
model = YOLO("runs/detect/stage1/weights/best.pt")
model.train(data="custom.yaml", epochs=30, optimizer="AdamW", lr0=0.001, name="stage2", exist_ok=True)

Yaygın Sorunlar#

Model hiçbir tahmin üretmiyor#

  • Yetersiz eğitim verisi: Çok az örnekle eğitim yapmak en yaygın nedendir; model çok az veriden öğrenemez veya genelleme yapamaz. Diğer nedenleri araştırmadan önce sınıf başına yeterli sayıda çeşitli örnek olduğundan emin ol.

  • Veri kümesi yollarını kontrol et: Geçersiz görüntü yolları veri kümesi hatasına neden olur. Eksik veya boş tekil etiket dosyaları arka plan görüntüleri olarak değerlendirilir ve tarama sırasında bildirilir; etiketi olmayan bir eğitim bölümü hata oluşturur. Eğitimden önce veri kümesini doğrula:

    yolo detect val model=yolo26n.pt data=custom.yaml
  • Güven eşiğini düşür: Tahminler var ancak filtreleniyorsa çıkarım sırasında conf=0.1 değerini dene.

  • Sınıf sayısını doğrula: data.yaml içindeki nc değerinin etiket dosyalarındaki gerçek sınıf sayısıyla eşleştiğinden emin ol.

Doğrulama mAP değeri erken yatay seyrediyor#

  • Daha fazla veri ekle: İnce ayarlama, özellikle farklı açılara, aydınlatmalara ve arka planlara sahip çeşitli örneklerde ek eğitim verilerinden önemli ölçüde yararlanır.
  • Sınıf dengesini kontrol et: Yetersiz temsil edilen sınıfların AP değeri düşük olur. Daha fazla örnek ekle veya doğrulama kümesinde cls_pw değerini ayarla.
  • Artırmayı azalt: Çok küçük veri kümelerinde yoğun artırma, faydadan çok zarar verebilir. mosaic=0.5 veya mosaic=0.0 değerini dene.
  • Çözünürlüğü artır: Küçük nesneler içeren veri kümelerinde ayrıntıları korumak için imgsz=1280 değerini dene.

İnce ayarlama sonrasında özgün sınıflardaki performans düşüyor#

Bu durum katastrofik unutma olarak bilinir; model yalnızca yeni veriler üzerinde ince ayarlandığında daha önce öğrendiği bilgileri kaybeder. Yeni verilerin yanında özgün veri kümesindeki görüntüler de kullanılmadığında unutma büyük ölçüde kaçınılmazdır. Etkiyi azaltmak için:

  • Veri kümelerini birleştir: İnce ayarlama sırasında yeni sınıfların yanında özgün sınıflara ait örnekleri de dahil et. Unutmayı önlemenin güvenilir tek yolu budur.
  • Omurgayı ve boynu dondur: Yalnızca algılama başlığının eğitilmesi için hem omurgayı hem de boynu dondurmak, çok düşük öğrenme oranına sahip kısa ince ayarlama çalışmaları için yardımcı olur.
  • Daha az epoch eğit: Model yalnızca yeni veriler üzerinde ne kadar uzun süre eğitilirse unutma o kadar artar.

SSS#

  • Sabit bir minimum yoktur; sonuçlar görevin karmaşıklığına, sınıf sayısına ve alanın COCO'ya ne kadar benzediğine bağlıdır. Daha çeşitli görüntüler (farklı aydınlatmalar, açılar ve arka planlar) ham miktardan daha önemlidir. Elindeki verilerle başla ve doğrulama metrikleri yetersizse ölçeği büyüt.

  • Önceden eğitilmiş bir .pt dosyası yükle ve özel bir data.yaml yolunu .train() ile belirt. Ultralytics ağırlık aktarımını, algılama başlığının yeniden başlatılmasını ve optimizer seçimini otomatik olarak yönetir. Eksiksiz kod örneği için Temel İnce Ayarlama bölümüne bak.

  • En yaygın nedenler geçersiz görüntü yolları, eksik veya boş etiket dosyaları, YAML içindeki nc ile gerçek etiket dosyaları arasındaki uyumsuzluk veya çok yüksek bir güven eşiğidir. Sorun giderme kontrol listesinin tamamı için Yaygın Sorunlar sayfasına bak.

  • Bu, veri kümesinin boyutuna ve alan benzerliğine bağlıdır. COCO'ya benzer bir alana sahip küçük veri kümelerinde omurgayı (freeze=10) dondurmak aşırı öğrenmeyi önler. COCO'dan çok farklı alanlarda tüm katmanların dondurmasını kaldırmak (freeze=None), omurganın uyarlanmasına olanak tanır. Ayrıntılı öneriler için Katmanları Dondurma sayfasına bak.

  • Eğitim verilerine yeni sınıfların yanında özgün sınıflara ait örnekleri de dahil et. Bu mümkün değilse daha fazla katmanı dondurmak (freeze=10 veya daha yüksek bir değer) ve daha düşük bir öğrenme oranı kullanmak, önceden eğitilmiş bilginin korunmasına yardımcı olur. Daha fazla ayrıntı için Özgün sınıflardaki performans düşüyor sayfasına bak.

Katkıda Bulunanlar

Yorumlar