Ultralytics YOLO27: Bekleme listesine katıl.
Get Started
Bilgisayarlı Görünün Temelleri·Görev Seç·Ders 4/10
Dersbaşlangıç düzeyi

Kutular ve maskeler: segmentasyona gerçekten ne zaman ihtiyaç duyarsın?

Gerçek bir görüntüde maskenin kutuya ne kattığını ölç ve projenin şekil bilgisine ihtiyaç duyup duymadığına sonraki aşamadaki tüketiciye göre karar ver.

Çoğu insan yapay zekâ destekli görüntü işlemeyi düşündüğünde maskeleri hayal eder; ekiplerin etiketleme bütçesinin en büyük kısmını harcadığı yer de burasıdır. Maske, nesnenin tam şeklini; kutu ise yalnızca nerede olduğunu gösterir. Bu fark bazı ürünlerin tümüyle nasıl çalışacağını belirler; çoğu üründe ise hiçbir şeyi değiştirmez.

Sonuç

Bir görüntüde kutu ile maske arasındaki farkı ölç ve çıktıyı okuyan kodun gerekçesiyle projen için kutu mu maske mi kullanacağını seç.

Hızlı Başlangıç
Nasıl ilerleyeceğini zaten biliyorsan, işte kısa sürüm.
  1. Kutular konumu; maskeler şekli, alanı ve kesin sınırları verir.

  2. Alan, boşluklar veya mesafe mi gerekiyor? Maskeler. Sayım, bölgeler, izleme veya kırpma mı? Kutular.

  3. Nesne başına sayım için örnek segmentasyonu. Yalnızca bölge kapsamı için anlamsal segmentasyon.

  4. Piksel sayılarını aynı çözünürlükte karşılaştır: retina_masks=True.

  5. Etiketleme bütçesini kesinleştirmeden önce 20 kutu ve 20 çokgen için gereken süreyi ölç.

Uygulamalı

Maskenin kattıkları#

Bir şehir kavşağında Ultralytics YOLO örnek segmentasyonu; her otomobil, otobüs ve yaya için ayrı bir maske

Her nesne için Segment görevi, algılayıcının döndürdüğü her şeyi — sınıf, kutu, güven — ve nesneye ait pikselleri döndürür; böylece yukarıdaki her otomobil, otobüsten ve yayalardan ayrı, kendine ait bir kontura sahip olur. Maskeyi çokgen (masks.xy) veya ikili görüntü (masks.data) olarak okuyabilirsin.

Şekil, sayıları ne kadar değiştiriyor? Her nesnenin kutu alanını maske alanıyla karşılaştır:

from ultralytics import YOLO

model = YOLO("yolo26n-seg.pt")
result = model("https://ultralytics.com/images/bus.jpg", retina_masks=True, verbose=False)[0]

for box, mask in zip(result.boxes, result.masks.data):
    x1, y1, x2, y2 = box.xyxy[0].tolist()
    box_area = (x2 - x1) * (y2 - y1)
    mask_area = float(mask.sum())  # pixels inside the object's mask
    name, ratio = result.names[int(box.cls)], mask_area / box_area
    print(f"{name:7} box={box_area:7.0f} px  mask={mask_area:7.0f} px  ({ratio:.0%})")
person  box=  97116 px  mask=  49331 px  (51%)
person  box=  68102 px  mask=  21316 px  (31%)
bus     box= 410093 px  mask= 255265 px  (62%)
person  box=  55998 px  mask=  33524 px  (60%)
person  box=  23690 px  mask=  11109 px  (47%)

Otobüs kutusunun yalnızca %62'sini, bir kişi ise %31'ini dolduruyor. Yalnızca kutulardan hesaplanan her sayı — boyalı alan, döküntü büyüklüğü, bir rafın ne kadarının boş olduğu — bu oran kadar hatalı olur. Ürünün böyle bir sayı raporluyorsa maskelere ihtiyacın var. Ürün yalnızca sayıyor veya konum belirliyorsa ek pikseller hiçbir şeyi değiştirmez.

Piksel sayılarını aynı çözünürlükte karşılaştır

Belirti: maske alanları, kutu alanlarının yanında 3–4 kat küçük görünüyor. Neden: varsayılan olarak masks.data çıkarım boyutunda (burada 640×480) dönerken kutular özgün görüntü piksellerindedir (1080×810). Çözüm: yukarıdaki gibi retina_masks=True değerini ilet veya sayıları kendin ölçeklendir.

Demoya göre değil, çıktıyı kullanana göre karar ver#

Sonraki aşamadaki ihtiyaçKutular yeterli mi?Neden
Nesneleri say veya varlıklarını kontrol etEvetYanıtın tamamı konumdan ibaret
Bir nesne bölgeye girdiğinde uyarı verEvetBir kutunun çizgiyi geçmesi yeterli
Nesneleri kareler boyunca izleEvetTakip algoritmaları kutuları eşleştirir
İkinci bir sınıflandırıcı için kırpEvetKırpma için yalnızca kutu gerekir
Alanı veya kapsamı ölç (yabani otlar, pas, döküntüler)HayırDüzensiz şekiller kutu alanını anlamsız kılar
Nesneyi arka plandan ayır (arka planı kaldırma, AR)HayırTam sınıra ihtiyacın var
Boşluğu veya teması kontrol et (robotik kavrama, çarpışma)HayırKutu nesnenin boyutunu olduğundan büyük gösterir
Birbirine değen düzensiz nesneleri ayırÇoğu zaman hayırÖrtüşen kutular, hangi piksellerin hangi nesneye ait olduğunu belirsizleştirir

