Ultralytics YOLO27:

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

İnce ayar, 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, ö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 katmanları dondurma ve iki aşamalı eğitim gibi ileri tekniklere kadar, özel veri kümelerinde YOLO26 için ince ayar yapmayı ele alır.

İ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 ve şekil anlama gibi genel görsel özellikleri zaten öğrenmiştir. İnce ayar yoluyla yapılan aktarılabilir öğrenme, bu bilgiyi yeniden kullanır ve modele yalnızca yeni sınıfların nasıl göründüğünü öğretir; bu nedenle model daha hızlı yakınsar ve daha az veriye ihtiyaç duyar. Sıfırdan eğitim tüm bunları 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 içeren .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şDaha 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

YOLO("yolo26n.pt") ile bir .pt dosyası yüklendiğinde, önceden eğitilmiş ağırlıklar modelde saklanır. Ardından .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 algılama başlığı gibi) yeniden başlatılır ve eğitim başlar. Elle ağırlık yüklemek, katmanları düzenlemek veya özel aktarılabilir öğrenme 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ıf içeren bir veri kümesinde ince ayara tabi tutulduğunda (örneğin, COCO'nun 80 sınıfından 5 özel sınıfa geçerken), Ultralytics şekil uyumlu 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 çıkış 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ştiğinde ağırlıkların büyük çoğunluğu aktarılır. Örneğin, COCO (80 sınıf) üzerinde önceden eğitilmiş YOLO26n modeline 5 sınıflı bir veri kümesinde ince ayar yapıldığında, 708 ağırlık tensöründen 606'sı ve ada göre eşleşen uyumlu sınıflandırma satırları aktarılır.

Veri kümesindeki sınıf sayısı önceden eğitilmiş modelle aynıysa (örneğin, COCO üzerinde önceden eğitilmiş ağırlıklara başka bir 80 sınıflı veri kümesinde ince ayar yapılması), algılama başlığı da dahil olmak üzere ağırlıkların %100'ü aktarılır.

Ad Eş Anlamlılarıyla Sınıf Aktarımı#

Ultralytics, büyük/küçük harfleri ve baştaki ya da sondaki boşlukları dikkate almadan, 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 ortak kavramlara ait önceden eğitilmiş sınıflandırma ağırlıkları korunur; aksi halde bu ağırlıklar eşleşmemiş sayılır ve rastgele başlatılır.

Bu Objects365 v2-COCO örneğinde, yüklenen kontrol noktasındaki kaynak sınıflar yeniden adlandırılır; ardından train() bu sınıfları önceden eğitilmiş ağırlıklar olarak aktarır:

from ultralytics import YOLO

# Kaynak Objects365 v2 adı (küçük harfle) -> 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ıldığı için küçük harfe dönüştürülmüş adla eşleştir
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 sırasında uyumlu satırlar kopyalandığı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çme#

Daha büyük modeller daha yüksek kapasiteye sahiptir, 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 durağanlaştığında ölçeği büyütmek kullanışlı 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ılabilen 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ına sahip AdamW
  • 10.000'den fazla iterasyon (büyük veri kümeleri): lr=0.01 ile MuSGD (MuSGD hibrit optimizasyon algoritması)

Çoğu ince ayar görevi için varsayılan ayar, elle ayarlama yapmadan iyi sonuç verir. Şu durumlarda optimizasyon algoritmasını açıkça belirtmeyi düşün:

  • Eğitim kararsızsa (kayıp sıçrıyor veya artarak 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 kullanıldığında lr0 ve momentum değerleri yok sayılır. Öğrenme oranını elle kontrol etmek için optimizasyon algoritmasını açıkça belirt: optimizer=SGD, lr0=0.005.

Katmanları Dondurma#

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

freeze parametresi bir tam sayı veya liste kabul eder. Tam sayı olan freeze=10, YOLO26 omurgasının büyük bölümünü kapsayan ilk 10 katmanı (0-9 indeksleri) dondurur. Omurga 0-10. katmanlara yayılır; bu nedenle freeze=10, son C2PSA bloğunu (10. katman) eğitilebilir bırakır; tüm omurgayı dondurmak için freeze=11 kullan. Kısmi omurga dondurma için listeye freeze=[0, 3, 5] gibi katman indeksleri veya belirli bir katmandaki dallar üzerinde ayrıntılı denetim için freeze=["23.cv2", "23.one2one_cv2"] gibi modül adı dizeleri ekleyebilirsin (burada algılama başlığının iki kutu regresyon dalı da dondurulur).

Ö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 verisinin 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ı uyarlamak için yeterli 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; aşırı öğrenme 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 kullanışlı 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ğitimden 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. Bu değeri 10-20'ye düşürmek, zaten yakınsamış çalışmalarda zaman kaybetmeni önler.
  • warmup_epochs: Isınma, ilk epoch'lar boyunca öğrenme oranını planlanan 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 bir devam eğitimi olan resmî YOLO26 COCO ince ayarının arkasındaki evrimsel arama, her model boyutu için yaklaşık bir epoch değerinde karar kıldı.

Eğitim parametrelerinin tam listesi için eğitim yapılandırma başvurusuna bak. Katman başına öğrenme oranları, gradyan kırpma veya özel doğrulama metrikleri gibi parametrelerin sunmadığı davranışlar için eğitici sınıfını alt sınıfa ayır.

İki Aşamalı İnce Ayar#

İki aşamalı ince ayar, eğitimi iki evreye ayırır. İlk evrede omurga dondurulur; yalnızca boyun ve başlık eğitilir, böylece algılama katmanları önceden eğitilmiş özellikleri bozmadan yeni sınıflara uyum sağlar. İkinci evrede 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 öğrenme oranıyla eğitilir.

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

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

# 1. Aşama: 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)

# 2. Aşama: 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)

Yaygın Sorunlar#

Model 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 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 neden olur. 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ü hata verir. 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: ince ayar, özellikle farklı açılar, aydınlatmalar ve arka planlar içeren çeşitli örneklerden elde edilen ek eğitim verilerinden önemli ölçüde yararlanır.
  • Sınıf dağılımını kontrol et: yeterince temsil edilmeyen 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, yararından çok zarar getirebilir. 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 veriler üzerinde ince ayara tabi tutulduğunda daha önce öğrendiği bilgileri kaybeder. Yeni verilerin yanı sıra özgün veri kümesindeki görüntüleri de kullanmadan unutmayı önlemek çoğunlukla mümkün değildir. Etkisini azaltmak için:

  • Veri kümelerini birleştir: ince ayar sırasında yeni sınıfların yanı sıra özgün sınıflardan örnekler 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 de boynu dondurmak, çok düşük öğrenme oranıyla yapılan kısa ince ayar çalışmalarında yardımcı olur.
  • Daha az epoch boyunca eğit: model yalnızca yeni veriler üzerinde 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. Daha çeşitli görüntüler (farklı aydınlatma, açılar ve arka planlar) ham görüntü sayısından daha önemlidir. Elindeki verilerle başla ve doğrulama metrikleri yetersizse veri miktarını artır.

  • Önceden eğitilmiş bir .pt dosyası yükle ve özel bir data.yaml dosyasının yolunu .train() ile belirt. Ultralytics, ağırlık aktarımını, algılama başlığının yeniden başlatılmasını ve optimizasyon algoritmasının seçimini otomatik olarak yönetir. Tam kod örneği 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 dosyasındaki nc değeriyle gerçek etiket dosyaları arasında uyuşmazlık olması ya da güven eşiğinin çok yüksek olmasıdır. 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 alana sahip küçük veri kümelerinde, omurgayı dondurmak (freeze=10) aşırı öğrenmeyi önler. COCO'dan çok farklı alanlarda tüm katmanları dondurmamak (freeze=None), omurganın uyum sağlamasına olanak tanır. Ayrıntılı öneriler için Katmanları Dondurma bölümüne bak.

  • Eğitim verilerine yeni sınıfların yanı sıra özgün sınıflardan örnekler de ekle. Bu mümkün değilse daha fazla katmanı dondurmak (freeze=10 veya üzeri) ve daha düşük öğrenme hızı kullanmak, önceden eğitilmiş bilginin 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