Ultralytics YOLO27: Bekleme listesine katıl.
Get Started
Dersbaşlangıç düzeyi

İ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.

Sonuç

Bir temel modelin ince ayarını yap, sınıfları AP'ye ve kaç nesnenin kaçırıldığına veya karıştırıldığına göre sırala ve görüntü sayısıyla ölçülebilen tek bir veri kümesi eylemi yaz.

Hızlı Başlangıç
Nasıl ilerleyeceğini zaten biliyorsan, işte kısa sürüm.
  1. Görevin için önceden eğitilmiş YOLO26 kontrol noktasını varsayılan ayarlarla ince ayarla.

  2. Sınıfları AP50-95'e göre sırala ve her sınıf için kaçırılan ve karıştırılan nesneleri say.

  3. Kaçırılan nesneler kapsama veya eksik etiketlere; karıştırmalar ise sınıf tanımlarına işaret eder.

  4. Verileri düzelt, aynı ayarlarla ve aynı bölümü kullanarak yeniden eğitim yap ve sonuçları karşılaştır.

Uygulamalı

Önceden eğitilmiş ağırlıklarla başla#

Sıfırdan eğitim her özelliği yeni verilerden öğrenirken, aktarım öğrenmesi önceden eğitilmiş bir ağı ince ayarlayarak yeni göreve uyarlar

İ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 tespitiyolo26n.ptCOCO
Segmentasyonyolo26n-seg.ptCOCO
Anlamsalyolo26n-sem.ptCityscapes
Pozyolo26n-pose.ptCOCO anahtar noktaları
Yönelimli sınırlayıcı kutularyolo26n-obb.ptDOTAv1
Sınıflandırmayolo26n-cls.ptImageNet
Derinlikyolo26n-depth.ptGeniş 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ümanVarsayılanNe zaman değiştirilmeli
epochs100Küçük veri kümeleri için daha düşük; çok büyük veri kümeleri için 200–300
imgsz640Karede çok sayıda küçük nesne varsa 1024 veya 1280
batch16Otomatik 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 class

Her 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ış (car 4 örneğin 4'ü, cup 14 örneğin 10'u): model hiçbir nesne görmüyor. İlgili senaryonun train verisindeki kapsamını kontrol et ve suspect_labels.py ile eksik etiket ara.
  • Başka bir sınıf olarak adlandırılmış (cup 14 ö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#

Ultralytics Platform'da segmentasyon modeli için eğitim grafikleri: mAP50, mAP50-95, kesinlik ve geri çağırma özet kartlarının üzerinde dönem başına kesinlik, geri çağırma ve mAP50-95 eğrileri

Her eğitim çalıştırması bu dosyaları yazar; Ultralytics Platform da bulut eğitiminde aynı eğrileri canlı olarak çizer:

DosyaVeri hakkında ne söyler
confusion_matrix_normalized.pngHangi sınıfların birbiriyle karıştırıldığı veya arka plan olarak kaçırıldığı
BoxPR_curve.pngSı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.jpgGerçek val görüntülerindeki tahminler; sistematik kaçırmaları ara
labels.jpgModelin eğitim gördüğü sınıf sayıları ve kutu boyutları
results.pngKayı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ç.

Her yeniden eğitimde tek bir şeyi değiştir

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.

Dene

Görevinin YOLO26 kontrol noktasını varsayılan ayarlarla ince ayarla, ardından best.pt üzerinde rank_classes.py komutunu çalıştır. Val örneği çok az olan sınıfları atla, geriye kalan en zayıf sınıftan yaklaşık 50 görüntüyü denetle ve hataların kaçırma mı yoksa karıştırma mı olduğuna karar ver. Teslim edilecek çıktı: etkileyeceği görüntü sayısıyla birlikte tek bir veri kümesi eylemi (toplama, yeniden etiketleme veya yeniden tanımlama).

Tamamlanma ölçütü
Aşağıdakilerin tümü doğru olduğunda dersi tamamlamış olursun.
  • Varsayılan ayarlarla alınan temel sonuçta best.pt ve sınıf başına sıralanmış bir tablo bulunuyor.

  • Val örneği yeterli olan en zayıf sınıf, kaçırma ve karıştırma sayılarıyla birlikte belirtilmiş.

  • Bir veri kümesi eylemi, etkileyeceği görüntü sayısıyla birlikte yazılır ve henüz hiçbir hiperparametre değiştirilmemiştir.

Çö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:

BulguVeri kümesi eylemiBoyut
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 ekle4 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 ekleYeni kurala göre yaklaşık 30 eğitim görüntüsünü yeniden etiketle
1 örnekli sınıflarHenüz işlem yapma; bu sınıfları içeren val grupları ekleBir 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.

Sırada ne var

Son ders, tüm kursu her projenin başlangıç toplantısında müşteriyle birlikte kullanabileceğin tek sayfalık bir kontrol listesinde topluyor.

İlerlemeni kaydetmek için giriş yap