Overslaan naar inhoud

SKU-110k Dataset

De SKU-110k dataset is een verzameling van dicht op elkaar gepakte afbeeldingen van winkelschappen, ontworpen ter ondersteuning van onderzoek naar objectdetectietaken. De dataset is ontwikkeld door Eran Goldman et al. en bevat meer dan 110.000 unieke categorieën van winkelunits (SKU's) met dicht op elkaar geplaatste objecten die er vaak hetzelfde of zelfs identiek uitzien.

Voorbeeldafbeelding dataset

Belangrijkste kenmerken

  • SKU-110k bevat afbeeldingen van winkelschappen van over de hele wereld, met dicht op elkaar gepakte objecten die een uitdaging vormen voor geavanceerde objectdetectoren.
  • De dataset bevat meer dan 110.000 unieke SKU-categorieën, die een divers scala aan objectverschijningen bieden.
  • Annotaties omvatten begrenzingskaders voor objecten en SKU-categorielabels.

Structuur dataset

De SKU-110k dataset is onderverdeeld in drie subsets:

  1. Trainingsset: Deze subset bevat afbeeldingen en annotaties die worden gebruikt voor het trainen van objectdetectiemodellen.
  2. Validatieset: Deze subset bestaat uit afbeeldingen en annotaties die tijdens de training zijn gebruikt voor modelvalidatie.
  3. Testset: Deze subset is ontworpen voor de eindevaluatie van getrainde objectdetectiemodellen.

Toepassingen

De SKU-110k dataset wordt veel gebruikt voor het trainen en evalueren van deep learning modellen in objectdetectietaken, vooral in dicht opeengepakte scènes zoals winkelschappen. Door de diverse SKU-categorieën en de dicht opeengepakte objecten is de dataset een waardevolle bron voor onderzoekers en praktijkmensen op het gebied van computervisie.

Dataset YAML

Een YAML (Yet Another Markup Language) bestand wordt gebruikt om de configuratie van de dataset te definiëren. Het bevat informatie over de paden, klassen en andere relevante informatie van de dataset. In het geval van de SKU-110K dataset is het SKU-110K.yaml bestand wordt onderhouden op 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

Gebruik

Om een YOLOv8n model te trainen op de SKU-110K dataset voor 100 epochs met een afbeeldingsgrootte van 640, kun je de volgende codefragmenten gebruiken. Raadpleeg de pagina Model Training voor een uitgebreide lijst met beschikbare argumenten.

Voorbeeld trein

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

Voorbeeldgegevens en annotaties

De SKU-110k dataset bevat een diverse set afbeeldingen van winkelschappen met dicht op elkaar gepakte objecten, die een rijke context bieden voor objectdetectietaken. Hier zijn enkele voorbeelden van gegevens uit de dataset, samen met de bijbehorende annotaties:

Voorbeeldafbeelding dataset

  • Afbeelding van dicht opeengepakt winkelschap: Deze afbeelding toont een voorbeeld van dicht opeengepakte objecten in een winkelschap. De objecten zijn gemarkeerd met bounding boxes en SKU-categorielabels.

Het voorbeeld laat de verscheidenheid en complexiteit van de gegevens in de SKU-110k dataset zien en benadrukt het belang van gegevens van hoge kwaliteit voor objectdetectietaken.

Citaten en erkenningen

Als je de SKU-110k dataset gebruikt in je onderzoek of ontwikkeling, citeer dan het volgende document:

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

We willen Eran Goldman et al. bedanken voor het maken en onderhouden van de SKU-110k dataset als een waardevolle bron voor de computer vision onderzoeksgemeenschap. Bezoek voor meer informatie over de SKU-110k dataset en de makers ervan de SKU-110k dataset GitHub repository.



Aangemaakt 2023-11-12, Bijgewerkt 2023-11-22
Auteurs: glenn-jocher (3), Laughing-q (1)

Reacties