Vai al contenuto

Set di dati SKU-110k

Il set di dati SKU-110k è una raccolta di immagini di scaffali di vendita al dettaglio densamente impacchettati, progettata per supportare la ricerca sui compiti di rilevamento degli oggetti. Sviluppato da Eran Goldman et al., il set di dati contiene oltre 110.000 categorie uniche di SKU (Store Keeping Unit) con oggetti densamente impacchettati, spesso simili o addirittura identici, posizionati nelle immediate vicinanze.



Guarda: Come addestrare YOLOv10 sul dataset SKU-110k utilizzando il dataset Ultralytics | Retail Dataset

Immagine campione del set di dati

Caratteristiche principali

  • SKU-110k contiene immagini di scaffali di negozi di tutto il mondo, con oggetti densamente impacchettati che rappresentano una sfida per i rilevatori di oggetti all'avanguardia.
  • Il set di dati comprende oltre 110.000 categorie di SKU uniche, che forniscono una gamma diversificata di apparenze degli oggetti.
  • Le annotazioni includono i riquadri di delimitazione degli oggetti e le etichette delle categorie SKU.

Struttura del set di dati

Il set di dati SKU-110k è organizzato in tre sottoinsiemi principali:

  1. Set di allenamento: Questo sottoinsieme contiene immagini e annotazioni utilizzate per addestrare i modelli di rilevamento degli oggetti.
  2. Set di convalida: Questo sottoinsieme è composto da immagini e annotazioni utilizzate per la convalida del modello durante la formazione.
  3. Set di prova: Questo sottoinsieme è pensato per la valutazione finale dei modelli di rilevamento degli oggetti addestrati.

Applicazioni

Il dataset SKU-110k è ampiamente utilizzato per l'addestramento e la valutazione di modelli di deep learning in compiti di rilevamento di oggetti, in particolare in scene densamente affollate come gli scaffali dei negozi. La varietà di categorie di SKU e la disposizione degli oggetti in un ambiente denso lo rendono una risorsa preziosa per i ricercatori e i professionisti nel campo della computer vision.

Set di dati YAML

Un file YAML (Yet Another Markup Language) viene utilizzato per definire la configurazione del dataset. Contiene informazioni sui percorsi del dataset, sulle classi e altre informazioni rilevanti. Nel caso del dataset SKU-110K, il file SKU-110K.yaml Il file viene mantenuto all'indirizzo https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml.

ultralytics/cfg/datasets/SKU-110K.yaml

# Ultralytics YOLO 🚀, AGPL-3.0 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: ../datasets/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 pandas as pd
  from tqdm 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 = pd.read_csv(dir / 'annotations' / d, names=names).values  # annotations
      images, unique_images = x[:, 0], np.unique(x[:, 0])
      with open((dir / d).with_suffix('.txt').__str__().replace('annotations_', ''), 'w') 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') 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

Utilizzo

Per addestrare un modello YOLOv8n sul dataset SKU-110K per 100 epoch con una dimensione dell'immagine di 640, puoi utilizzare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, consulta la pagina di addestramento del modello.

Esempio di treno

from ultralytics import YOLO

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

# Train the model
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=SKU-110K.yaml model=yolov8n.pt epochs=100 imgsz=640

Dati di esempio e annotazioni

Il set di dati SKU-110k contiene un insieme eterogeneo di immagini di scaffali di vendita al dettaglio con oggetti densamente impacchettati, che forniscono un contesto ricco per le attività di rilevamento degli oggetti. Ecco alcuni esempi di dati tratti dal dataset, con le relative annotazioni:

Immagine campione del set di dati

  • Immagine di scaffale di vendita al dettaglio densamente imballato: Questa immagine mostra un esempio di oggetti densamente impacchettati in uno scaffale di vendita al dettaglio. Gli oggetti sono annotati con caselle di delimitazione ed etichette di categoria SKU.

L'esempio mostra la varietà e la complessità dei dati del set di dati SKU-110k e sottolinea l'importanza di dati di alta qualità per le attività di rilevamento degli oggetti.

