رؤية YOLO 2026:

مجموعة بيانات SKU-110K#

مجموعة بيانات SKU-110K هي مجموعة بيانات object detection ذات فئة واحدة تضم 11,743 صورة رفوف بيع بالتجزئة مكتظة بكثافة، ومقسمة إلى 8,219 صورة تدريب، و588 صورة تحقق، و2,936 صورة اختبار. يتم توثيق كل منتج بمربع محيط واحد ضمن فئة واحدة، object — يشير الاسم إلى أكثر من 110,000 وحدة حفظ مخزون (SKU) فريدة مصورة عبر المشاهد، وليس إلى 110,000 فئة اكتشاف. أُنشئت بواسطة Eran Goldman وآخرين لورقة مؤتمر CVPR 2019 Precise Detection in Densely Packed Scenes، وتحتوي على أكثر من 1.7 مليون منتج موثق — بمتوسط يقارب 147 منتجاً لكل صورة — مما يجعلها معياراً متطلباً لنماذج computer vision في بيئات التجزئة المزدحمة.



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

SKU-110K dataset densely packed retail shelf detection

الميزات الرئيسية#

  • اكتشاف الفئة الواحدة: يتم تصنيف كل منتج بمربع محيط واحد ضمن فئة واحدة، object (names: {0: object}) — ولا تحمل التعليقات التوضيحية أي تسميات فئة لكل وحدة حفظ مخزون (SKU).
  • كثافة كائنات فائقة: يبلغ متوسط عدد المنتجات المرصوصة بدقة في صور رفوف المتاجر من جميع أنحاء العالم حوالي 147 منتجاً لكل منها، مع وجود كائنات غالباً ما تبدو متشابهة أو حتى متطابقة موضوعة بالقرب من بعضها البعض.
  • نطاق واسع: أكثر من 110,000 وحدة حفظ مخزون (SKU) فريدة وأكثر من 1.7 مليون مربع إحاطة معلق عبر 11,743 صورة تتحدى أحدث كاشفات الكائنات.

هيكل مجموعة البيانات#

مجموعة بيانات SKU-110K مقسمة إلى ثلاث مجموعات فرعية، تشترك جميعها في فئة object الواحدة:

التقسيم (Split)الصورالوصف
التدريب8,219صور وتعليقات توضيحية لتدريب النموذج
التحقق588صور محجوزة لـ evaluation أثناء التدريب
الاختبار (Test)2,936صور للتقييم النهائي للنموذج المدرب

التطبيقات#

تُستخدم مجموعة بيانات SKU-110K على نطاق واسع لتدريب وتقييم نماذج deep learning في مهام اكتشاف الكائنات، لا سيما في المشاهد المكتظة بكثافة مثل عروض رفوف التجزئة. تشمل تطبيقاتها ما يلي:

  • إدارة وأتمتة مخزون التجزئة
  • التعرف على المنتجات في منصات التجارة الإلكترونية
  • التحقق من الامتثال لمخطط العرض (Planogram)
  • أنظمة الدفع الذاتي في المتاجر
  • الالتقاط والفرز الآلي في المستودعات

لتوثيق صور الرفوف الخاصة بك، وتدريب، وإدارة مجموعات بيانات اكتشاف التجزئة في متصفحك، قم بتشغيل سير العمل الكامل باستخدام Ultralytics Platform.

YAML مجموعة البيانات#

يحدد ملف SKU-110K.yaml تكوين مجموعة البيانات — مسارات مجموعة البيانات، وأسماء الفئات، والبيانات الوصفية الأخرى. يتم الاحتفاظ به في مستودع Ultralytics على الرابط https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml.

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

الاستخدام#

تنزيل بحجم 13.6 جيجابايت

يتم تنزيل SKU-110K تلقائياً في المرة الأولى التي تقوم فيها بالتدريب ويتطلب حوالي 13.6 جيجابايت من مساحة القرص الفارغة لصورها البالغ عددها 11,743 صورة. يقوم برنامج التنزيل أيضاً بجلب التعليقات التوضيحية الأصلية وتحويلها إلى تنسيق YOLO، وهو ما قد يستغرق بضع دقائق.

