Ultralytics YOLO27:

SKU-110K Veri Kümesi#

SKU-110K veri kümesi, 11.743 yoğun biçimde doldurulmuş perakende rafı görüntüsünden oluşan ve 8.219 eğitim, 588 doğrulama ve 2.936 test görüntüsüne ayrılan tek sınıflı bir nesne algılama veri kümesidir. Her ürün, tek bir sınıf olan object altında bir sınırlayıcı kutuyla etiketlenmiştir — bu ad, 110.000 algılama sınıfına değil, sahneler genelinde görüntülenen 110.000'den fazla benzersiz mağaza stok birimine (SKUs) atıfta bulunur. Eran Goldman ve çalışma arkadaşları tarafından CVPR 2019 bildirisi Yoğun Biçimde Doldurulmuş Sahnelerde Hassas Algılama için oluşturulan veri kümesi, 1,7 milyondan fazla etiketlenmiş ürün içerir — görüntü başına ortalama yaklaşık 147 ürün — ve bu da onu kalabalık perakende ortamlarındaki bilgisayarlı görü modelleri için zorlu bir kıyaslama hâline getirir.



Watch: How to Train Ultralytics YOLO26 to Detect Every Product on a Retail Shelf | SKU-110K 🛒

SKU-110K yoğun biçimde doldurulmuş perakende rafı algılama veri kümesi

Temel Özellikler#

  • Tek sınıflı algılama: Her ürün, tek bir sınıf olan object (names: {0: object}) altında bir sınırlayıcı kutuyla etiketlenmiştir — açıklamalarda SKU başına kategori etiketleri bulunmaz.
  • Aşırı nesne yoğunluğu: Dünyanın farklı yerlerinden mağaza rafı görüntülerinde, her birinde ortalama yaklaşık 147 sıkışık ürün bulunur; nesneler çoğu zaman birbirine benzer, hatta aynı görünür ve birbirlerine çok yakın konumlanır.
  • Büyük ölçek: 11.743 görüntüdeki 110.000'den fazla benzersiz SKU ve 1,7 milyondan fazla etiketlenmiş sınırlayıcı kutu, son teknoloji nesne algılayıcıları için zorluk oluşturur.

Veri Kümesi Yapısı#

SKU-110K veri kümesi, tümü tek object sınıfını paylaşan üç alt kümeye ayrılmıştır:

BölümGörüntülerAçıklama
Eğit8,219Model eğitimi için görüntüler ve açıklamalar
Doğrulama588Eğitim sırasında değerlendirme için ayrılmış görüntüler
Test2,936Eğitilmiş modelin nihai değerlendirmesi için görüntüler

Uygulamalar#

SKU-110K veri kümesi, nesne algılama görevlerinde, özellikle perakende rafı sergilemeleri gibi yoğun biçimde doldurulmuş sahnelerde derin öğrenme modellerini eğitmek ve değerlendirmek için yaygın olarak kullanılır. Uygulamaları şunları içerir:

  • Perakende envanter yönetimi ve otomasyonu
  • E-ticaret platformlarında ürün tanıma
  • Planogram uyumluluğu doğrulama
  • Mağazalarda self-servis ödeme sistemleri
  • Depolarda robotik toplama ve ayırma

Kendi raf görüntülerine açıklama eklemek, perakende algılama veri kümelerini tarayıcında eğitmek ve yönetmek için tüm iş akışını Ultralytics Platform ile çalıştır.

Veri Kümesi YAML'i#

SKU-110K.yaml dosyası, veri kümesi yapılandırmasını — veri kümesi yollarını, sınıf adlarını ve diğer meta verileri — tanımlar. Bu dosya, Ultralytics deposunda https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml adresinde tutulur.

ultralytics/cfg/datasets/SKU-110K.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# SKU-110K retail items dataset https://github.com/eg4000/SKU110K_CVPR19 by Trax Retail
# Documentation: https://docs.ultralytics.com/datasets/detect/sku-110k
# Example usage: yolo train data=SKU-110K.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── SKU-110K ← downloads here (13.6 GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: SKU-110K # dataset root dir
train: train.txt # train images (relative to 'path') 8219 images
val: val.txt # val images (relative to 'path') 588 images
test: test.txt # test images (optional) 2936 images

# Classes
names:
  0: object

# Download script/URL (optional) ---------------------------------------------------------------------------------------
download: |
  import shutil
  from pathlib import Path

  import numpy as np
  import polars as pl

  from ultralytics.utils import TQDM
  from ultralytics.utils.downloads import download
  from ultralytics.utils.ops import xyxy2xywh

  # Download
  dir = Path(yaml["path"])  # dataset root dir
  parent = Path(dir.parent)  # download dir
  urls = ["http://trax-geometry.s3.amazonaws.com/cvpr_challenge/SKU110K_fixed.tar.gz"]
  download(urls, dir=parent)

  # Rename directories
  if dir.exists():
      shutil.rmtree(dir)
  (parent / "SKU110K_fixed").rename(dir)  # rename dir
  (dir / "labels").mkdir(parents=True, exist_ok=True)  # create labels dir

  # Convert labels
  names = "image", "x1", "y1", "x2", "y2", "class", "image_width", "image_height"  # column names
  for d in "annotations_train.csv", "annotations_val.csv", "annotations_test.csv":
      x = pl.read_csv(dir / "annotations" / d, has_header=False, new_columns=names, infer_schema_length=None).to_numpy()  # annotations
      images, unique_images = x[:, 0], np.unique(x[:, 0])
      with open((dir / d).with_suffix(".txt").__str__().replace("annotations_", ""), "w", encoding="utf-8") as f:
          f.writelines(f"./images/{s}\n" for s in unique_images)
      for im in TQDM(unique_images, desc=f"Converting {dir / d}"):
          cls = 0  # single-class dataset
          with open((dir / "labels" / im).with_suffix(".txt"), "a", encoding="utf-8") as f:
              for r in x[images == im]:
                  w, h = r[6], r[7]  # image width, height
                  xywh = xyxy2xywh(np.array([[r[1] / w, r[2] / h, r[3] / w, r[4] / h]]))[0]  # instance
                  f.write(f"{cls} {xywh[0]:.5f} {xywh[1]:.5f} {xywh[2]:.5f} {xywh[3]:.5f}\n")  # write label

