SKU-110k-Datensatz
Der SKU-110k-Datensatz ist eine Sammlung von Bildern dicht gepackter Verkaufsregale, die zur Unterstützung der Forschung an Objekterkennungs-Aufgaben entwickelt wurde. Der von Eran Goldman et al. entwickelte Datensatz enthält über 110.000 einzigartige SKU-Kategorien (Stock Keeping Unit) mit dicht gepackten Objekten, die oft ähnlich oder sogar identisch aussehen und nah beieinander positioniert sind.
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Hauptmerkmale
- SKU-110k enthält Bilder von Verkaufsregalen aus der ganzen Welt mit dicht gepackten Objekten, die moderne Objekterkennungsmodelle vor Herausforderungen stellen.
- Der Datensatz umfasst über 110.000 einzigartige SKU-Kategorien und bietet eine vielfältige Auswahl an Objekt-Erscheinungsbildern.
- Die Annotationen umfassen Bounding Boxes für Objekte sowie SKU-Kategorie-Labels.
Datensatzstruktur
Der SKU-110k-Datensatz ist in drei Haupt-Subsets unterteilt:
- Trainingsset: Dieses Subset enthält 8.219 Bilder und Annotationen, die zum Training von Objekterkennungsmodellen verwendet werden.
- Validierungsset: Dieses Subset besteht aus 588 Bildern und Annotationen, die zur Modellvalidierung während des Trainings verwendet werden.
- Testset: Dieses Subset enthält 2.936 Bilder für die abschließende Evaluierung trainierter Objekterkennungsmodelle.
Anwendungen
Der SKU-110k-Datensatz wird häufig für das Training und die Evaluierung von Deep-Learning-Modellen bei Objekterkennungsaufgaben verwendet, insbesondere in dicht gepackten Szenen wie Verkaufsregalen. Zu den Anwendungsbereichen gehören:
- Bestandsverwaltung und Automatisierung im Einzelhandel
- Produkterkennung auf E-Commerce-Plattformen
- Überprüfung der Einhaltung von Planogrammen
- Self-Checkout-Systeme in Geschäften
- Robotergestützte Kommissionierung und Sortierung in Lagerhäusern
Die vielfältigen SKU-Kategorien und die dicht gepackten Objektanordnungen machen den Datensatz zu einer wertvollen Ressource für Forscher und Anwender im Bereich Computer Vision.
Datensatz-YAML
Eine YAML-Datei (Yet Another Markup Language) wird verwendet, um die Datensatzkonfiguration zu definieren. Sie enthält Informationen über die Pfade des Datensatzes, Klassen und andere relevante Details. Für den SKU-110K-Datensatz wird die Datei SKU-110K.yaml unter https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml bereitgestellt.
# 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 labelVerwendung
Um ein YOLO26n-Modell auf dem SKU-110K-Datensatz für 100 Epochen mit einer Bildgröße von 640 zu trainieren, kannst du die folgenden Code-Snippets verwenden. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite Training für Modelle.
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)Beispieldaten und Annotationen
Der SKU-110k-Datensatz enthält eine vielfältige Auswahl an Bildern von Verkaufsregalen mit dicht gepackten Objekten und bietet einen reichen Kontext für Objekterkennungsaufgaben. Hier sind einige Beispiele aus dem Datensatz zusammen mit den entsprechenden Annotationen:

- Bild eines dicht gepackten Verkaufsregals: Dieses Bild zeigt ein Beispiel für dicht gepackte Objekte in einem Verkaufsregal. Die Objekte sind mit Bounding Boxes und SKU-Kategorie-Labels annotiert.
Dieses Beispiel zeigt die Vielfalt und Komplexität der Daten im SKU-110k-Datensatz und unterstreicht, wie wichtig hochwertige Daten für Objekterkennungsaufgaben sind. Die dichte Anordnung von Produkten stellt einzigartige Anforderungen an Erkennungsalgorithmen, was diesen Datensatz besonders wertvoll für die Entwicklung robuster, auf den Einzelhandel ausgerichteter Computer-Vision-Lösungen macht.
Zitate und Danksagungen
Wenn du den SKU-110k-Datensatz in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Paper:
@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 uns bei Eran Goldman et al. für die Erstellung und Pflege des SKU-110k-Datensatzes als wertvolle Ressource für die Computer-Vision-Forschungsgemeinschaft bedanken. Weitere Informationen über den SKU-110k-Datensatz und seine Ersteller findest du im SKU-110k-Dataset-GitHub-Repository.
FAQ
Was ist der SKU-110k-Datensatz und warum ist er für die Objekterkennung wichtig?
Der SKU-110k-Datensatz besteht aus Bildern dicht gepackter Verkaufsregale, die dazu dienen, die Forschung an Objekterkennungsaufgaben zu unterstützen. Er wurde von Eran Goldman et al. entwickelt und enthält über 110.000 einzigartige SKU-Kategorien. Seine Bedeutung liegt in der Fähigkeit, moderne Objekterkennungsmodelle mit vielfältigen Erscheinungsbildern und der räumlichen Nähe von Objekten herauszufordern, was ihn zu einer unverzichtbaren Ressource für Forscher und Anwender im Bereich Computer Vision macht. Erfahre mehr über die Struktur und die Anwendungen des Datensatzes in unserem Bereich SKU-110k-Datensatz.
Wie trainiere ich ein YOLO26-Modell mit dem SKU-110k-Datensatz?
Das Training eines YOLO26-Modells auf dem SKU-110k-Datensatz ist unkompliziert. Hier ist ein Beispiel für das Training eines YOLO26n-Modells für 100 Epochen mit einer Bildgröße von 640:
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)Für eine umfassende Liste der verfügbaren Argumente siehe die Training-Seite für Modelle.
Was sind die Haupt-Subsets des SKU-110k-Datensatzes?
Der SKU-110k-Datensatz ist in drei Haupt-Subsets unterteilt:
- Trainingsset: Enthält 8.219 Bilder und Annotationen für das Training von Objekterkennungsmodellen.
- Validierungsset: Besteht aus 588 Bildern und Annotationen für die Modellvalidierung während des Trainings.
- Testset: Enthält 2.936 Bilder für die abschließende Evaluierung trainierter Objekterkennungsmodelle.
Weitere Details 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 enthält. Die SKU-110K.yaml-Datei wird unter SKU-110K.yaml gepflegt. Du kannst beispielsweise ein Modell unter Verwendung dieser Konfiguration trainieren, wie in unserem Abschnitt Nutzung gezeigt.
Was sind die Hauptmerkmale des SKU-110k-Datensatzes im Kontext von Deep Learning?
Der SKU-110k-Datensatz enthält Bilder von Verkaufsregalen aus der ganzen Welt und zeigt dicht gepackte Objekte, die Objekterkennungsmodelle vor erhebliche Herausforderungen stellen:
- Über 110.000 einzigartige SKU-Kategorien
- Vielfältige Erscheinungsbilder der Objekte
- Die Annotationen umfassen Bounding Boxes und SKU-Kategorie-Labels
Diese Merkmale machen den SKU-110k-Datensatz besonders wertvoll für das Training und die Evaluierung von Deep-Learning-Modellen bei Objekterkennungsaufgaben. Weitere Einzelheiten findest du im Abschnitt Hauptmerkmale.
Wie zitiere ich den SKU-110k-Datensatz in meiner Forschung?
Wenn du den SKU-110k-Datensatz in deiner Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Paper:
@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.