İş Hedefiyle Başla
Tek bir görsel bile toplanmadan önce bir iş hedefini görüntü işleme görevine, tanımlanmış sınıflara ve kod olarak çalıştırabileceğin bir kabul testine dönüştür.

Bir depo ekibi bir ay boyunca her şeyin fotoğrafını çekiyor, ardından güvenlik sorumlusunun yalnızca hareket eden forkliftlerin yakınındaki kişilerle ilgilendiğini öğreniyor ve etiketlerin yarısının yeniden yapılması gerekiyor. İlk fotoğraf çekilmeden önce üzerinde anlaşılmış tek sayfalık bir hedef bunu önler. Hazırlaması bir öğleden sonra sürer ve bu kurstaki sonraki tüm tercihleri belirler: ne toplanacağı, neyin etiketleneceği ve modelin ne zaman kullanıma sunulacak kadar iyi olduğu.
Uygulamalı
Tek sayfalık hedef#

Sonraki her adımın dayandığı soruları beş satır yanıtlıyor. Proje hedeflerini tanımlama kılavuzu aynı konuları daha derinlemesine ele alıyor. İşte bu kursun temel aldığı, doldurulmuş bir depo örneği:
| Satır | Yanıtladığı soru | Depo örneği |
|---|---|---|
| İş hedefi | İşletme için ne değişecek ve ne zamana kadar? | Altı ay içinde yükleme kapılarındaki ramak kala olaylarını %30 azalt. |
| Görüntü işleme görevi | Model ne çıktı üretir? | Nesne algılama: forkliftlerin ve kişilerin etrafındaki kutular. |
| Sınıflar | Tam olarak ne etiketleniyor? | forklift, person, pallet; diğer her şey arka plandır. |
| Kabul testi | Hangi sayı "kullanıma sun" anlamına gelir? | Eğitimde kullanılmayan kameralardan alınmış 500 karede, kesinlik ≥ 0.85 iken person için duyarlılık ≥ 0.95. |
| Kapsam dışı | v1 neleri vaat etmeyecek? | Zifiri karanlık yükleme alanları, rafların arkasında tamamen gizlenmiş kişiler ve elle çekilen transpaletler. |
Sayfayı tüm ekibin görebileceği bir yere sabitle. Bir paydaş sonradan bir satıra itiraz ederse önce sayfayı, sonra veri kümesini değiştir.
Soruyu yanıtlayan en basit görevi seç#

Görev, etiketleyicilerin ne çizeceğini belirler; bu da etiketleme bütçesinin büyük bölümünü belirler. Bu karar ağacını izleyerek ilerle ve iş sorusunu yanıtlayan ilk görevde dur:
Ultralytics YOLO yedi görevi destekler. Veri kümesini planlarken önemli olan, her görevin etiketleme maliyetidir; Computer Vision Foundations, bu görevleri görüntü işleme görevleri dersinde derinlemesine karşılaştırır.
| Görev | Etiketleyicilerin ürettiği çıktı | Etiketleme çabası | Şu durumda seç |
|---|---|---|---|
| Sınıflandırma | Görüntü başına bir etiket | En düşük | Görüntü başına bir yanıt yeterliyse |
| Nesne algılama | Her nesne için sınıf + eksenlere hizalı kutu | Düşük | Nesneleri sayman veya konumlarını belirlemen gerekiyorsa |
| Yönelimli sınırlayıcı kutular | Her nesne için sınıf + döndürülmüş kutu | Orta | Nesneler uzun ve inceyse veya yukarıdan görülüyorsa |
| Poz | Her nesne için sınıf + adlandırılmış kilit noktalar | Yüksek | Eklem veya parça konumları önemlidir |
| Örnek bölütleme | Her nesne için sınıf + çokgen | Yüksek | Her nesnenin dış hatları önemlidir |
| Anlamsal segmentasyon | Her piksel için bir sınıf | En yüksek | Sayılabilir nesnelere değil, bölgelere ihtiyacın var |
| Derinlik tahmini | Hiçbir şey çizilmez: her görüntü için, genellikle bir derinlik sensöründen alınan derinlik haritası | Yakalama donanımına bağlıdır | Her pikselin uzaklığına ihtiyacın var |

