Ultralytics YOLO27: Bekleme listesine katıl.
Get Started

Özel Bir Veri Kümesinde YOLO Nasıl İnce Ayarlanır#

İnce ayar, sıfırdan rastgele başlatma yerine öğrenilmiş ağırlıklardan başlayarak önceden eğitilmiş bir modeli yeni sınıfları tanıyacak şekilde uyarlar. Yüzlerce epoch boyunca sıfırdan eğitim yapmak yerine, ince ayar ö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 için ince ayarı ele alır.

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

Önceden eğitilmiş bir model; kenar algılama, doku tanıma ve şekil anlama gibi genel görsel özellikleri milyonlarca görüntüden öğrenmiştir. İnce ayar yoluyla yapılan aktarımı öğ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 bunların tümünü siler ve modeli her şeyi piksel düzeyindeki örüntülerden başlayarak öğrenmeye zorlar; bu da çok daha fazla kaynak gerektirir. Yalnızca mimariyi tanımlayan .yaml dosyalarının kontrol noktalarından 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ılırDoğal görüntüler içeren özel sınıflarCOCO'dan temelden farklı alanlar (tıp, uydu, radar)
İnce ayar için ek kod gerekmez

.pt dosyası YOLO("yolo26n.pt") ile yüklendiğinde, önceden eğitilmiş ağırlıklar modele kaydedilir. Sonrasında .train(data="custom.yaml") çağrıldığında, tüm uyumlu ağırlıklar otomatik olarak yeni model mimarisine aktarılır, eşleşmeyen katmanlar (sınıf sayısı farklı olduğunda son sınıflandırma katmanı gibi) yeniden başlatılır ve eğitim başlar. Elle ağırlık yüklemek, katmanları değiştirmek veya özel aktarım öğrenmesi kodu yazmak gerekmez.

Ö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 ince ayarlandığında (örneğin, COCO'nun 80 sınıfından 5 özel sınıfa geçildiğinde), Ultralytics şekil duyarlı 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 - yalnızca her sınıflandırma dalının son evrişimi (cv3, one2one_cv3) sınıf sayısına (80'e karşı 5) bağlı bir şekle sahiptir; her iki model de aynı ölçeği kullanıyorsa dalın gizli katmanları aktarılır. Eşleşen sınıf adlarına sahip 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, ada göre eşleşen uyumlu sınıflandırma satırlarına ek olarak 708 ağırlık tensörünün 696'sı aktarılır.

Önceden eğitilmiş modelle aynı sayıda sınıfa sahip veri kümelerinde (örneğin, COCO üzerinde önceden eğitilmiş ağırlıklara başka bir 80 sınıflı veri kümesinde ince ayar yapılırken) algılama başlığı da dâhil olmak üzere ağırlıkların %100'ü aktarılır.

Ad Takma Adlarıyla Sınıfları Aktarma#

Ultralytics, büyük/küçük harf farkını ve baştaki ya da sondaki boşlukları göz ardı ederek veri kümeleri arasında eşleşen sınıflandırma başlığı satırlarını sınıf adına göre aktarır. Eşdeğer sınıflar farklı adlar kullanıyorsa yüklemeden önce kaynak kontrol noktasındaki sınıf adlarını bellekte yeniden adlandır. Böylece aksi hâlde eşleşmiyor olarak değerlendirilip rastgele başlatılacak ortak kavramlara ait önceden eğitilmiş sınıflandırma ağırlıkları korunur.

Bu Objects365 v2-COCO örneği, kaynak sınıfları yüklenen kontrol noktasında yeniden adlandırır; train() bu kontrol noktasını önceden eğitilmiş ağırlık olarak kullanır:

from ultralytics import YOLO

# Kaynak Objects365 v2 adı (küçük harfe dönüştürülmüş) -> hedef COCO adı
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 sınıf adları Baş Harfleri Büyük Yazılır; bu nedenle küçük harfe dönüştürülmüş adla eşleştirin
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ı, bu ada dayalı aktarımı varsayılan olarak etkinleştirir. Uyumlu satırlar kopyalandığında eğitim sırasında Remapped N/M cls head rows from pretrained weights by class name yazdırılır; bu özelliği devre dışı bırakmak için cls_remap=False ayarını yap.

Temel İnce Ayar Örneği#

Örnek
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # önceden eğitilmiş modeli yükle
model.train(data="custom.yaml", epochs=50, imgsz=640)