Kullanım#

13,6 GB indirme

SKU-110K, ilk eğitim çalıştırmanda otomatik olarak indirilir ve 11.743 görüntüsü için yaklaşık 13,6 GB boş disk alanı gerektirir. İndirme betiği ayrıca özgün açıklamaları getirir ve bunları YOLO biçimine dönüştürür; bu işlem birkaç dakika sürebilir.

SKU-110K veri kümesi üzerinde 640 görüntü boyutuyla 100 epoch boyunca bir YOLO26n modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsin. Kullanılabilir bağımsız değişkenlerin kapsamlı listesi için modelin Eğitim sayfasına bak.

Eğitim Örneği
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)

Örnek Veriler ve Açıklamalar#

SKU-110K görüntüleri, düzinelerce neredeyse aynı ürünün yan yana bulunduğu gerçek mağaza raflarındaki yoğun biçimde yerleştirilmiş ürünleri yakalar. Açıklamalarıyla birlikte bir görüntü örneği aşağıda verilmiştir:

Mağaza raflarında SKU-110K perakende ürün algılama

  • Yoğun biçimde doldurulmuş perakende rafı görüntüsü: Bu görüntü, perakende rafı ortamında yoğun biçimde yerleştirilmiş nesnelere bir örnek gösterir. Nesneler, tek object sınıfı altında sınırlayıcı kutularla açıklanmıştır.

Ürünlerin yoğun yerleşimi, SKU-110K'yı sağlam, perakende odaklı bilgisayarlı görü çözümleri geliştirmek için özellikle değerli kılar; görüntü başına yüksek nesne sayısı, algılayıcıları tipik kıyaslamaların çok ötesine taşır.

Atıflar ve Teşekkürler#

SKU-110K veri kümesini araştırma veya geliştirme çalışmalarında kullanıyorsan lütfen aşağıdaki bildiriyi kaynak göster:

Alıntı
@inproceedings{goldman2019dense,
  author    = {Eran Goldman and Roei Herzig and Aviv Eisenschtat and Jacob Goldberger and Tal Hassner},
  title     = {Precise Detection in Densely Packed Scenes},
  booktitle = {Proc. Conf. Comput. Vision Pattern Recognition (CVPR)},
  year      = {2019}
}

SKU-110K veri kümesini bilgisayarlı görü araştırma topluluğu için değerli bir kaynak olarak oluşturan ve sürdüren Eran Goldman ve çalışma arkadaşlarına teşekkür ederiz. SKU-110K veri kümesi ve oluşturucuları hakkında daha fazla bilgi için SKU-110K veri kümesi GitHub deposunu ziyaret et.

SSS#

  • SKU-110K veri kümesi, Eran Goldman ve çalışma arkadaşları tarafından CVPR 2019 bildirileri için oluşturulan, 11.743 yoğun biçimde doldurulmuş perakende rafı görüntüsünden oluşan tek sınıflı bir nesne algılama veri kümesidir. Her ürün bir object sınırlayıcı kutusuyla etiketlenmiştir ve görüntüler 110.000'den fazla benzersiz mağaza stok birimini (SKUs) kapsar; bu da veri kümesini kalabalık sahnelerde nesne algılama ve perakende bilgisayarlı görü sistemleri oluşturma için güçlü bir kıyaslama hâline getirir.

  • Hayır. SKU-110K tek sınıflıdır: her ürün, object (names: {0: object}) sınıfı altında bir sınırlayıcı kutuyla açıklanmıştır. Adındaki "110K", algılama sınıflarının sayısına değil, görüntüler genelinde gösterilen benzersiz mağaza stok birimlerinin (SKUs) sayısına atıfta bulunur.

  • SKU-110K veri kümesi 11.743 görüntü içerir — 8.219 eğitim, 588 doğrulama ve 2.936 test görüntüsü — ve tek bir algılama sınıfına, object, sahiptir. Ayrıntılar için Veri Kümesi Yapısı bölümüne ve SKU-110K.yaml yapılandırmasına bak.

  • SKU-110K yaklaşık 13,6 GB boyutundadır ve data="SKU-110K.yaml" ile ilk eğitim yaptığında otomatik olarak indirilir — manuel indirme gerekmez. Daha küçük seçeneklere göz atmak için algılama veri kümelerine genel bakış sayfasına bak.

  • SKU-110K veri kümesi üzerinde bir YOLO26 modeli eğitmek oldukça kolaydır. 640 görüntü boyutuyla 100 epoch boyunca bir YOLO26n modeli eğitmek için örnek aşağıda verilmiştir:

    Eğitim Örneği
    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
    
    # Train the model
    results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)

    Kullanılabilir bağımsız değişkenlerin kapsamlı listesi için modelin Eğitim sayfasına ve model eğitimi ipuçlarına bak.

Yorumlar