Citazioni e ringraziamenti

Se utilizzi il dataset SKU-110k nel tuo lavoro di ricerca o sviluppo, cita il seguente documento:

@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 risorsa preziosa per la comunità di ricerca sulla computer vision. Per maggiori informazioni sul dataset SKU-110k e sui suoi creatori, visita il repository GitHub del dataset SKU-110k.

DOMANDE FREQUENTI

Che cos'è il dataset SKU-110k e perché è importante per il rilevamento degli oggetti?

Il set di dati SKU-110k è costituito da immagini di scaffali di vendita al dettaglio ad alta densità, progettate per aiutare la ricerca nei compiti di rilevamento degli oggetti. Sviluppato da Eran Goldman et al., comprende oltre 110.000 categorie di articoli unici. La sua importanza risiede nella capacità di mettere alla prova i rilevatori di oggetti all'avanguardia con diverse apparenze di oggetti e con la loro vicinanza, rendendolo una risorsa inestimabile per i ricercatori e i professionisti della computer vision. Per saperne di più sulla struttura del dataset e sulle sue applicazioni, consulta la sezione Dataset SKU-110k.

Come si addestra un modello YOLOv8 utilizzando il dataset SKU-110k?

L'addestramento di un modello YOLOv8 sul dataset SKU-110k è semplice. Ecco un esempio di addestramento di un modello YOLOv8n per 100 epoch con un'immagine di 640 dimensioni:

Esempio di treno

from ultralytics import YOLO

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

# Train the model
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=SKU-110K.yaml model=yolov8n.pt epochs=100 imgsz=640

Per un elenco completo degli argomenti disponibili, consulta la pagina Formazione del modello.

Quali sono i principali sottoinsiemi del dataset SKU-110k?

Il set di dati SKU-110k è organizzato in tre sottoinsiemi principali:

  1. Set di allenamento: Contiene le immagini e le annotazioni utilizzate per addestrare i modelli di rilevamento degli oggetti.
  2. Set di convalida: Consiste nelle immagini e nelle annotazioni utilizzate per la convalida del modello durante la formazione.
  3. Set di prova: Progettato per la valutazione finale dei modelli di rilevamento degli oggetti addestrati.

Per maggiori dettagli, consulta la sezione Struttura del set di dati.

Come si configura il dataset SKU-110k per la formazione?

La configurazione del dataset SKU-110k è definita in un file YAML, che include dettagli sui percorsi del dataset, sulle classi e altre informazioni rilevanti. Il file SKU-110K.yaml Il file viene mantenuto all'indirizzo SKU-110K.yaml. Ad esempio, puoi addestrare un modello utilizzando questa configurazione, come mostrato nel nostro Utilizzo sezione.

Quali sono le caratteristiche principali del dataset SKU-110k nel contesto del deep learning?

Il dataset SKU-110k contiene immagini di scaffali di negozi di tutto il mondo e mostra oggetti densamente impacchettati che pongono sfide significative ai rilevatori di oggetti:

  • Oltre 110.000 categorie di SKU uniche
  • Aspetti diversi degli oggetti
  • Le annotazioni includono i riquadri di delimitazione e le etichette delle categorie SKU.

Queste caratteristiche rendono il dataset SKU-110k particolarmente prezioso per l'addestramento e la valutazione di modelli di deep learning in attività di rilevamento di oggetti. Per maggiori dettagli, consulta la sezione Caratteristiche principali.

Come posso citare il dataset SKU-110k nella mia ricerca?

Se utilizzi il dataset SKU-110k nel tuo lavoro di ricerca o sviluppo, cita il seguente documento:

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

Ulteriori informazioni sul set di dati sono disponibili nella sezione Citazioni e ringraziamenti.



Creato 2023-11-12, Aggiornato 2024-07-26
Autori: RizwanMunawar (1), glenn-jocher (6), Laughing-q (1)

Commenti