Model Boyutu Seçimi#

Daha büyük modeller daha yüksek kapasiteye sahiptir; ancak güncellenecek parametre sayısı da daha fazladır. Bu durum, eğitim verileri 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 seyrederse model boyutunu artırmak 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 kıyaslamaları için YOLO26 model sayfasının tamamına bak.

Optimizasyon Algoritması ve Öğrenme Oranı Seçimi#

Varsayılan optimizer=auto ayarı, optimizasyon algoritmasını 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 sayıda epoch): Düşük ve otomatik hesaplanan öğrenme oranıyla AdamW
  • 10.000'den fazla iterasyon (büyük veri kümeleri): lr=0.01 ile MuSGD (Muon+SGD hibrit optimizasyon algoritması)

Çoğu ince ayar görevinde varsayılan ayar, elle ayarlama yapmaya gerek kalmadan iyi sonuç verir. Şu durumlarda optimizasyon algoritmasını açıkça ayarlamayı düşün:

  • Eğitim kararsızsa (kayıp sıçrıyor veya artmaya devam ediyorsa): daha kararlı yakınsama için optimizer=AdamW, lr0=0.001 değerini dene
  • Küçük bir veri kümesinde büyük bir modele ince ayar yapıyorsan: optimizer=AdamW, lr0=0.001 gibi daha düşük öğrenme oranına sahip, açıkça belirtilmiş bir optimizasyon algoritması önceden eğitilmiş özelliklerin korunmasına yardımcı olabilir
Otomatik optimizasyon algoritması elle ayarlanan lr0 değerini geçersiz kılar

optimizer=auto olduğunda lr0 değeri yok sayılır. Öğrenme oranını elle kontrol etmek için optimizasyon algoritmasını açıkça ayarla: optimizer=SGD, lr0=0.005.

Katmanları Dondurma#

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

freeze parametresi bir tam sayı veya liste kabul eder. freeze=10 tam sayısı, YOLO26 omurgasının büyük bölümünü kapsayan ilk 10 katmanı (0-9 indeksleri) dondurur. Omurga 0-10. katmanları kapsadığından freeze=10, son C2PSA bloğunu (10. katman) eğitilebilir durumda bırakır; tüm omurgayı dondurmak için freeze=11 kullan. Kısmi omurga dondurma için bir liste freeze=[0, 3, 5] gibi katman indeksleri veya daha hassas kontrol için freeze=["23.cv2", "23.one2one_cv2"] gibi modül adı dizeleri içerebilir; modül adları, bir katmandaki belirli dalları hedefler (burada algılama başlığının her iki kutu regresyon dalını).

Ö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ş veriye 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ı uyum olmadan tüm katmanları uyarlamaya yetecek kadar veri
Küçük veri kümesi, benzer alanfreeze=10Omurga özelliklerini korur, eğitilebilir parametre sayısını azaltır
Çok küçük veri kümesifreeze=23Yalnızca algılama başlığı eğitilir; aşırı uyum riski en aza iner
COCO'dan çok farklı alanfreeze=NoneOmurga özellikleri iyi aktarılmayabilir ve yeniden eğitilmeleri gerekebilir

Dondurma derinliği bir hiperparametre olarak da ele alınabilir: birkaç değeri (0, 5, 10) deneyip 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 Ayar İçin Temel Hiperparametreler#

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

  • epochs: İnce ayar, sıfırdan eğitime kıyasla daha hızlı yakınsar. Orta düzeyde bir değerle başla ve doğrulama metrikleri durağanlaştığında 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üşürerek zaten yakınsamış çalışmalarda zaman kaybetmekten kaçınabilirsin.
  • warmup_epochs: Isınma, öğrenme oranını ilk epoch'lar boyunca zamanlanmış değerine kademeli olarak çıkarır; böylece ilk batch'lerin önceden eğitilmiş özellikleri bozma olasılığı azalır. İnce ayar yaparken bu değeri sıfırdan büyük tut, ancak varsayılan 3 epoch'un tamamı gerekli değildir: Objects365 ağırlıklarından çok epoch'lu devam eğitimi yapan resmî YOLO26 COCO ince ayarının arkasındaki evrimsel arama, tüm model boyutlarında yaklaşık bir epoch değerinde karar kıldı.

