İlk İnce Ayar ve Yineleme Döngüsü
Önceden eğitilmiş YOLO26 ağırlıklarını varsayılan ayarlarla ince ayarla, sınıfları AP'ye göre kaçırma ve karıştırma sayılarını kullanarak sırala ve en zayıf sınıfı bir sonraki veri kümesi düzeltmesine dönüştür.
Bu dersteki alıştırma çalıştırması 0.66 mAP50 puanı alıyor; bu da öğrenme hızıyla ilgili bir sorun olduğu izlenimini veriyor. Ancak sınıf başına bir tablo başka bir şey söylüyor: cup val'de etiketli 14 nesne içeriyor ve model bunların hiçbirini bulamıyor. Bu bir veri sorunu; hiçbir hiperparametre bunu çözemezdi. İlk çalıştırmayı, sıradaki hangi sınıfı düzeltmen gerektiğini gösteren bir tanılama aracı olarak ele al.
Uygulamalı
Önceden eğitilmiş ağırlıklarla başla#

İnce ayar, kenarları, dokuları ve şekilleri zaten tanıyan ağırlıklarla başlar; bu nedenle rastgele ağırlıklarla eğitime kıyasla daha hızlı yakınsar ve çok daha az veri gerektirir. Görevine uygun YOLO26 kontrol noktasını seç:
| Görev | Önceden eğitilmiş kontrol noktası | Ön eğitim verisi |
|---|---|---|
| Nesne tespiti | yolo26n.pt | COCO |
| Segmentasyon | yolo26n-seg.pt | COCO |
| Anlamsal | yolo26n-sem.pt | Cityscapes |
| Poz | yolo26n-pose.pt | COCO anahtar noktaları |
| Yönelimli sınırlayıcı kutular | yolo26n-obb.pt | DOTAv1 |
| Sınıflandırma | yolo26n-cls.pt | ImageNet |
| Derinlik | yolo26n-depth.pt | Geniş kapsamlı, iç ve dış mekân derinlik verisi karışımı |
Omurga ve boyun olduğu gibi aktarılır; görev başlığı, sınıf sayına uyacak şekilde kısmen yeniden başlatılır. Sıfırdan eğitim, ancak çok büyük veri kümelerinde ve son derece sıra dışı alanlarda işe yarar. Hızlıca bir temel sonuç almak için nano (n) modeliyle başla ve yalnızca veri döngüsü artık iyileşme sağlamadığında daha büyük boyutlara geç. İnce ayar kılavuzu içeride neler olduğunu açıklar.
Temel modeli çalıştır#
Varsayılan ayarlarla eğitim yap; ilk çalıştırmanın amacı rekor kırmak değil, bir temel sonuç elde etmektir. Bu işlem, önce veri YAML dosyasını yazarak Veri Kümesini Doğru Şekilde Bölme bölümünde oluşturulan alıştırma kümesi bölümlerini kullanarak eğitim yapar:
from ultralytics import YOLO
from ultralytics.data.utils import check_det_dataset
from ultralytics.utils import YAML
names = check_det_dataset("coco128.yaml")["names"] # # alıştırma kümesinde COCO'nun sınıf adları kullanılır
YAML.save("practice.yaml", {"path": "datasets/practice", "train": "train.txt", "val": "val.txt", "test": "test.txt", "names": names})
model = YOLO("yolo26n.pt") # # COCO ile önceden eğitilmiştir; görevin için uygun kontrol noktasını kullan
model.train(data="practice.yaml", epochs=3, imgsz=320) # # gerçek bir çalıştırma: epochs=100, imgsz=640 Class Images Instances Box(P R mAP50 mAP50-95)
all 20 143 0.614 0.6 0.664 0.486Çalıştırma klasöründe (runs/detect/train/) artık weights/best.pt bulunuyor. İlk çalıştırmada yalnızca şu üç argümanı değiştirmeyi düşünmeye değer:
| Argüman | Varsayılan | Ne zaman değiştirilmeli |
|---|---|---|
epochs | 100 | Küçük veri kümeleri için daha düşük; çok büyük veri kümeleri için 200–300 |
imgsz | 640 | Karede çok sayıda küçük nesne varsa 1024 veya 1280 |
batch | 16 | Otomatik toplu iş boyutu için -1; bellek yetersiz hatalarında daha düşük değer kullan |
İlk Modelini Eğit, eğitim çağrısını ve canlı günlüğünü ayrıntılı olarak açıklar.
Sınıfları sırala ve kaçırılan nesneleri incele#
Genel mAP, sorunun nerede olduğunu gizler. Sınıfları AP50-95'e göre sırala ve her sınıfın hatalarını modelin tamamen kaçırdığı nesneler ile başka bir sınıf olarak adlandırdığı nesneler olarak ayırmak için karışıklık matrisini kullan:
from ultralytics import YOLO
model = YOLO("runs/detect/train/weights/best.pt") # your fine-tuned checkpoint
metrics = model.val(data="practice.yaml", imgsz=320, verbose=False) # same data YAML and imgsz as training
matrix = metrics.confusion_matrix.matrix # rows: predicted class, columns: true class; last row = background
for ap, cls in sorted(zip(metrics.box.ap, metrics.box.ap_class_index))[:5]: # weakest five classes first
total, missed, correct = matrix[:, cls].sum(), matrix[-1, cls], matrix[cls, cls]
print(f"{model.names[cls]:>8} AP50-95={ap:.3f} {total:2.0f} labeled: {correct:2.0f} found, "
f"{missed:2.0f} missed, {total - correct - missed:2.0f} called another class") car AP50-95=0.000 4 labeled: 0 found, 4 missed, 0 called another class
fork AP50-95=0.000 1 labeled: 0 found, 0 missed, 1 called another class
handbag AP50-95=0.025 1 labeled: 1 found, 0 missed, 0 called another class
cup AP50-95=0.039 14 labeled: 0 found, 10 missed, 4 called another class
sink AP50-95=0.075 1 labeled: 1 found, 0 missed, 0 called another classHer hata türü farklı bir veri kümesi düzeltmesine işaret eder:
- Val örneği sayısı çok az (
fork,handbag,sink; her birinde 1 örnek): AP gürültüden ibarettir. Val'de en az birkaç düzine örnek bulunana kadar sınıf için işlem yapma; önce daha fazla val grubu topla. - Kaçırılmış (
car4 örneğin 4'ü,cup14 örneğin 10'u): model hiçbir nesne görmüyor. İlgili senaryonun train verisindeki kapsamını kontrol et vesuspect_labels.pyile eksik etiket ara. - Başka bir sınıf olarak adlandırılmış (
cup14 örneğin 4'ü): sınıf tanımları örtüşüyor. Bu görüntüleri aç, tanımları netleştir ve benzer görünen sınıfı kılavuzda belirt.
Burada eyleme geçirilebilir bulgu cup: etiketli 14 örnek var ve hiçbiri bulunmamış.
Çalıştırma klasörünü veri geri bildirimi olarak oku#

Her eğitim çalıştırması bu dosyaları yazar; Ultralytics Platform da bulut eğitiminde aynı eğrileri canlı olarak çizer:
| Dosya | Veri hakkında ne söyler |
|---|---|
confusion_matrix_normalized.png | Hangi sınıfların birbiriyle karıştırıldığı veya arka plan olarak kaçırıldığı |
BoxPR_curve.png | Sınıf başına kesinlik-geri çağırma; düşük bir eğri zayıf bir sınıfa işaret eder |
val_batch0_pred.jpg | Gerçek val görüntülerindeki tahminler; sistematik kaçırmaları ara |
labels.jpg | Modelin eğitim gördüğü sınıf sayıları ve kutu boyutları |
results.png | Kayıp ve metrik eğrileri; train kaybı düşerken val kaybının yükselmesi aşırı öğrenmeye işaret eder |
Doğrula ve Tanıla her grafiği açıklar; burada sorulması gereken soru her zaman veride neyin eksik olduğudur.
Veri öncelikli döngü#
Tipik bir yineleme: Val örneği yeterli olan en zayıf sınıfı seç, bu sınıfın bulunduğu yaklaşık 50 görüntüyü denetle, verileri düzelt, aynı ayarlarla ve aynı bölümle yeniden eğitim yap ve sınıf başına AP'yi karşılaştır. Ardından sıradaki en zayıf sınıfa geç.
Aynı yeniden eğitimde 300 görüntü ekleyip imgsz değerini artırırsan puanı hangi değişikliğin etkilediğini anlayamazsın. Her karşılaştırmanın tek bir veri değişikliğinin etkisini yalıtması için veriler üzerinde yineleme yaparken ayarları ve bölmeyi aynı tut.
Hiperparametrelere ne zaman başvurmalı#
İki veya üç veri yinelemesinden sonra, geriye kalan zayıf sınıflar artık kapsam, etiket veya tanım sorunlarına bağlanamıyorsa ayar yapmak son birkaç puanı kazandırabilir. İnce ayar kılavuzu, katmanları dondurmayı, öğrenme hızlarını ve eniyileyici seçimini açıklar. Ancak veriler doğru olmadan ayar yaparsan, yanlış veri kümesinin modelini iyileştirmek için haftalarını harcarsın.
Bir model, kilitli test kümesinde acceptance_test.py kontrolünü geçtikten sonra, Üretimde Ultralytics YOLO dışa aktarma ve sunumu ele alır; Ultralytics Platform ile Geliştir kapsamındaki Sağlık ve Doğruluğu İzleme ve Yeniden Eğitim Döngüsünü Otomatikleştirme ise yeniden eğitim döngüsünü ele alır.
Çözümü göster
Deneme çalıştırmasına göre, işlem yapılması gereken sınıf cup: val'de 14 örnek etiketlenmiş, 0 örnek bulunmuş, 10 örnek kaçırılmış, 4 örnek başka bir sınıf olarak sınıflandırılmış. Boyutlandırılmış bir plan:
| Bulgu | Veri kümesi eylemi | Boyut |
|---|---|---|
| 14 kupanın 10'u kaçırıldı | Eğitim verisindeki kapsamı kontrol et: kamera-gün bazında kupa içeren eğitim görüntülerini say; hiç kupa içermeyen gruplara kupa ekle | 4 kamera gününe yayılmış, kupa içeren 40 yeni görüntü |
| 14 kupanın 4'ü başka bir sınıf olarak sınıflandırıldı | Bunları val_batch0_pred.jpg ve karmaşıklık matrisinde aç; wine glass veya bowl olarak sınıflandırılmışlarsa, birbirine benzeyen iki sınıfı da cup tanımına ekle | Yeni kurala göre yaklaşık 30 eğitim görüntüsünü yeniden etiketle |
| 1 örnekli sınıflar | Henüz işlem yapma; bu sınıfları içeren val grupları ekle | Bir sonraki veri toplama turu |
Ardından epochs, imgsz ve değişmeden bırakılan veri bölümüyle yeniden eğit, rank_classes.py işlemini tekrar çalıştır ve cup AP değerini öncesiyle sonrası arasında karşılaştır. Değer yükselirse darboğaz veriydi; yükselmezse bir hiperparametreye dokunmadan önce sonraki 50 görüntüyü denetle.