لتدريب نموذج YOLO26n على مجموعة بيانات SKU-110K لمدة 100 epochs بحجم صورة 640، يمكنك استخدام مقاطع التعليمات البرمجية التالية. للحصول على قائمة شاملة بالوسائط المتاحة، راجع صفحة Training للنموذج.

مثال على التدريب
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)

عينة من البيانات والتعليقات#

تلتقط صور SKU-110K المنتجات المزدحمة على رفوف المتاجر الحقيقية، حيث توجد العشرات من العناصر المتطابقة تقريباً جنباً إلى جنب. إليك صورة توضيحية مع تعليقاتها التوضيحية:

SKU-110K retail product detection on store shelves

  • صورة رف بيع بالتجزئة مكتظ بكثافة: توضح هذه الصورة مثالاً للكائنات المكتظة بكثافة في بيئة رفوف بيع بالتجزئة. تتم الإشارة إلى الكائنات بمربعات محيطة ضمن فئة object الواحدة.

يجعل الترتيب الكثيف للمنتجات من SKU-110K قيمة بشكل خاص لتطوير حلول رؤية حاسوبية قوية تركز على التجزئة، حيث أن العدد الكبير للكائنات في كل صورة يدفع الكاشفات إلى أبعد من المعايير المعتادة.

الاقتباسات والشكر#

إذا كنت تستخدم مجموعة بيانات SKU-110K في عملك البحثي أو التطويري، يرجى الاستشهاد بالورقة التالية:

اقتباس
@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}
}

نود أن نشكر Eran Goldman وآخرين على إنشاء وصيانة مجموعة بيانات SKU-110K كمورد قيّم لمجتمع أبحاث رؤية الكمبيوتر. لمزيد من المعلومات حول مجموعة بيانات SKU-110K ومبتكريها، تفضل بزيارة مستودع GitHub لمجموعة بيانات SKU-110K.

الأسئلة الشائعة#

  • مجموعة بيانات SKU-110K هي مجموعة بيانات اكتشاف كائنات ذات فئة واحدة تضم 11,743 صورة رفوف بيع بالتجزئة مكتظة بكثافة، أُنشئت بواسطة Eran Goldman وآخرين لورقة مؤتمر CVPR 2019 الخاصة بهم. يتم تصنيف كل منتج بمربع محيط object واحد، وتمتد الصور عبر أكثر من 110,000 وحدة حفظ مخزون (SKU) فريدة، مما يجعلها معياراً قوياً لاكتشاف الكائنات في المشاهد المزدحمة ولإبناء أنظمة computer vision للبيع بالتجزئة.

  • لا. مجموعة بيانات SKU-110K ذات فئة واحدة: يتم توثيق كل منتج بمربع محيط واحد تحت الفئة object (names: {0: object}). يشير الرقم "110K" في الاسم إلى عدد وحدات حفظ المخزون (SKU) الفريدة المصورة عبر الصور، وليس إلى عدد فئات الاكتشاف.

  • تحتوي مجموعة بيانات SKU-110K على 11,743 صورة — 8,219 للتدريب، و588 للتحقق، و2,936 للاختبار — وفئة اكتشاف واحدة، object. راجع قسم Dataset Structure وتكوين SKU-110K.yaml للتفاصيل.

  • حجم مجموعة بيانات SKU-110K يبلغ حوالي 13.6 جيجابايت ويتم تنزيلها تلقائياً في المرة الأولى التي تدرب فيها باستخدام data="SKU-110K.yaml" — لا يلزم التنزيل اليدوي. لاستعراض خيارات أصغر، راجع نظرة عامة على مجموعات بيانات الاكتشاف.

  • تدريب نموذج YOLO26 على مجموعة بيانات SKU-110K عملية مباشرة. إليك مثال لتدريب نموذج YOLO26n لـ 100 دورة تدريبية (epoch) بحجم صورة 640:

    مثال على التدريب
    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)

    للحصول على قائمة شاملة بالوسائط المتاحة، راجع صفحة Training للنموذج ونصائح تدريب النموذج.

التعليقات