Eğitim parametrelerinin tam listesi için eğitim yapılandırması başvurusuna bak. Parametrelerin sunmadığı davranışlar (katman başına öğrenme oranları, gradyan kırpma veya özel doğrulama metrikleri) için eğitici sınıfını alt sınıf olarak genişlet.

İki Aşamalı İnce Ayar#

İki aşamalı ince ayar, eğitimi iki aşamaya 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 uyum sağlayabilir. İkinci aşamada tüm katmanların dondurması kaldırılır ve hedef alana uyum sağlamak üzere omurgayı iyileştirmek için modelin tamamı daha düşük bir öğrenme oranıyla eğitilir.

Bu yaklaşım, omurganın uyarlanması gerekebileceği ancak her şeyi aynı anda eğitmenin kararsızlığa yol açtığı COCO'dan önemli ölçüde farklı hedef alanlarda (tıbbi görüntüler, hava görüntüleri, mikroskopi) özellikle yararlıdır. Geri çağırma tabanlı bir yaklaşımla dondurmayı otomatik olarak kaldırma hakkında bilgi için Omurgayı Dondurma ve Dondurmayı Kaldırma sayfasına bak.

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

# Aşama 1: omurgayı dondur, başlığı ve boynu eğit
model = YOLO("yolo26n.pt")
model.train(data="custom.yaml", epochs=20, freeze=10, name="stage1", exist_ok=True)

# Aşama 2: tüm katmanların dondurmasını kaldır, daha düşük lr ile ince ayar yap
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)

Sık Karşılaşılan Sorunlar#

Model hiçbir tahmin üretmiyor#

  • Yetersiz eğitim verisi: Çok az örnekle eğitim yapmak en yaygın nedendir; model, yetersiz veriden öğrenemez veya genelleme yapamaz. Diğer nedenleri araştırmadan önce her sınıf için yeterince çeşitli örnek bulunduğundan emin ol.

  • Veri kümesi yollarını kontrol et: Geçersiz görüntü yolları veri kümesi hatasına yol açar. Tek tek eksik veya boş etiket dosyaları arka plan görüntüsü olarak değerlendirilir ve tarama sırasında bildirilir; etiket içermeyen bir eğitim bölümü ise hataya neden olur. 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 üretiliyor 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 durağanlaşıyor#

  • Daha fazla veri ekle: İnce ayar, özellikle farklı açılara, ışıklandırmaya ve arka planlara sahip çeşitli örneklerle birlikte ek eğitim verilerinden önemli ölçüde yararlanır.
  • Sınıf dengesini kontrol et: Az 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.
  • Veri artırmayı azalt: Çok küçük veri kümelerinde yoğun veri artırma, yararından ç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 ayardan sonra özgün sınıflardaki performans düşüyor#

Bu durum, felaket niteliğinde unutma olarak bilinir: model yalnızca yeni verilerle ince ayar yapıldığı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 çoğunlukla kaçınılmazdır. Etkisini azaltmak için:

  • Veri kümelerini birleştir: İnce ayar sırasında yeni sınıfların yanına özgün sınıflara ait örnekleri de ekle. 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 boynu dondurmak, çok düşük öğrenme oranıyla yapılan kısa ince ayar çalışmalarında yardımcı olur.
  • Daha az epoch eğit: Model yalnızca yeni verilerle ne kadar uzun süre eğitilirse unutma o kadar artar.

Sık Sorulan Sorular#

  • Sabit bir asgari sayı 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. Farklı ışıklandırma, açılar ve arka planlar içeren çeşitli görüntüler, ham miktardan daha önemlidir. Elindeki verilerle başla; doğrulama metrikleri yetersizse veri miktarını artır.

  • Önceden eğitilmiş bir .pt dosyası yükle ve özel data.yaml yolunu .train() ile ilet. Ultralytics, ağırlık aktarımını, sınıflandırma katmanının yeniden başlatılmasını ve eniyileyici seçimini otomatik olarak yönetir. Kod örneğinin tamamı için Temel İnce Ayar 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ında uyuşmazlık veya çok yüksek bir güven eşiğidir. Sorun giderme kontrol listesinin tamamı için Sık Karşılaşılan Sorunlar bölümüne bak.

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

  • Yeni sınıfların yanında özgün sınıflara ait örnekleri de eğitim verilerine ekle. 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 öğrenilen bilgilerin korunmasına yardımcı olur. Daha fazla bilgi için Özgün sınıflardaki performans düşüyor bölümüne bak.

Katkıda Bulunanlar

Yorumlar