Veri Kümesinin Ne Zaman Hazır Olduğunu Bil
İlk eğitim çalıştırmasını sekiz geçer/kalır kontrolüne bağla, bir betiğin doğrulayabileceği üçünü otomatikleştir ve her başarısızlığın hangi düzeltmeyi gerektirdiğini bil.
Her projede ekibin eğitim yapmak istediği bir an gelir. Bazen veri kümesi hazırdır; bazen de hâlâ bir bölme sızıntısı veya eksik etiketlenmiş bir sınıf vardır. Bunlar bir haftalık GPU süresini boşa harcayıp kimsenin güvenmemesi gereken bir sonuç üretebilir. Her biri evet, hayır veya belgelenmiş istisna olarak puanlanan sekiz kontrol, bu kararı ruh hâline bağlı olmaktan çıkarıp nesnel hâle getirir.
Uygulamalı
Sekiz kontrol#
| # | Kontrol | Geçme ölçütleri | Başarısız olursa geri dönülecek yer |
|---|---|---|---|
| 1 | Net hedef | Hedef, görev, sınıflar ve kabul testi yazılı ve üzerinde uzlaşılmış | İş Hedefiyle Başla |
| 2 | Tanımlanmış sınıflar | Her sınıfın bir tanımı ve kapsam dışında bıraktığı, benzer görünen bir örnek vardır | Hedef ve etiketleme kılavuzu |
| 3 | Temsili görüntüler | Her teknik özellik senaryosu kotasını karşılıyor; görüntülerin çoğu üretim kaynaklarından geliyor | Yüksek Kaliteli ve Temsili Veri Topla |
| 4 | Yeterli hacim | Sınıf başına ≥ 1.500 görüntü ve ≥ 10.000 örnek ya da belgelenmiş bir istisna | Teknik özellikler ve veri toplama |
| 5 | Tutarlı etiketler | Kılavuz yazılmış, kalibrasyon turu tamamlanmış, uyum ≥ %90 | Etiketleme İçin En İyi Uygulamalar |
| 6 | Kalite kontrolü tamamlandı | Denetim betiğinde sorun yok, şüpheli örnekler incelenmiş, kalite kontrol notları yazılmış | Veri Kümesi Kalite Kontrolü |
| 7 | Temiz veri bölmeleri | Gruplara göre bölünmüş, hiçbir grup iki bölmede yer almıyor, her sınıf her bölmede bulunuyor | Veri Kümesini Doğru Şekilde Böl |
| 8 | Arka plan görüntüleri | Görüntülerin %0–10'u etiket içermeyen karelerden oluşuyor | Teknik özellikler ve veri toplama |
Kontrol listesi, veri toplama ve etiketleme kılavuzunun tek tek ele aldığı kararların aynısını bir araya getirerek tek bir devam et/devam etme kararına dönüştürür.
Sayılabilir kontrolleri otomatikleştir#
4, 7 ve 8 numaralı kontroller aritmetik işlemlerden ibarettir; bu nedenle bir betik bunları her seferinde aynı şekilde puanlar. Bu betik, alıştırma kümesini ve önceki derste group_split.py tarafından yazılan bölme listelerini okur:
from collections import Counter
from pathlib import Path
root = Path("datasets/practice") # images/, labels/, and the train/val/test.txt lists from group_split.py
splits = {s: [Path(p).stem for p in (root / f"{s}.txt").read_text().split()] for s in ("train", "val", "test")}
def classes(stem):
label = root / "labels" / f"{stem}.txt"
return [int(r.split()[0]) for r in label.read_text().splitlines() if r.strip()] if label.exists() else []
stems = [s for split in splits.values() for s in split]
instances = Counter(c for s in stems for c in classes(s))
images = Counter(c for s in stems for c in set(classes(s)))
background = sum(not classes(s) for s in stems) / len(stems)
groups = {split: {s.rsplit("_", 1)[0] for s in names} for split, names in splits.items()}
per_split = {split: {c for s in names for c in classes(s)} for split, names in splits.items()}
shared = (groups["train"] & groups["val"]) | (groups["train"] & groups["test"]) | (groups["val"] & groups["test"])
weakest = min(instances, key=lambda c: (images[c], instances[c]))
checks = {
"4 volume": (images[weakest] >= 1500 and instances[weakest] >= 10_000,
f"weakest class {weakest}: {images[weakest]} images, {instances[weakest]} instances"),
"7 no shared groups": (not shared, f"{len(shared)} groups appear in more than one split"),
"7 every class in every split": (all(per_split[s] == set(instances) for s in splits),
", ".join(f"{s} misses {len(set(instances) - per_split[s])}" for s in splits)),
"8 background 0-10%": (background <= 0.10, f"{background:.1%} background images"),
}
for name, (ok, detail) in checks.items():
print(f"{'PASS' if ok else 'FAIL'} {name:<29} {detail}")FAIL 4 volume weakest class 30: 1 images, 1 instances
PASS 7 no shared groups 0 groups appear in more than one split
FAIL 7 every class in every split train misses 5, val misses 36, test misses 41
PASS 8 background 0-10% 1.6% background imagesGruplu bölme sızıntıyı giderdi, ancak alıştırma kümesi hazır olmaktan çok uzak: en zayıf sınıfında (30, skis) yalnızca tek bir etiketli örnek var ve val, sınıfların yarısını puanlayamıyor. 128 demo görüntüsü için beklenen sonuç budur; bu kontrolün bir haftalık eğitimden önce vermek üzere tasarlandığı sonuç da tam olarak budur.
Betik sayılabilen şeyleri kapsar. 1, 2, 3, 5 ve 6 numaralı kontroller insan gerektirir: üzerinde uzlaşılmış bir hedef, yazılı tanımlar, spesifikasyon kapsamı, ölçülmüş bir uyum puanı ve kalite kontrol notları. Bunları elle, her biri için tek satır kanıtla puanla.
Karar ver: eğit, eksikle birlikte teslim et veya düzelt#
Bir kontrol başarısız olduğunda, cazip gelen sonraki adım neredeyse her zaman veriyi düzeltmekten başka bir şeydir:
| Cazip kestirme yol | Neden işe yaramaz |
|---|---|
| "Daha büyük bir model dene." | Daha büyük bir model de etiket gürültüsünü aynı ölçüde öğrenir. |
| "Öğrenme oranını ayarla." | Hiçbir optimizer ayarı eksik bir sınıfı veya senaryoyu ekleyemez. |
| "Daha fazla epoch eğit." | Dar kapsamlı verilerle daha fazla epoch, aşırı öğrenmeye daha hızlı yol açar. |
| "Daha fazla artırma ekle." | Artırım, veride hiç bulunmayan senaryoları oluşturamaz. |
Neredeyse hazır olan üç örüntü#
| Örüntü | Başarısız kontrol | Nasıl görünür | Çözüm |
|---|---|---|---|
| Çeşitlilik olmadan hacim | 3 | 5.000 görüntü, tek kamera, hiç uç durum yok | Eğitimden önce daha fazla kamera, konum ve zamandan görüntü topla |
| Tutarlılık olmadan çeşitlilik | 5 | Etiketleyiciler kutu sınırları ve örtülme konusunda anlaşamıyor | Kılavuzu tamamla, kalibrasyon yap ve etkilenen örnekleri yeniden etiketle |
| Fark edilmesi güç sızıntı | 7 | Video karelerini görüntü başına rastgele bölme | Klip, kamera veya güne göre yeniden böl; val mAP'nin düşmesini bekle, çünkü bu düşüş gerçeği yansıtır. |
Bilinen bir eksikle yayına al#
Her kontrol yeşile dönmeden önce odaklanmış bir ilk modelle başlamak çoğu zaman doğru karardır: bir pilot, prototip veya kameraların bir alt kümesinde çalışan bir v1. Üretimdeki bir model, karanlıkta veri kümesini cilalamaktan daha hızlı biçimde gerçekte neyin yanlış olduğunu gösterir. Bir modeli eksikle yayına alırken şu üç şeyi not et:
- Hangi kontrol başarısız oldu.
- Beklenen etki; örneğin "gece verisi yok; hava karardıktan sonra geri çağırmanın düşmesi bekleniyor".
- v1 çalışırken bu eksiği giderecek veri toplama planı.
"Hacim: istisna" ifadesi bir sonraki kişiye hiçbir şey anlatmaz. "Hacim: 700 örnek içeren pallet; kalabalık bölmelerde palet geri çağırımı daha düşük bekleniyor; hazirana kadar 2.000 ek etiket" ise yönetilen bir risktir. Her istisna için kabul testi üzerindeki beklenen etkiyi belirt.
Her yeniden eğitimden önce tekrar çalıştır#

