Sicurezza a livello enterprise: Conforme a ISO 27001 + SOC 2 Type I.

Link to this sectionDataset SKU-110K#

Il dataset SKU-110K è un dataset di object detection a classe singola composto da 11.743 immagini di scaffali di negozi densamente stipati, suddivise in 8.219 immagini di addestramento, 588 di validazione e 2.936 di test. Ogni prodotto è annotato con un riquadro di delimitazione sotto un'unica classe, object: il nome si riferisce alle oltre 110.000 unità di stoccaggio (SKU) uniche ritratte nelle scene, non a 110.000 classi di rilevamento. Creato da Eran Goldman et al. per il paper del CVPR 2019 Precise Detection in Densely Packed Scenes, contiene oltre 1,7 milioni di prodotti annotati — una media di circa 147 per immagine — rendendolo un benchmark impegnativo per i modelli di computer vision in ambienti di vendita al dettaglio affollati.



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Rilevamento di scaffali di negozi densamente riforniti con il dataset SKU-110K

Link to this sectionCaratteristiche principali#

  • Rilevamento a classe singola: Ogni prodotto è etichettato con un riquadro di delimitazione sotto un'unica classe, object (names: {0: object}) — le annotazioni non contengono etichette di categoria per singolo SKU.
  • Densità estrema degli oggetti: Le immagini di scaffali di negozi di tutto il mondo contengono in media circa 147 prodotti densamente stipati ciascuna, con oggetti che spesso sembrano simili o addirittura identici posizionati a breve distanza.
  • Grande scala: Più di 110.000 SKU uniche e oltre 1,7 milioni di riquadri di delimitazione annotati in 11.743 immagini mettono alla prova i rilevatori di oggetti allo stato dell'arte.

Link to this sectionStruttura del dataset#

Il dataset SKU-110K è diviso in tre sottoinsiemi, che condividono tutti la singola classe object:

SplitImmaginiDescrizione
Addestramento8.219Immagini e annotazioni per l'addestramento del modello
Validazione588Immagini tenute da parte per la valutazione durante l'addestramento
Test2.936Immagini per la valutazione finale del modello addestrato

Link to this sectionApplicazioni#

Il dataset SKU-110K è ampiamente utilizzato per addestrare e valutare modelli di deep learning in attività di object detection, specialmente in scene densamente stipate come le esposizioni sugli scaffali dei negozi. Le sue applicazioni includono:

  • Gestione e automazione dell'inventario al dettaglio
  • Riconoscimento dei prodotti nelle piattaforme e-commerce
  • Verifica della conformità del planogramma
  • Sistemi di self-checkout nei negozi
  • Raccolta e smistamento robotizzato nei magazzini

Per annotare le tue immagini di scaffali, addestrare e gestire dataset di rilevamento retail nel tuo browser, esegui il flusso di lavoro completo con Ultralytics Platform.

Link to this sectionDataset YAML#

Il file SKU-110K.yaml definisce la configurazione del dataset: i percorsi del dataset, i nomi delle classi e altri metadati. È mantenuto nel repository Ultralytics all'indirizzo 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

Link to this sectionUtilizzo#

13,6 GB di download

SKU-110K viene scaricato automaticamente la prima volta che effettui l'addestramento e richiede circa 13,6 GB di spazio libero su disco per le sue 11.743 immagini. Lo script di download recupera anche le annotazioni originali e le converte nel formato YOLO, il che può richiedere alcuni minuti.

Per addestrare un modello YOLO26n sul dataset SKU-110K per 100 epochs con una dimensione dell'immagine di 640, puoi utilizzare i seguenti snippet di codice. Per un elenco completo degli argomenti disponibili, fai riferimento alla pagina di Training del modello.

Esempio di Addestramento
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)

Link to this sectionDati di esempio e annotazioni#

Le immagini di SKU-110K catturano prodotti densamente stipati su veri scaffali di negozi, dove dozzine di articoli quasi identici si trovano uno accanto all'altro. Ecco un'immagine di esempio con le relative annotazioni:

Rilevamento di prodotti al dettaglio SKU-110K sugli scaffali dei negozi

  • Immagine di scaffale retail densamente stipato: Questa immagine mostra un esempio di oggetti densamente stipati in un ambiente di scaffale retail. Gli oggetti sono annotati con riquadri di delimitazione sotto la singola classe object.

La densa disposizione dei prodotti rende SKU-110K particolarmente prezioso per sviluppare solide soluzioni di computer vision focalizzate sul retail, poiché l'elevato numero di oggetti per immagine spinge i rilevatori ben oltre i tipici benchmark.

Link to this sectionCitazioni e riconoscimenti#

Se utilizzi il dataset SKU-110K nel tuo lavoro di ricerca o sviluppo, ti preghiamo di citare il seguente paper:

Citazione
@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}
}

Desideriamo ringraziare Eran Goldman et al. per aver creato e mantenuto il dataset SKU-110K come una risorsa preziosa per la comunità di ricerca di computer vision. Per ulteriori informazioni sul dataset SKU-110K e i suoi creatori, visita il repository GitHub del dataset SKU-110K.

Link to this sectionFAQ#

Link to this sectionA cosa serve il dataset SKU-110K?#

Il dataset SKU-110K è un dataset di object detection a classe singola composto da 11.743 immagini di scaffali di negozi densamente stipati, creato da Eran Goldman et al. per il loro paper del CVPR 2019. Ogni prodotto è etichettato con un riquadro di delimitazione object, e le immagini coprono oltre 110.000 unità di stoccaggio (SKU) uniche, rendendolo un solido benchmark per rilevare oggetti in scene affollate e per costruire sistemi di computer vision per il retail.

Link to this sectionIl dataset SKU-110K ha 110.000 classi?#

No. SKU-110K è a classe singola: ogni prodotto è annotato con un riquadro di delimitazione sotto la classe object (names: {0: object}). Il "110K" nel nome si riferisce al numero di unità di stoccaggio (SKU) uniche ritratte nelle immagini, non al numero di classi di rilevamento.

Link to this sectionQuante immagini e classi sono presenti nel dataset SKU-110K?#

Il dataset SKU-110K contiene 11.743 immagini — 8.219 per l'addestramento, 588 per la validazione e 2.936 per il test — e una singola classe di rilevamento, object. Vedi la sezione Struttura del Dataset e la configurazione SKU-110K.yaml per i dettagli.

Link to this sectionQuanto è grande il download del dataset SKU-110K?#

SKU-110K pesa circa 13,6 GB e viene scaricato automaticamente la prima volta che effettui l'addestramento con data="SKU-110K.yaml" — non è richiesto alcun download manuale. Per consultare opzioni più piccole, vedi la panoramica dei dataset di rilevamento.

Link to this sectionCome posso addestrare un modello YOLO26 utilizzando il dataset SKU-110K?#

Addestrare un modello YOLO26 sul dataset SKU-110K è semplice. Ecco un esempio per addestrare un modello YOLO26n per 100 epoche con una dimensione dell'immagine di 640:

Esempio di Addestramento
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)

Per un elenco completo degli argomenti disponibili, consulta la pagina Addestramento del modello e i consigli per l'addestramento dei modelli.

Commenti