Link to this sectionÖzel Bir Veri Kümesinde YOLO Nasıl İnce Ayar Yapılır?#
İnce ayar (fine-tuning), önceden eğitilmiş bir modeli, rastgele başlatma yerine öğrenilmiş ağırlıklardan başlayarak yeni sınıfları tanıyacak şekilde uyarlar. Sıfırdan yüzlerce epoch boyunca eğitmek yerine, ince ayar, önceden eğitilmiş COCO özelliklerinden yararlanır ve özel veriler üzerinde çok daha kısa sürede yakınsar.
This guide covers fine-tuning YOLO26 on custom datasets, from basic usage to advanced techniques like layer freezing and two-stage training.
Link to this sectionİnce Ayar 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, şekil anlama gibi genel görsel özellikleri zaten öğrenmiştir. İnce ayar yoluyla transfer öğrenme (transfer learning), bu bilgiyi yeniden kullanır ve modele yalnızca yeni sınıfların neye benzediğini öğretir; bu yüzden 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 her şeyi piksel düzeyindeki desenlerden itibaren öğrenmeye zorlar, bu da önemli ölçüde daha fazla kaynak gerektirir.
| İnce Ayar | Sıfırdan Eğitim | |
|---|---|---|
| Başlangıç ağırlıkları | COCO üzerinde önceden eğitilmiş (80 sınıf) | Rastgele başlatma |
| Komut | YOLO("yolo26n.pt") | YOLO("yolo26n.yaml") |
| Yakınsama | Daha hızlı - omurga (backbone) zaten eğitilmiş | Daha yavaş - tüm katmanlar sıfırdan öğrenir |
| Veri gereksinimleri | Daha düşük - önceden eğitilmiş özellikler daha az veriyi telafi eder | Daha yüksek - model tüm özellikleri yalnızca veri kümesinden öğrenmelidir |
| Ne zaman kullanılır | Doğal görüntüler içeren özel sınıflar | COCO'dan temel olarak farklı alanlar (tıp, uydu, radar) |
Bir .pt dosyası YOLO("yolo26n.pt") ile yüklendiğinde, önceden eğitilmiş ağırlıklar modelde saklanır. Bundan sonra .train(data="custom.yaml") çağrısı, uyumlu tüm ağırlıkları otomatik olarak yeni model mimarisine aktarır, eşleşmeyen katmanları (sınıf sayısı farklı olduğunda tespit başlığı gibi) yeniden başlatır ve eğitimi başlatır. Manuel ağırlık yükleme, katman manipülasyonu veya özel transfer öğrenme kodu gerekmez.
Link to this sectionÖnceden Eğitilmiş Ağırlık Aktarımı Nasıl Çalışır?#
Önceden eğitilmiş bir model, farklı sayıda sınıfa sahip bir veri kümesinde (örneğin, COCO'nun 80 sınıfından 5 özel sınıfa) ince ayar yapıldığında, Ultralytics şekil duyarlı ağırlık aktarımı gerçekleştirir:
- Omurga ve boyun (neck) tamamen aktarılır - bu katmanlar genel görsel özellikleri çıkarır ve şekilleri sınıf sayısından bağımsızdır.
- Tespit 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 (80'e karşı 5) bağlıdır, bu yüzden aktarılamazlar ve rastgele başlatılırlar. 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. - Sınıf sayısı değiştirildiğinde ağırlıkların büyük çoğunluğu aktarılır. Örneğin, YOLO26n'yi COCO'dan (80 sınıf) 5 sınıflı bir veri kümesine ince ayar yapmak, 708 ağırlık tensöründen 606'sını aktarır: yalnızca sınıf sayısına bağlı sınıflandırma katmanları yeniden başlatılırken, omurga, boyun ve kutu regresyon dalları bozulmadan kalır.
Önceden eğitilmiş modelle aynı sayıda sınıfa sahip veri kümeleri için (örneğin, COCO ön eğitimli ağırlıkların başka bir 80 sınıflı veri kümesinde ince ayar yapılması), tespit başlığı dahil ağırlıkların %100'ü aktarılır.
Link to this sectionTemel İnce Ayar Örneği#
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # load pretrained model
model.train(data="custom.yaml", epochs=50, imgsz=640)Link to this sectionModel Boyutu Seçme#
Daha büyük modeller daha fazla kapasiteye sahiptir ancak güncellenecek daha fazla parametreye de sahiptir, bu da eğitim verisi sınırlı olduğunda aşırı öğrenme (overfitting) riskini artırabilir. Daha küçük bir modelle (YOLO26n veya YOLO26s) başlayıp, yalnızca doğrulama metrikleri düzleşirse 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 mevcut donanıma bağlıdır. Mevcut boyutlar ve performans kıyaslamaları için tam YOLO26 model sayfasına bakın.
Link to this sectionOptimize Edici ve Öğrenme Oranı Seçimi#
Varsayılan optimizer=auto ayarı, toplam eğitim yineleme sayısına göre optimize ediciyi ve öğrenme oranını seçer:
- < 10.000 yineleme (küçük veri kümeleri veya az sayıda epoch): Düşük, otomatik hesaplanmış bir öğrenme oranıyla AdamW
- > 10.000 yineleme (büyük veri kümeleri): lr=0.01 ile MuSGD (bir hibrit Muon+SGD optimize edici)
Çoğu ince ayar görevi için, varsayılan ayar manuel ayarlama olmaksızın iyi çalışır. Optimize ediciyi şu durumlarda açıkça ayarlamayı düşün:
- Eğitim kararsızsa (kayıp ani yükselirse veya saparsa): daha kararlı yakınsama için
optimizer=AdamW, lr0=0.001deneyin - Büyük bir modelde küçük bir veri kümesi üzerinde ince ayar yaparken:
lr0=0.001gibi daha düşük bir öğrenme oranı, önceden eğitilmiş özellikleri korumaya yardımcı olur
optimizer=auto olduğunda, lr0 ve momentum değerleri göz ardı edilir. Öğrenme oranını manuel olarak kontrol etmek için optimize ediciyi açıkça ayarlayın: optimizer=SGD, lr0=0.005.
Link to this sectionKatmanları Dondurma#
Dondurma, eğitim sırasında belirli katmanların güncellenmesini engeller. Bu, eğitimi hızlandırır ve veri kümesi model kapasitesine göre küçük olduğunda aşırı öğrenmeyi (overfitting) 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ı katmanları kapsar, bu nedenle freeze=10 son C2PSA bloğunu (katman 10) eğitilebilir bırakır; tüm omurgayı dondurmak için freeze=11 kullanın. Bir liste, kısmi omurga dondurma için freeze=[0, 3, 5] gibi katman indekslerini veya bir katman içindeki belirli dallar üzerinde ince ayarlı kontrol için freeze=["23.cv2", "23.one2one_cv2"] gibi modül adı dizelerini içerebilir (burada, tespit başlığının her iki kutu regresyon dalı).
model.train(data="custom.yaml", epochs=50, freeze=10)Doğru dondurma derinliği, hedef alanın önceden eğitilmiş veriye ne kadar benzediğine ve ne kadar eğitim verisi olduğuna bağlıdır:
| Senaryo | Öneri | Gerekçe |
|---|---|---|
| Büyük veri kümesi, benzer alan | freeze=None (varsayılan) | Aşırı öğrenme olmadan tüm katmanları uyarlamak için yeterli veri |
| Küçük veri kümesi, benzer alan | freeze=10 | Omurga özelliklerini korur, eğitilebilir parametreleri azaltır |
| Çok küçük veri kümesi | freeze=23 | Yalnızca tespit başlığı eğitilir, aşırı öğrenme riskini en aza indirir |
| Alan COCO'dan uzak | freeze=None | Omurga özellikleri iyi aktarılamayabilir ve yeniden eğitim gerektirebilir |
Dondurma derinliği bir hiperparametre olarak da ele alınabilir - birkaç değer denemek (0, 5, 10) ve doğrulama mAP'sini karşılaştırmak, belirli bir veri kümesi için en iyi ayarı bulmanın pratik bir yoludur.
Link to this sectionİnce Ayar İçin Temel Hiperparametreler#
İnce ayar genellikle sıfırdan eğitime göre daha az hiperparametre ayarı gerektirir. En önemli parametreler şunlardır:
epochs: İnce ayar, sıfırdan eğitime göre daha hızlı yakınsar. Makul bir değerle başlayın ve doğrulama metrikleri düzleştiğinde erken durdurmak içinpatiencekullanın.patience: Varsayılan 100 değeri, uzun eğitim süreçleri için tasarlanmıştır. Bunu 10-20'ye düşürmek, zaten yakınsayan süreçlerde zaman kaybetmeyi önler.warmup_epochs: Varsayılan ısınma (3 epoch), öğrenme oranını yavaş yavaş sıfırdan artırır; bu, büyük gradyan güncellemelerinin ilk yinelemelerde önceden eğitilmiş özelliklere zarar vermesini önler. İnce ayar için bile varsayılanı korumak önerilir.
Tüm eğitim parametreleri listesi için eğitim yapılandırma referansına bakın.
Link to this sectionİki Aşamalı İnce Ayar#
İki aşamalı ince ayar, eğitimi iki faza ayırır. İlk aşama omurgayı dondurur ve yalnızca boyun ve başlığı eğitir; bu, tespit katmanlarının önceden eğitilmiş özellikleri bozmadan yeni sınıflara uyum sağlamasına olanak tanır. İkinci aşama tüm katmanları çözer ve omurgayı hedef alan için iyileştirmek amacıyla tüm modeli daha düşük bir öğrenme oranıyla eğitir.
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 yararlıdır; burada omurga adaptasyona ihtiyaç duyabilir ancak her şeyi aynı anda eğitmek kararsızlığa yol açar. Geri arama tabanlı bir yaklaşımla otomatik çözme için Omurgayı Dondurma ve Çözme bölümüne bakın.
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, lr0=0.001, name="stage2", exist_ok=True)Link to this sectionYaygın Tuzaklar#
Link to this sectionModel tahmin üretmiyor#
- Yetersiz eğitim verisi: çok az örnekle eğitim, en yaygın nedendir; model çok az veriden öğrenemez veya genelleme yapamaz. Diğer nedenleri araştırmadan önce sınıf başına yeterince çeşitli örnek olduğundan emin olun.
- Veri kümesi yollarını kontrol et:
data.yamliçindeki yanlış yollar sessizce sıfır etiket üretir. Eğitmeden önce etiketlerin doğru yüklendiğini doğrulamak içinyolo detect val model=yolo26n.pt data=custom.yamlçalıştırın. - Daha düşük güven eşiği: tahminler varsa ancak filtreleniyorsa, çıkarım sırasında
conf=0.1deneyin. - Verify class count: ensure
ncindata.yamlmatches the actual number of classes in the label files.
Link to this sectionDoğrulama mAP'si erken düzleşiyor#
- Daha fazla veri ekleyin: ince ayar, ek eğitim verilerinden, özellikle çeşitli açılar, aydınlatma ve arka planlara sahip örneklerden önemli ölçüde faydalanır.
- Sınıf dengesini kontrol edin: yeterince temsil edilmeyen sınıflar düşük AP'ye sahip olacaktır. Ters frekans sınıf ağırlıklandırması uygulamak için
cls_pwkullanın (orta düzey dengesizlik içincls_pw=0.25ile başlayın, şiddetli dengesizlik için1.0'a çıkarın). - Artırmayı azaltın: çok küçük veri kümeleri için ağır artırma, yardımcı olmaktan çok zarar verebilir.
mosaic=0.5veyamosaic=0.0deneyin. - Çözünürlüğü artırın: küçük nesneli veri kümeleri için ayrıntıları korumak adına
imgsz=1280deneyin.
Link to this sectionİnce ayardan sonra orijinal sınıflarda performans düşüyor#
Bu, felaket unutma (catastrophic forgetting) olarak bilinir; model, yalnızca yeni veriler üzerinde ince ayar yapıldığında önceden öğrendiği bilgileri kaybeder. Unutma, orijinal veri kümesi görüntülerini yeni verilerle birlikte dahil etmeden çoğunlukla kaçınılmazdır. Bunu azaltmak için:
- Veri kümelerini birleştirin: ince ayar sırasında orijinal sınıfların örneklerini yeni sınıflarla birlikte dahil edin. Unutmayı önlemenin tek güvenilir yolu budur.
- Omurga ve boynu dondurun: hem omurgayı hem de boynu dondurmak, böylece yalnızca tespit başlığı eğitilir, çok düşük öğrenme oranlı kısa ince ayar süreçleri için yardımcı olur.
- Daha az epoch için eğitin: model yeni veriler üzerinde ne kadar uzun süre özel olarak eğitilirse, unutma o kadar artar.
Link to this sectionSSS#
Link to this sectionYOLO'ya ince ayar yapmak için kaç görüntüye ihtiyacım var?#
Sabit bir minimum yoktur; sonuçlar görevin karmaşıklığına, sınıf sayısına ve alanın COCO'ya ne kadar benzer olduğuna bağlıdır. Ham miktardan ziyade daha çeşitli görüntüler (çeşitli aydınlatma, açılar, arka planlar) önemlidir. Elindekilerle başla ve doğrulama metrikleri yetersizse artır.
Link to this sectionÖzel bir veri kümesinde YOLO26'ya nasıl ince ayar yaparım?#
Load a pretrained .pt file and call .train() with the path to a custom data.yaml. Ultralytics automatically handles weight transfer, detection head reinitialization, and optimizer selection. See the Basic Fine-Tuning section for the complete code example.
Link to this sectionNeden ince ayar yapılmış YOLO modelim hiçbir şey tespit etmiyor?#
En yaygın nedenler, data.yaml içindeki yanlış yollar (sessizce sıfır etiket üretir), YAML'deki nc ile gerçek etiket dosyaları arasındaki uyumsuzluk veya çok yüksek olan bir güven eşiğidir. Tam bir sorun giderme kontrol listesi için Yaygın Tuzaklar bölümüne bakın.
Link to this sectionİnce ayar için hangi YOLO katmanlarını dondurmalıyım?#
Veri kümesi boyutuna ve alan benzerliğine bağlıdır. COCO'ya benzer bir alana sahip küçük veri kümeleri için omurgayı dondurmak (freeze=10) aşırı öğrenmeyi önler. COCO'dan çok farklı alanlar için tüm katmanları dondurulmamış bırakmak (freeze=None), omurganın uyum sağlamasına olanak tanır. Ayrıntılı öneriler için Katmanları Dondurma bölümüne bakın.
Link to this sectionYOLO'ya yeni sınıflar üzerinde ince ayar yaparken felaket unutmayı nasıl önlerim?#
Eğitim verilerine yeni sınıflarla birlikte orijinal sınıfların örneklerini dahil edin. Bu mümkün değilse, daha fazla katmanı dondurmak (freeze=10 veya daha fazlası) ve daha düşük bir öğrenme oranı kullanmak, önceden eğitilmiş bilgileri korumaya yardımcı olur. Daha fazla ayrıntı için Orijinal sınıflarda performans düşüyor bölümüne bakın.