Muz görselini bir fiyat listesi gibi oku: tespit zaten varlık, konum ve sayım sorularını yanıtlar; boyut ve şekil bilgisi ekleyen yalnızca iki segmentasyon panelidir ve bunun etiketleme maliyeti çok daha yüksektir. İşletmenin tek ihtiyacı "kaç muz var" sorusunun yanıtıysa tespit yeterlidir; çokgenler boşa harcanan bütçedir.
Ekipler daha hassas göründüğü için sık sık segmentasyona yönelir, ardından veri kümesi gece vardiyalarını, yağmuru veya ikinci sahayı kapsayamadan etiketleme bütçeleri tükenir. Poligonlar nesne başına kutulardan birkaç kat daha maliyetlidir. Segmentasyonu yalnızca hedefin bir satırı, alan ölçme veya maskeyle kesme gibi, doğrudan dış çizgiyi gerektiriyorsa seç.
Etiketleyicinin uygulayabileceği sınıflar tanımla#
Bir sınıf, yalnızca iki etiketleyici aynı nesneyi aynı şekilde etiketliyorsa işe yarar. Her sınıfı, dışarıda bıraktığı benzer görünümlü bir şeyi belirten tek cümlelik bir tanım olarak yaz:
forklift: çatalları ve direği dâhil, motorlu bir forklift. Manuel transpaletler hariçtir.person: kısmen görünür, oturuyor veya araç kabininin içinde olsa bile tüm insanlar. Yansımalar ve posterler hariçtir.pallet: yüklü veya boş, ahşap ya da plastik bir nakliye paleti. Palet tabanı olmayan istiflenmiş kasalar hariçtir.
Ardından ayrıntı düzeyini bilinçli olarak seç. Geniş kapsamlı sınıflar ("araç") daha ucuzdur ve daha hızlı yakınsar; ayrıntılı sınıflar ("sedan", "pikap") sonraki aşamalarda daha kullanışlıdır ancak tutarlı biçimde sürdürülmeleri daha zordur. İşletmenin ihtiyaç duyduğu sınıflarla başla. Ayrıntılı etiketler daha sonra tek satır kodla geniş kapsamlı sınıflarda birleştirilebilir; ancak geniş kapsamlı etiketler yeniden etiketlenmeden asla ayrılamaz.
"Tehlikeli görünen her şey" veya "koridoru kapatan şeyler" bir sınıf değildir. Her etiketleyiciden kendi değerlendirmesini yapmasını ister ve tutarsız değerlendirmelerle eğitilen model bu tutarsızlığı öğrenir. Yeni bir etiketleyicinin yalnızca tanıma bakarak uygulayabileceği hâle gelene kadar muğlak bir sınıfı yeniden yaz veya bunu algılamadan sonra uygulanan bir kurala dönüştür (örneğin, "koridor poligonunun içindeki her pallet").
Metrik için çalıştırabileceğin bir kabul testi oluştur#
Hata maliyetine uygun metriği seç:
- Bir hatalı kaçırma pahalıya mal oluyorsa (güvenlik, kusurlar): o sınıf için duyarlılığı eşik olarak kullan.
- Yanlış alarm pahalıya mal oluyorsa (parçaları otomatik reddetme, personele uyarı gönderme): kesinliği eşik olarak kullan.
- Her sınıf eşit derecede önemliyse (sayım, envanter): hiçbir sınıf ortalamanın arkasına saklanamasın diye sınıf başına AP değerini eşik olarak kullan.
YOLO performans metrikleri kılavuzu her metriği açıklar. Ardından testi kod olarak yaz; böylece "yeterince iyi mi?" sorusu tartışma konusu olmaktan çıkar. Bu betik bugün önceden eğitilmiş bir modelle COCO8 demo veri kümesinde, daha sonra da kendi kontrol noktan ve ayrılmış test kümenle çalışır:
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # later: your fine-tuned runs/detect/train/weights/best.pt
metrics = model.val(data="coco8.yaml", classes=[0], verbose=False) # 0 = person; later: your holdout YAML
precision, recall = metrics.box.mp, metrics.box.mr
print(f"person: precision={precision:.2f} recall={recall:.2f}")
print("PASS" if recall >= 0.95 and precision >= 0.85 else "FAIL: below the acceptance test") all 4 10 0.939 0.8 0.848 0.387
person: precision=0.94 recall=0.80
FAIL: below the acceptance testHer satırın gösterdiği:
classes=[0]yalnızcapersonsınıfını puanlar; böylece diğer sınıflar sonucu yükseltemez. Kendi güvenlik sınıfı kimliğini kullan.- Doğrulayıcı satırı, etiketlenmiş 10 kişi içeren 4 görüntü gösterir.
mpvemr, bu iki metriği en iyi dengeleyen güven eşiğindeki kesinlik ve duyarlılıktır (maksimum F1). - Önceden eğitilmiş bir COCO modeli 10 kişiden 8'ini buluyor; dolayısıyla duyarlılık 0.80: kesin ama yeterince güvenli değil. Bu BAŞARISIZ sonucu, testin görevini yaptığını gösterir. Bu kursta BAŞARISIZ sonuç, hiperparametrelere değil veriye geri dönmeyi gerektirir.
Eğitimle aynı kameralardan ve günlerden alınan bir test, hazırlığı değil ezberi ölçer. Ayrılmış test kümesini hedefte belirt ("eğitimde kullanılmayan kameralar", "görüntülerin son iki haftası") ve Veri Kümesini Doğru Böl rehberini kullanarak oluştur.
v1'in neleri yapmayacağını yaz#
Hiçbir model kusursuz değildir; bu nedenle baştan kabul edilebilir kaçırmaları belirt: söz veremeyeceğin koşullar (yoğun sis, zifiri karanlık), karıştırılmasını tolere edeceğin benzer görünümlü nesneler ve v2'ye ertelenen nadir sınıflar. Bu satır, hedefini tutturan bir modelin yazılı olmayan %100 beklentisine göre değerlendirilmesini önler ve veri toplama ekibine henüz hangi konulara emek harcamaması gerektiğini söyler.
Çözümü göster
Farklı bir proje için hazırlanmış örnek bir hedef: boş raf bölmelerini tespit eden bir market zinciri.
| Satır | Yanıt |
|---|---|
| İş hedefi | En çok satan 200 üründeki stokta yok dakikalarını bir çeyrek içinde %25 azaltmak. |
| Görüntü işleme görevi | Tespit. Mağazanın her boşluğun dış hattına değil konumuna ihtiyacı var; bu nedenle kutular çokgenlerden daha uygundur. |
| Sınıflar | gap: en az bir ürün genişliğinde boş raf bölmesi; müşteri veya alışveriş arabası tarafından gizlenen bölmeler hariçtir. price_tag: raf kenarı etiketi; promosyon etiketleri hariçtir. |
| Kabul testi | Eğitimde kullanılmamış 5 mağazadan alınan 400 görüntüde, kesinlik ≥ 0.80 iken gap için duyarlılık ≥ 0.90. |
| Kapsam dışı | Yansıma bulunan dondurucu kapakları, reyon sonu teşhirleri, manav bölümü. |
Önce duyarlılık gelir; çünkü bir boşluğu kaçırmak satış kaybına, yanlış alarm ise bir çalışanın kısa bir yürüyüş yapmasına mal olur. acceptance_test.py yalnızca üç yerde değişir: data="holdout_stores.yaml" (görülmemiş beş mağaza), classes=[0] (0 artık gap) ve recall >= 0.90 and precision >= 0.80 eşikleri.