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.

FAQ

Wat is de SKU-110k dataset en waarom is deze belangrijk voor objectdetectie?

De SKU-110k dataset bestaat uit dicht op elkaar gepakte afbeeldingen van winkelschappen die zijn ontworpen om te helpen bij onderzoek naar objectdetectietaken. Het is ontwikkeld door Eran Goldman et al. en bevat meer dan 110.000 unieke SKU-categorieën. Het belang ligt in de mogelijkheid om geavanceerde objectdetectors uit te dagen met verschillende verschijningsvormen van objecten en de nabijheid ervan, waardoor het een bron van onschatbare waarde is voor onderzoekers en beoefenaars van computervisie. Leer meer over de structuur en toepassingen van de dataset in onze SKU-110k Dataset sectie.

Hoe train ik een YOLOv8 model met de SKU-110k dataset?

Het trainen van een YOLOv8 model op de SKU-110k dataset is eenvoudig. Hier is een voorbeeld om een YOLOv8n model te trainen voor 100 epochs met een afbeeldingsgrootte van 640:

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

Kijk voor een uitgebreide lijst met beschikbare argumenten op de pagina Model Training.

Wat zijn de belangrijkste subsets van de SKU-110k dataset?

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

  1. Trainingsset: Bevat afbeeldingen en annotaties die worden gebruikt voor het trainen van objectdetectiemodellen.
  2. Validatieset: Bestaat uit afbeeldingen en annotaties die tijdens de training zijn gebruikt voor modelvalidatie.
  3. Testset: Ontworpen voor de eindevaluatie van getrainde objectdetectiemodellen.

Raadpleeg het hoofdstuk Datasetstructuur voor meer informatie.

Hoe configureer ik de SKU-110k dataset voor training?

De configuratie van de SKU-110k dataset wordt gedefinieerd in een YAML bestand, dat details bevat over de paden, klassen en andere relevante informatie van de dataset. De SKU-110K.yaml bestand wordt onderhouden op SKU-110K.yaml. Je kunt bijvoorbeeld een model trainen met deze configuratie zoals te zien is in onze Gebruik sectie.

Wat zijn de belangrijkste kenmerken van de SKU-110k dataset in de context van deep learning?

De SKU-110k dataset bevat afbeeldingen van winkelschappen van over de hele wereld en toont dicht opeengepakte objecten die een grote uitdaging vormen voor objectdetectoren:

  • Meer dan 110.000 unieke SKU-categorieën
  • Diverse objectverschijningen
  • Annotaties zijn onder andere bounding boxes en SKU-categorielabels

Deze eigenschappen maken de SKU-110k dataset bijzonder waardevol voor het trainen en evalueren van deep learning modellen in objectdetectietaken. Zie voor meer details het gedeelte over de belangrijkste kenmerken.

Hoe citeer ik de SKU-110k dataset in mijn onderzoek?

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

Meer informatie over de dataset is te vinden in het gedeelte Citations and Acknowledgments.



Aangemaakt 2023-11-12, Bijgewerkt 2024-07-04
Auteurs: glenn-jocher (6), Laughing-q (1)

Reacties