Gerçekliği Yansıtan Veri Kümeleri
Daha fazla etiket oluşturmadan önce gerçek bir veri kümesindeki kapsama boşluklarını denetle ve bu boşlukları zor negatifler içeren bir veri toplama planına dönüştür.
Hayal kırıklığı yaratan görüntü modellerinin çoğu kötü model değildir; dağıtıldıkları yere benzemeyen bir veri kümesiyle eğitilmiş iyi modellerdir. Önceki derste COCO algılayıcısı, drone görüntüsünde sıfır tekne buldu; çünkü COCO'daki tekneler yandan fotoğraflanmıştı. Beş dakikalık bir denetim, etiketlemeye para harcamadan önce bu boşlukları gösterir.
Uygulamalı
Modeller dünyayı değil, veri kümesini öğrenir#
Bir model, gördüğü örneklerin arasındaki durumlar için tahmin yürütür. Güneşli gündüz sokaklarında eğitip gece sisli bir garajda kullanırsan başarısız olur; arabalar farklı göründüğü için değil, bu koşullarda hiç araba görmediği için. Bu uyumsuzluğa alan kayması denir. Doğrulama görüntüleri de aynı dengesiz koleksiyondan geldiğinde, doğrulama bu konuda seni uyarmaz:
Çözüm algoritmik değil, yapısaldır: Etiketlemeden önce dağıtım dünyasından bilinçli olarak örnekler al. Veri toplama ve açıklama kılavuzu uygulama ayrıntılarını ele alıyor.
Gerçek bir veri kümesini denetle#