v1 için hazır olan bir veri kümesi, v3 için otomatik olarak hazır değildir. Yeni sınıflar, yeni kaynaklar ve yeni etiketleyiciler, daha önce geçen bir kontrolü başarısız hâle getirebilir; yeni etiketler birikirken üretim verileri de dağılım kaymasına uğrar. Her yeniden eğitimden önce readiness.py komutunu tekrar çalıştır ve manuel kontrolleri yeniden puanla; bu birkaç dakika sürer, atlamaksa bozuk bir veri kümesi üzerinde bir haftalık eğitime mal olabilir.
Çözümü göster
Alıştırma kümesi için puanlanmış bir kontrol listesi:
| # | Kontrol | Puan | Kanıt |
|---|---|---|---|
| 1 | Amaç net | evet | 1. dersteki objective.md ve acceptance_test.py |
| 2 | Sınıflar tanımlı | hayır | COCO'nun 80 sınıf adı için yazılı tanımlar veya kapsam dışı benzer örnekler yok |
| 3 | Görüntüler temsili | hayır | coverage.py: cam2–cam4 kota altında |
| 4 | Hacim yeterli | hayır | readiness.py: en zayıf sınıfta 1 görüntü var |
| 5 | Etiketler tutarlı | hayır | Kalibrasyon turunda uyum %47 |
| 6 | QC tamamlandı | kısmen | Denetim yapıldı; 000000000438.jpg içindeki şüpheli örnekler hâlâ çözümlenmedi |
| 7 | Veri bölümleri temiz | hayır | Paylaşılan grup yok, ancak val'de 71 sınıfın 36'sı eksik |
| 8 | Arka plan görüntüleri | evet | 1.6% |
Karar: önce düzelt. Kabul testine yönelik riske göre sıralama: (1) sınıf listesini amacın gerektirdiği sınıflara indir; böylece 2, 4 ve 7. kontrollerin kapsamı aynı anda daralır; (2) bu sınıflar için daha fazla grup topla; (3) kılavuzdaki uzaktaki kişilerle ilgili kuralı tamamla ve etiketleri yeniden düzenle. Demo kümesi bu kontrolden geçemez ve geçmemesi gerekir.