Zum Inhalt springen

SKU-110k Datensatz

Der SKU-110k-Datensatz ist eine Sammlung dicht gepackter Bilder von Einzelhandelsregalen, die fĂŒr die Forschung im Bereich der Objekterkennung entwickelt wurde. Der von Eran Goldman et al. entwickelte Datensatz enthĂ€lt ĂŒber 110.000 eindeutige Kategorien von Lagerhaltungseinheiten (SKU) mit dicht gepackten Objekten, die oft Ă€hnlich oder sogar identisch aussehen und in unmittelbarer NĂ€he angeordnet sind.



Pass auf: So trainierst du YOLOv10 auf dem SKU-110k-Datensatz mit Ultralytics | Retail Dataset

Datensatz Beispielbild

Hauptmerkmale

  • SKU-110k enthĂ€lt Bilder von Ladenregalen aus der ganzen Welt mit dicht gepackten Objekten, die eine Herausforderung fĂŒr moderne Objektdetektoren darstellen.
  • Der Datensatz umfasst ĂŒber 110.000 einzigartige SKU-Kategorien, die eine Vielzahl von Objekten darstellen.
  • Zu den Anmerkungen gehören Begrenzungsrahmen fĂŒr Objekte und SKU-Kategoriebezeichnungen.

Struktur des Datensatzes

Der SKU-110k-Datensatz ist in drei große Teilmengen unterteilt:

  1. Trainingsset: Diese Teilmenge enthĂ€lt Bilder und Anmerkungen, die fĂŒr das Training von Objekterkennungsmodellen verwendet werden.
  2. Validierungssatz: Diese Teilmenge besteht aus Bildern und Anmerkungen, die wÀhrend des Trainings zur Modellvalidierung verwendet werden.
  3. Testsatz: Diese Teilmenge ist fĂŒr die abschließende Bewertung der trainierten Objekterkennungsmodelle gedacht.

Anwendungen

Der SKU-110k-Datensatz wird hĂ€ufig zum Trainieren und Evaluieren von Deep-Learning-Modellen fĂŒr die Objekterkennung verwendet, insbesondere in dicht gepackten Szenen wie z. B. Einzelhandelsregalen. Die Vielfalt der SKU-Kategorien und die dichte Anordnung der Objekte machen den Datensatz zu einer wertvollen Ressource fĂŒr Forscher/innen und Praktiker/innen auf dem Gebiet der Computer Vision.

Datensatz YAML

Eine YAML-Datei (Yet Another Markup Language) wird verwendet, um die Konfiguration des Datensatzes zu definieren. Sie enthĂ€lt Informationen ĂŒber die Pfade des Datensatzes, Klassen und andere relevante Informationen. Im Fall des SKU-110K-Datensatzes ist die SKU-110K.yaml Datei wird verwaltet unter 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

Verwendung

Um ein YOLOv8n Modell auf dem SKU-110K-Datensatz fĂŒr 100 Epochen mit einer BildgrĂ¶ĂŸe von 640 zu trainieren, kannst du die folgenden Codeschnipsel verwenden. Eine umfassende Liste der verfĂŒgbaren Argumente findest du auf der Seite Modelltraining.

Beispiel fĂŒr einen Zug

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

Beispieldaten und Anmerkungen

Der SKU-110k-Datensatz enthĂ€lt eine Vielzahl von Einzelhandelsregalbildern mit dicht gepackten Objekten, die einen reichhaltigen Kontext fĂŒr Objekterkennungsaufgaben bieten. Hier sind einige Beispiele von Daten aus dem Datensatz, zusammen mit den entsprechenden Anmerkungen:

Datensatz Beispielbild

  • Dicht gepacktes Einzelhandelsregal: Dieses Bild zeigt ein Beispiel fĂŒr dicht gepackte Objekte in einem Einzelhandelsregal. Die Objekte sind mit Bounding Boxes und SKU-Kategorie-Etiketten beschriftet.

Das Beispiel zeigt die Vielfalt und KomplexitĂ€t der Daten im SKU-110k-Datensatz und verdeutlicht, wie wichtig hochwertige Daten fĂŒr die Objekterkennung sind.

Zitate und Danksagungen

Wenn du den SKU-110k-Datensatz in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Dokument:

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

