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

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

Etiketlenmiş bir görsel veri kümesini gösteren dizüstü bilgisayar, sıralanmış fotoğraf baskıları, sınıf not kâğıtları ve veri kümesi kontrol listesi bulunan bir masa

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.

Sonuç

Tek sayfalık bir hedef yaz ve başarı ölçütünü, herhangi bir model için PASS veya FAIL yazdıran bir kabul testi komut dosyasına dönüştür.

Hızlı Başlangıç
Nasıl ilerleyeceğini zaten biliyorsan, işte kısa sürüm.
  1. İş hedefini, son tarih içeren ölçülebilir tek bir cümleyle yaz.

  2. Hedefi karşılayan en basit yedi görüntü işleme görevinden birini seç.

  3. Her birinin dışarıda bıraktığı benzer bir görünümü belirterek 3–10 sınıfı birer cümleyle tanımla.

  4. Kabul testini yaz: ölçüt, eşik ve görülmemiş bir ayrılmış test kümesi. Ardından testi kod olarak çalıştır.

  5. v1'in ele almayacağı durumları listele.

Uygulamalı

Tek sayfalık hedef#

Yan yana Ultralytics YOLO görev çıktıları: algılama, poz, segmentasyon, sınıflandırma, OBB, anlamsal segmentasyon ve derinlik

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ırYanıtladığı soruDepo ö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öreviModel ne çıktı üretir?Nesne algılama: forkliftlerin ve kişilerin etrafındaki kutular.
SınıflarTam olarak ne etiketleniyor?forklift, person, pallet; diğer her şey arka plandır.
Kabul testiHangi 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ç#

Aynı kedi ve köpek sahnesinin üç farklı yanıtı: görüntü sınıflandırma bunun kedi olup olmadığını, nesne algılama nerede ne bulunduğunu ve görüntü segmentasyonu hangi piksellerin hangi nesneye ait olduğunu sorar

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örevEtiketleyicilerin ürettiği çıktıEtiketleme çabasıŞu durumda seç
SınıflandırmaGörüntü başına bir etiketEn düşükGörüntü başına bir yanıt yeterliyse
Nesne algılamaHer nesne için sınıf + eksenlere hizalı kutuDüşükNesneleri sayman veya konumlarını belirlemen gerekiyorsa
Yönelimli sınırlayıcı kutularHer nesne için sınıf + döndürülmüş kutuOrtaNesneler uzun ve inceyse veya yukarıdan görülüyorsa
PozHer nesne için sınıf + adlandırılmış kilit noktalarYüksekEklem veya parça konumları önemlidir
Örnek bölütlemeHer nesne için sınıf + çokgenYüksekHer nesnenin dış hatları önemlidir
Anlamsal segmentasyonHer piksel için bir sınıfEn yüksekSayılabilir nesnelere değil, bölgelere ihtiyacın var
Derinlik tahminiHiç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ırHer pikselin uzaklığına ihtiyacın var

Bir demet muz üzerindeki görüntü açıklama türleri: sınıflandırma varlığı gösterir, tespit konum ve sayım bilgisi ekler, anlamsal segmentasyon hangi piksellerin muz olduğunu gösterir ve örnek segmentasyonu her muzun boyutunu ve şeklini ekler

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.

Segmentasyon varsayılan olarak bütçeyi tüketir

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.

Yazıya dökemiyorsan etiketleyiciler de etiketleyemez

"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 test

Her satırın gösterdiği:

  • classes=[0] yalnızca person sı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. mp ve mr, 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.
Ayrılmış test kümesi maddesi, puan kadar önemlidir

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.

Dene

Kendi projen için beş satırlı hedef tablosunu doldur ve işletme sonucundan sorumlu kişiye gönder. Sorguladığı her satırı gözden geçir. Ardından acceptance_test.py kopyala, sınıf kimliğini ve eşiklerini ayarla ve veri kümesi henüz yokken test hazır olsun diye betiği önceden eğitilmiş modele karşı çalıştır. Teslimat: objective.md ve çalışan bir acceptance_test.py.

Tamamlanma ölçütü
Aşağıdakilerin tümü doğru olduğunda dersi tamamlamış olursun.
  • İş hedefi, son tarih içeren ölçülebilir tek bir cümledir ve sorumlu kişi bu hedefi kabul etmiştir.

  • Her sınıfın tek cümlelik bir tanımı ve dışladığı, adı belirtilmiş en az bir benzer görünümlü nesnesi vardır.

  • acceptance_test.py, bir metrik, eşik ve adı belirtilmiş ayrılmış test kümesi için PASS veya FAIL yazdırır.

Çözümü göster

Farklı bir proje için hazırlanmış örnek bir hedef: boş raf bölmelerini tespit eden bir market zinciri.

SatırYanıt
İş hedefiEn çok satan 200 üründeki stokta yok dakikalarını bir çeyrek içinde %25 azaltmak.
Görüntü işleme göreviTespit. Mağazanın her boşluğun dış hattına değil konumuna ihtiyacı var; bu nedenle kutular çokgenlerden daha uygundur.
Sınıflargap: 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 testiEğ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.

Sırada ne var

Sonraki adımda hedefi, hangi görüntülerden kaç tane gerektiğini belirten bir veri kümesi tanımına dönüştür.

İlerlemeni kaydetmek için giriş yap