Veri Kümesi YAML Dosyası Yaz
Ultralytics'i klasörlerine yönlendiren ve sınıflarına ad veren data.yaml dosyasını yaz, yolların her konumdan çözümlendiğinden emin ol ve yolo val ile hızlı bir test yap.
Veri kümesi YAML dosyası, klasörlerinle tüm Ultralytics komutları arasındaki sözleşmedir. Bir yolu yanlış girersen hiçbir şey çalışmaz; sınıf sırasını yanlış belirlersen her şey çalışır ama her tahmin yanlış adı taşır ve hiçbir uyarı verilmez.
Bu derste hap veri kümesi için data.yaml dosyasını yazacak, Ultralytics'in yolları nasıl çözdüğünü ve bunun bir ekip arkadaşının makinesinde de çalışmasını sağlayacak ayrıntıları öğrenecek, ayrıca eğitim sürecinin aşması gereken başlangıç değerini de veren tek satırlık bir doğrulama çalıştırmasıyla bunu kanıtlayacaksın.
Uygulamalı
Dosyayı Yaz#

Ultralytics Platform'daki veri kümelerinin kendi sınıfları ve bölmeleri vardır; eğitim, data=ul://username/datasets/name gibi bir URI ile bunlara yönlendirilir. Kendi makinen için bu sözleşme YAML dosyasıdır. Bunu my_dataset/data.yaml olarak kaydet:
path: my_dataset # dataset root: absolute, or relative to where you run yolo
train: images/train # relative to path
val: images/val # relative to path
# test: images/test # optional held-out split
names:
0: pill| Anahtar | Gerekli | Anlamı |
|---|---|---|
path | Hayır | Veri kümesinin kök dizini; train, val ve test bu dizine göreli yollardır. Belirtilmezse YAML dosyasının kendi klasörü kullanılır. |
train, val | Evet | Bir görüntü klasörü, görüntü yollarını listeleyen bir .txt dosyası ya da bunlardan birinin listesi |
test | Hayır | Yalnızca split=test ile değerlendirilen, ayrılmış test görüntüleri |
names | Evet | Sınıf indeksi → adı; listenin uzunluğu sınıf sayısını belirler |
download | Hayır | Görüntüleri eksik olduğunda veri kümesini getiren URL veya betik |
train ve val görüntü klasörlerini gösterir; etiketler, images değerinin labels ile değiştirilmesiyle bulunur. coco8 YAML dosyası çalışan en küçük örnektir; VOC YAML dosyası ise daha büyük bir örnek sunar.
Uygulamalı Örnek: Hızlı Test Et#
Önceden eğitilmiş modelle doğrulama, baştan sona yapılabilecek en hızlı kontroldür. Tüm görüntüleri ve etiketleri okur, sorunları bildirir ve metrikleri hesaplar:
yolo val model=yolo26n.pt data=my_dataset/data.yamlval: Scanning my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt: 100%
Class Images Instances Box(P R mAP50 mAP50-95)
all 23 399 0.0256 0.00251 0.001 0.0002Sırayla oku:
Scanning my_dataset/labels/val: Ultralytics'in çözümlenmiş gerçek klasörü. İstediğin klasör olduğundan emin ol.23 images, 0 backgrounds, 0 corrupt: her doğrulama görüntüsünün geçerli bir etiket dosyası var. İstemeden eklediğin arka plan görüntüleri veya herhangi bir bozuk sayım, önceki derse geri dönmen gerektiğini gösterir.399nesnesi: etiket dosyalarında 399 hap var.- 0.0002 mAP50-95: hata değil, beklenen sonuç. COCO'da hap sınıfı yok; dolayısıyla önceden eğitilmiş model hapları bulamaz. Sıfıra yakın bu puan başlangıç değerin. İnsan veya araba gibi sınıfların COCO'da bulunduğu durumlarda aynı komut anlamlı bir başlangıç değeri verir.
Yolları Her Konumdan Çözümlenecek Şekilde Ayarla#
"Görüntüler bulunamadı" hatalarının çoğu yol hatalarından kaynaklanır. Ultralytics path değerini şöyle çözümler:
datasets_dir bir Ultralytics ayarıdır; yolo settings bu değeri yazdırır, ayarlar kılavuzu ise nasıl değiştirileceğini gösterir. Yerleşik veri kümeleri bu varsayılan değere dayanır: coco8.yaml, path: coco8 değerini ve bir download: URL'sini belirler; böylece data=coco8.yaml her klasörden çalışır.
Karar kuralları:
- Yalnızca sen kullanacaksan ve her zaman proje klasöründen çalıştıracaksan mı? Göreli bir
pathyeterlidir. - Takım arkadaşların, sunucular, CI veya başka klasörlerdeki not defterleri mi? Mutlak bir
pathkullan. - Veriler başka bir yerde mi ve kendini getirmesi mi gerekiyor? Zip URL'siyle
download:ekle.
Sınıf İndekslerini Sözleşme Olarak Koru#
Her etiket satırının başındaki tam sayı, names içindeki bir indekstir. Ultralytics aralığı denetler — Label class 1 exceeds dataset class count 1 — ancak anlamı denetleyemez. Etiketleme aracın 0: forklift, 1: person dışa aktardıysa ve YAML dosyan 0: person, 1: forklift diyorsa eğitim başarılı olur, doğrulama mAP iyi görünür ama her tahmin yanlış adı taşır. Etiketleme aracı, dönüştürme betiği, YAML dosyası ve dağıtım kodun tarafından paylaşılan sınıf listesi için tek bir doğruluk kaynağı kullan.
Bu Hatalardan Kaçın#
Belirti: Veri kümesi indirme diziniyle ilgili bir notla birlikte FileNotFoundError: Dataset 'data.yaml' images not found, missing path '.../datasets/my_dataset/images/val'. Neden: Başka bir klasörden çalıştırdın; bu yüzden göreli path mevcut değildi ve Ultralytics bunun yerine datasets_dir altında arama yaptı. Çözüm: Proje klasöründen çalıştır veya path yolunu mutlak yap.
names içindeki girdileri yeniden etiketlemeden değiştirmek veya silmek, tüm etiketlerin anlamını fark ettirmeden değiştirir. Model hata vermeden yanlış sınıfları öğrenir ve tahmin eder. Yeni sınıfları sıradaki boş indeksle sona ekle ve mevcut sınıfları asla yeniden numaralandırma.
val: [images/val_day, images/val_night], iki klasörü tek bir doğrulama kümesinde birleştirir ve tek bir değer raporlar. Gündüz ve gece sonuçlarını ayrı görmek — ya da yeni bir üretim örneğinin yanında özenle seçilmiş bir regresyon kümesini değerlendirmek — için her küme için ayrı bir YAML dosyası tut ve her birini doğrula. Yalnızca bir kez, split=test ile değerlendirdiğin test bölmesi Veri Kümesini Doğru Böl bölümünde ele alınıyor.
Artırma ve önbelleğe alma gibi eğitim ayarları YAML anahtarları değil, train argümanlarıdır; hepsi yapılandırma başvurusunda bulunur.
Çözümü göster
path: /home/you/projects/pills/my_dataset # absolute path to the dataset root
train: images/train
val: images/val
names:
0: pillval: Scanning /home/you/projects/pills/my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt
all 23 399 0.0256 0.00251 0.001 0.0002Başka bir klasörden çalıştırınca göreli sürüm Dataset ... images not found nedeniyle başarısız oldu; çünkü my_dataset orada yoktu ve datasets_dir yedek konumunda da kopya bulunmuyordu. Mutlak path arama sorununu ortadan kaldırıyor. Başlangıç mAP50-95 değeri yaklaşık 0: önceden eğitilmiş modelde hap sınıfı yok.