Ürününün ihtiyaç duyduğu her satırda "evet" yanıtı varsa bir algılayıcı kullanıma sun. Yalnızca şekil bilgisinin gerçekten faydası olduğunda YOLO26 segmentasyonuna yönel.

Örnek ve anlamsal segmentasyon#

Örnek segmentasyonu her nesneye kendi maskesini verir; böylece üst üste binen üç otomobil yine üç otomobil olarak kalır. Anlamsal segmentasyon her piksele yalnızca bir sınıf etiketi atar: tüm otomobil pikselleri tek bir "otomobil" bölgesine dönüşür ve sayım bilgisi kaybolur. Hücre, meyve ve kusur gibi tek tek nesneleri saymak veya ölçmek için örnek segmentasyonunu kullan. Yol ile kaldırım, ekili alan ile toprak gibi bölgelerin kapsamını ölçmek için anlamsal segmentasyonu kullan.

Şekil bilgisini etiketlemenin maliyeti#

Bir kutu çizmek iki tıklama gerektirir. İyi bir çokgen çizmek onlarca tıklama gerektirebilir ve her sınır anlaşmazlığa yol açabilir: Çanta kişinin parçası mı, gölge otomobilin parçası mı? Genel bir kurala güvenmek yerine kendi maliyetini ölç: bir etiketleyicinin 20 nesneyi kutu olarak ve aynı 20 nesneyi çokgen olarak etiketlemesinin ne kadar sürdüğünü ölç, ardından aradaki farkı veri kümesinin boyutuyla çarp.

Yapay zekâ destekli araçlar aradaki farkı büyük ölçüde kapatır. Akıllı Etiketleme ve Toplu Etiketleme, tek bir tıklamadan veya kutudan maske önerir; böylece etiketleyiciler sınırları baştan çizmek yerine düzeltir — ancak her sınırı yine de birinin incelemesi gerekir.

İlk maskeyi oluşturmadan önce sınır kurallarını yaz

Etiketleme başlamadan önce örtülme, şeffaf nesneler, gölgeler, kare kenarında kesilen nesneler ve nesnelere bağlı öğeler (çantalar, kulplar, yükler) için karar ver; aynı sayfayı etiketleyicilere ve incelemecilere ver. Etiketleme En İyi Uygulamaları bu kuralların nasıl uygulanacağını açıklar; COCO-Seg veri kümesi ise büyük ölçekte tutarlı maskeler sunar.

Maskeleri örnekleme yoluyla denetlerken taşma (maske sınırın dışına taşar), delikler (nesnenin içindeki bölgeler atlanır), hayalet sınırlar (maske bir JPEG kusurunu izler) ve belirsiz parçalar (bavulun kolu bavul maskesine dahil mi?) olup olmadığına bak.

Dene

Kutu-maske betiğini kendi projenin bir görüntüsünde (veya bus.jpg üzerinde) çalıştır. Ana sınıfın için maske/kutu oranını kaydet, sonraki aşamadaki ihtiyacına uyan tüketici tablosu satırını bul ve tek bir satır yaz: “kutular” veya “maskeler”; ardından bu kararı belirleyen tüketiciyi belirt.

Tamamlanma ölçütü
Aşağıdakilerin tümü doğru olduğunda dersi tamamlamış olursun.
  • Ana sınıfın için ölçülmüş bir maske/kutu oranına sahipsin.

  • Kutuları mı maskeleri mi seçeceğini belirten ve bu kararı belirleyen sonraki aşamadaki tüketiciyi adlandıran tek bir satır yazdın.

  • Maskeleri seçtiysen 20 kutu ile 20 çokgenin etiketlenme süresini ölçtün ve sınır kurallarını listeledin.

Çözümü göster

Otobüs kamerasını paylaşan iki ürün olduğunu varsay: bir yaya sayacı ve araçların sahnenin ne kadarını kapladığını belirten bir sokak işgali raporu. Her iki yanıtı da aynı çalıştırmadan ölç:

from ultralytics import YOLO

model = YOLO("yolo26n-seg.pt")
result = model("https://ultralytics.com/images/bus.jpg", retina_masks=True, verbose=False)[0]
height, width = result.orig_shape

for name in sorted({result.names[int(c)] for c in result.boxes.cls}):
    rows = [i for i, c in enumerate(result.boxes.cls) if result.names[int(c)] == name]
    union = result.masks.data[rows].amax(dim=0)  # merge masks so overlaps count once
    box_union = sum(float((b[2] - b[0]) * (b[3] - b[1])) for b in result.boxes.xyxy[rows])
    print(f"{name:6} {len(rows)} objects | masks cover {float(union.sum()) / (height * width):.0%} of the image, boxes {box_union / (height * width):.0%}")
bus    1 objects | masks cover 29% of the image, boxes 47%
person 4 objects | masks cover 13% of the image, boxes 28%
  • Yaya sayacı → kutular. Her iki durumda da sayım 4; maskeler etiketleme maliyetini artırır ve hiçbir şeyi değiştirmez.
  • İşgali raporu → maskeler. Kutular, otobüsün sahnenin %47'sini kapladığını gösteriyor; gerçek oran %29. Kutu tabanlı bir rapor yarıdan fazla hatalı olur.
Sırada ne var

Sırada iki özel görev var: çıktının bir iskelet olduğu poz ve kutunun döndüğü OBB.

İlerlemeni kaydetmek için giriş yap