Wir möchten Eran Goldman et al. dafĂŒr danken, dass sie den SKU-110k-Datensatz als wertvolle Ressource fĂŒr die Computer Vision-Forschungsgemeinschaft erstellt und gepflegt haben. Weitere Informationen ĂŒber den SKU-110k-Datensatz und seine Ersteller findest du im SKU-110k-Datensatz-GitHub-Repository.

FAQ

Was ist der SKU-110k-Datensatz und warum ist er fĂŒr die Objekterkennung wichtig?

Der SKU-110k-Datensatz besteht aus dicht gepackten Bildern von Einzelhandelsregalen, die die Forschung bei der Objekterkennung unterstĂŒtzen sollen. Er wurde von Eran Goldman et al. entwickelt und enthĂ€lt ĂŒber 110.000 einzigartige SKU-Kategorien. Seine Bedeutung liegt in seiner FĂ€higkeit, modernste Objektdetektoren mit unterschiedlichen Objekterscheinungen und in unmittelbarer NĂ€he herauszufordern, was ihn zu einer unschĂ€tzbaren Ressource fĂŒr Forscher und Praktiker im Bereich Computer Vision macht. Erfahre mehr ĂŒber die Struktur und die Anwendungen des Datensatzes in unserem Abschnitt SKU-110k Dataset.

Wie trainiere ich ein YOLOv8 Modell mit dem SKU-110k-Datensatz?

Das Training eines YOLOv8 Modells auf dem SKU-110k Datensatz ist ganz einfach. Hier ist ein Beispiel fĂŒr das Training eines YOLOv8n Modells fĂŒr 100 Epochen mit einer BildgrĂ¶ĂŸe von 640:

Beispiel fĂŒr einen Zug

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

Eine umfassende Liste der verfĂŒgbaren Argumente findest du auf der Seite Modellschulung.

Was sind die wichtigsten Teilmengen des SKU-110k-Datensatzes?

Der SKU-110k-Datensatz ist in drei große Teilmengen unterteilt:

  1. Trainingsset: EnthÀlt Bilder und Anmerkungen, die zum Trainieren von Objekterkennungsmodellen verwendet werden.
  2. Validierungsset: Besteht aus Bildern und Anmerkungen, die wÀhrend des Trainings zur Modellvalidierung verwendet werden.
  3. Testset: FĂŒr die abschließende Bewertung der trainierten Objekterkennungsmodelle.

Weitere Informationen findest du im Abschnitt Datensatzstruktur.

Wie konfiguriere ich den SKU-110k-Datensatz fĂŒr das Training?

Die Konfiguration des SKU-110k-Datensatzes wird in einer YAML-Datei definiert, die Details zu den Pfaden, Klassen und anderen relevanten Informationen des Datensatzes enthÀlt. Die SKU-110K.yaml Datei wird verwaltet unter SKU-110K.yaml. Mit dieser Konfiguration kannst du zum Beispiel ein Modell trainieren, wie es in unserer Verwendung Abschnitt.

Was sind die wichtigsten Merkmale des SKU-110k-Datensatzes im Kontext des Deep Learning?

Der SKU-110k-Datensatz enthĂ€lt Bilder von Ladenregalen aus der ganzen Welt und zeigt dicht gepackte Objekte, die eine große Herausforderung fĂŒr Objektdetektoren darstellen:

  • Über 110.000 einzigartige SKU-Kategorien
  • VielfĂ€ltige Erscheinungsformen von Objekten
  • Anmerkungen umfassen Begrenzungsrahmen und SKU-Kategoriebezeichnungen

Diese Eigenschaften machen den SKU-110k-Datensatz besonders wertvoll fĂŒr das Training und die Evaluierung von Deep Learning-Modellen fĂŒr die Objekterkennung. Weitere Einzelheiten findest du im Abschnitt " Hauptmerkmale ".

Wie kann ich den SKU-110k-Datensatz in meiner Forschung zitieren?

Wenn du den SKU-110k-Datensatz in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Dokument:

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

Weitere Informationen ĂŒber den Datensatz findest du im Abschnitt Zitate und Danksagungen.



Erstellt am 2023-11-12, Aktualisiert am 2024-07-26
Autoren: RizwanMunawar (1), glenn-jocher (6), Laughing-q (1)

Kommentare