Yukarıdaki medical-pills veri kümesi, tüm hapların kutularla işaretlendiği blister ambalaj yakın çekimleriyle, denetim için iyi bir örnektir. Ultralytics Platform, veri kümesi sayfasında temel sayıları gösterir; aşağıdaki komut dosyası ise ultralytics ile birlikte gelen kopyadaki kapsama durumunu ortaya çıkaran ölçümleri hesaplar:
from collections import Counter
from pathlib import Path
from PIL import Image, ImageStat
from ultralytics.data.utils import check_det_dataset
data = check_det_dataset("medical-pills.yaml") # downloads the dataset on first use
for split in ("train", "val"):
images = sorted(Path(data[split]).glob("*.jpg"))
labels = [Path(str(p).replace("/images/", "/labels/")).with_suffix(".txt") for p in images]
rows = [line.split() for f in labels if f.exists() for line in f.read_text().splitlines()]
classes = Counter(data["names"][int(r[0])] for r in rows)
backgrounds = sum(not f.exists() or not f.read_text().strip() for f in labels)
areas = sorted(float(r[3]) * float(r[4]) for r in rows) # box area as a share of the image
sizes = Counter(Image.open(p).size for p in images)
brightness = [ImageStat.Stat(Image.open(p).convert("L")).mean[0] for p in images]
print(f"{split}: {len(images)} images, {backgrounds} backgrounds, {dict(classes)}, sizes {dict(sizes)}")
print(f" boxes: median {areas[len(areas) // 2]:.1%} of the image, {sum(a < 0.01 for a in areas)} of {len(areas)} under 1%")
print(f" brightness: {min(brightness):.0f} to {max(brightness):.0f} (0 = black, 255 = white)")train: 92 images, 0 backgrounds, {'pill': 1623}, sizes {(1920, 1080): 92}
boxes: median 1.4% of the image, 320 of 1623 under 1%
brightness: 171 to 198 (0 = black, 255 = white)
val: 23 images, 0 backgrounds, {'pill': 399}, sizes {(1920, 1080): 23}
boxes: median 1.4% of the image, 79 of 399 under 1%
brightness: 171 to 198 (0 = black, 255 = white)Bunu, her satırında bir bulgu olan kapsama raporu olarak oku:
| Bulgu | Anlamı | Karar |
|---|---|---|
| Tek çözünürlük: 1920×1080 | Tek kamera, tek kurulum | Dağıtım yapacağın her kamera modelinden görüntü topla |
| Parlaklık aralığı yalnızca 171–198 | Aydınlık ve eşit stüdyo ışığı, loş ortam yok | Eczane tezgâhında dağıtıma başlamadan önce loş, arkadan aydınlatmalı ve karma ışıklı çekimler topla |
| 0 arka plan görüntüsü | Model hiç hapsiz bir sahne görmüyor | Zor negatif olarak boş blister ambalajlar, başka tabletler ve boş tezgâhlar ekle |
| Medyan kutu görüntünün %1,4'ü; kutuların 5'te 1'i %1'den küçük | Küçük nesneler | imgsz değerini yeterince yüksek tut ve uzaktaki çekimleri özellikle ekle |
Tek sınıf: pill | Hap türleri yok | Sayım için uygun; yalnızca karar vermek için gerekliyse sınıf ekle |
Doğrulama görüntüleri bu özelliklerin her birini paylaştığı için bunların hiçbiri doğrulama puanında görünmez.
Kapsamanın dört boyutu#
| Boyut | Toplanacaklar | Eksikse görülen tipik sorun |
|---|---|---|
| Aydınlatma | Şafak, öğle, alacakaranlık, gece, parlama, arkadan aydınlatma, titreyen floresan ışıklar | Vardiya değişimlerinde veya doğrudan güneş altında geri çağırım düşer |
| Hava ve atmosfer koşulları | Yağmur, sis, kar, toz, mercekte yoğuşma | Su damlalarında yanlış pozitifler, pus içinde kaçırılan nesneler |
| Örtülme ve karmaşa | Kısmen gizlenmiş hedefler, kalabalık sahneler, kadraj kenarında kesilmiş nesneler | Hedef tamamen görünmediğinde algılama başarısız olur |
| Kamera ve bakış açısı | Mercek, montaj yüksekliği ve açısı, çözünürlük, sıkıştırma, hareket bulanıklığı | Pilot kamerada çalışır, sonraki tesiste başarısız olur |
Marina örneğinde gözden kaçan boyut bakış açısıydı: aynı sınıf, yeni bir açı ve geri çağırım sıfıra düştü.
Zor negatifler ve arka plan görüntüleri#
Bir algılayıcının hedefin ne olmadığını da öğrenmesi gerekir. Zor negatifler yüzeysel olarak hedefe benzer: forklift algılayıcısı için transpalet, makaslı platform, parlak zemindeki forklift yansıması ve üzerine forklift basılmış bir güvenlik posteri.
YOLO biçiminde arka plan görüntüsü, etiket dosyası olmayan, yani üzerine hiçbir şey çizilmeyen bir görüntüdür. Ultralytics eğitim ipuçları, yanlış pozitifleri azaltmak için yaklaşık %0–10 arka plan görüntüsü önerir; COCO'nun kendisinde bu oran yaklaşık %1'dir. Bu payı rastgele boş kareler yerine kendi ortamındaki zor negatiflerle doldur. Veri artırma parlaklığı ve açıyı değiştirebilir ama modelin daha önce hiç görmediği bir transpaleti ortaya çıkaramaz.
Yaygın Hatalar#
Belirti: tamamı gündüz çekilmiş ve tamamı pilot kameradan alınmış 10.000 etiketli görüntü. Çözüm: dağıtım kameralarından birkaç hafta boyunca tüm koşulları kapsayan kayıtlar al, kapsama alanını denetle, sonra etiketler için ödeme yap. Sentetik veri bilinen bir boşluğu doldurabilir ama gerçek çekimlerin yerini tutmaz.
Belirti: yüksek doğrulama mAP'si, ilk yeni sahada kötü sonuçlar. Çözüm: doğrulama verilerinin de veri kümesindeki kör noktaları paylaştığını unutma. Eğitim görüntülerinden rastgele on tane ve üretim karelerinden on tane alıp bir ekip arkadaşından bunları ayırt etmesini iste; ayırt edebiliyorsa alan farkın var demektir.
Hedef koşul başına sayılar içeren bir örnekleme planı için Yüksek Performanslı YOLO Veri Kümeleri Oluşturma içindeki Yüksek Kaliteli, Temsili Veri Toplama bölümüne geç.
Çözümü göster
Karışık mağaza ışıklandırması altında eczane tezgâhında kullanılan medical-pills veri kümesi için ızgarayı denetimden (parlaklık 171–198, tek bir 1920×1080 kaynak, sıfır arka plan) ve görüntülere hızlıca göz atarak doldur; görüntülerde aynı parlak yüzey üzerindeki aynı paketler, elsiz olarak görünüyor:
| Sınıf | Parlak stüdyo ışığı | Loş veya sıcak tonlu mağaza ışığı | Arkadan aydınlatma / parlama | Elle kısmen kapatılmış | Telefon kamerası |
|---|---|---|---|---|---|
pill | 2,022 | 0 | 0 | 0 | 0 |
| arka plan | 0 | 0 | 0 | — | 0 |
Öncelik sırasına göre veri toplama planı:
- Loş veya sıcak tonlu mağaza ışığı — tezgâhın olağan koşulu; şu anda sıfır görüntü var.
- Elle kısmen kapatılmış — gerçek etkileşimlerin neredeyse her birinde görülür.
- Telefon kamerası — ikinci bir algılayıcı ve çözünürlük.
- Arkadan aydınlatma / parlama — folyo paketler pencereleri ve tavan ışıklarını yansıtır.
Zor negatifler: boş blister ambalajlar (aynı folyo, hap yok) ve tezgâhtaki diğer yuvarlak nesneler — madeni paralar, düğmeler, şekerler. Bunları veri kümesine arka plan görüntüleri olarak, yaklaşık %5–10 oranında ekle.