Link to this sectionSKU-110K Dataset#
Das SKU-110K-Dataset ist ein Objekterkennungs-Dataset mit einer einzigen Klasse, bestehend aus 11.743 dicht gepackten Bildern von Verkaufsregalen, aufgeteilt in 8.219 Trainings-, 588 Validierungs- und 2.936 Testbilder. Jedes Produkt ist mit einem Begrenzungsrahmen unter einer einzigen Klasse, object, annotiert – der Name bezieht sich auf die über 110.000 einzigartigen Stock-Keeping Units (SKUs), die in den Szenen abgebildet sind, nicht auf 110.000 Erkennungsklassen. Erstellt von Eran Goldman et al. für das CVPR 2019 Paper Precise Detection in Densely Packed Scenes, enthält es über 1,7 Millionen annotierte Produkte – durchschnittlich etwa 147 pro Bild –, was es zu einem anspruchsvollen Benchmark für Computer Vision Modelle in überfüllten Einzelhandelsumgebungen macht.
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Link to this sectionHauptfunktionen#
- Erkennung mit einer einzigen Klasse: Jedes Produkt ist mit einem Begrenzungsrahmen unter einer einzigen Klasse,
object(names: {0: object}), beschriftet – die Annotationen enthalten keine kategoriebezogenen Labels pro SKU. - Extreme Objektdichte: Bilder von Verkaufsregalen aus der ganzen Welt enthalten durchschnittlich etwa 147 eng gepackte Produkte, wobei Objekte oft ähnlich oder sogar identisch aussehen und in unmittelbarer Nähe zueinander positioniert sind.
- Großer Umfang: Mehr als 110.000 einzigartige SKUs und über 1,7 Millionen annotierte Begrenzungsrahmen in 11.743 Bildern fordern moderne Objektdetektoren heraus.
Link to this sectionDatensatzstruktur#
Das SKU-110K-Dataset ist in drei Teilmengen unterteilt, die alle die einzige Klasse object teilen:
| Split | Bilder | Beschreibung |
|---|---|---|
| Trainieren | 8.219 | Bilder und Annotationen für das Modelltraining |
| Validation | 588 | Zurückgehaltene Bilder für die Evaluierung während des Trainings |
| Test | 2.936 | Bilder für die abschließende Evaluierung des trainierten Modells |
Link to this sectionAnwendungen#
Das SKU-110K-Dataset wird häufig zum Training und zur Evaluierung von Deep Learning Modellen bei Objekterkennungsaufgaben verwendet, insbesondere in dicht gepackten Szenen wie Verkaufsregalen. Zu den Anwendungen gehören:
- Bestandsverwaltung und Automatisierung im Einzelhandel
- Produkterkennung auf E-Commerce-Plattformen
- Überprüfung der Einhaltung von Planogrammen
- Self-Checkout-Systeme in Geschäften
- Robotisches Kommissionieren und Sortieren in Lagerhäusern
Um deine eigenen Regalbilder zu annotieren sowie Einzelhandels-Erkennungsdatasets in deinem Browser zu trainieren und zu verwalten, führe den vollständigen Workflow mit der Ultralytics Platform aus.
Link to this sectionDatensatz-YAML#
Die SKU-110K.yaml-Datei definiert die Konfiguration des Datasets – die Dataset-Pfade, Klassennamen und andere Metadaten. Sie wird im Ultralytics Repository unter https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml gepflegt.
# 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 labelLink to this sectionVerwendung#
SKU-110K wird beim ersten Training automatisch heruntergeladen und benötigt etwa 13,6 GB freien Speicherplatz für die 11.743 Bilder. Das Download-Skript ruft auch die ursprünglichen Annotationen ab und konvertiert sie in das YOLO-Format, was einige Minuten dauern kann.
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-Schnipsel 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)Link to this sectionBeispieldaten und Annotationen#
SKU-110K-Bilder erfassen dicht gepackte Produkte in echten Verkaufsregalen, wo Dutzende nahezu identischer Artikel nebeneinander stehen. Hier ist ein Beispielbild mit seinen Annotationen:

- Dicht gepacktes Verkaufsregalbild: Dieses Bild zeigt ein Beispiel für dicht gepackte Objekte in einem Verkaufsregal. Objekte sind mit Begrenzungsrahmen unter der einzigen Klasse
objectannotiert.
Die dichte Anordnung der Produkte macht SKU-110K besonders wertvoll für die Entwicklung robuster, auf den Einzelhandel ausgerichteter Computer-Vision-Lösungen, da die hohe Objektanzahl pro Bild Detektoren weit über typische Benchmarks hinaus fordert.
Link to this sectionZitate und Danksagungen#
Wenn du das SKU-110K-Dataset in deiner Forschung 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 Eran Goldman et al. dafür danken, dass sie das SKU-110K-Dataset als wertvolle Ressource für die Computer-Vision-Forschungsgemeinschaft erstellt und gepflegt haben. Weitere Informationen zum SKU-110K-Dataset und seinen Erstellern findest du im SKU-110K Dataset GitHub Repository.
Link to this sectionFAQ#
Link to this sectionWofür wird das SKU-110K-Dataset verwendet?#
Das SKU-110K-Dataset ist ein Objekterkennungs-Dataset mit einer einzigen Klasse, bestehend aus 11.743 dicht gepackten Bildern von Verkaufsregalen, erstellt von Eran Goldman et al. für ihr CVPR 2019 Paper. Jedes Produkt ist mit einem object-Begrenzungsrahmen beschriftet, und die Bilder umfassen mehr als 110.000 einzigartige Stock-Keeping Units (SKUs), was es zu einem starken Benchmark für die Erkennung von Objekten in überfüllten Szenen und für den Aufbau von Computer Vision Systemen für den Einzelhandel macht.
Link to this sectionHat das SKU-110K-Dataset 110.000 Klassen?#
Nein. SKU-110K hat nur eine Klasse: Jedes Produkt ist mit einem Begrenzungsrahmen unter der Klasse object (names: {0: object}) annotiert. Die "110K" im Namen beziehen sich auf die Anzahl der einzigartigen Stock-Keeping Units (SKUs), die auf den Bildern abgebildet sind, nicht auf die Anzahl der Erkennungsklassen.
Link to this sectionWie viele Bilder und Klassen enthält das SKU-110K-Dataset?#
Das SKU-110K-Dataset enthält 11.743 Bilder – 8.219 für das Training, 588 für die Validierung und 2.936 für den Test – sowie eine einzige Erkennungsklasse, object. Siehe den Abschnitt Dataset Structure und die Konfiguration SKU-110K.yaml für Details.
Link to this sectionWie groß ist der Download des SKU-110K-Datasets?#
SKU-110K ist etwa 13,6 GB groß und wird beim ersten Training mit data="SKU-110K.yaml" automatisch heruntergeladen – ein manueller Download ist nicht erforderlich. Um kleinere Optionen zu durchsuchen, siehe die Übersicht der Erkennungsdatasets.
Link to this sectionWie trainiere ich ein YOLO26-Modell mit dem SKU-110K-Dataset?#
Das Training eines YOLO26-Modells auf dem SKU-110K-Dataset ist unkompliziert. Hier ist ein Beispiel, um ein YOLO26n-Modell für 100 Epochen mit einer Bildgröße von 640 zu trainieren:
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)Eine umfassende Liste der verfügbaren Argumente findest du auf der Seite für das Modell-Training sowie in den Tipps zum Modelltraining.