Jeu de données SKU-110k
Le jeu de données SKU-110k est une collection d'images d'étagères de vente au détail densément remplies, conçue pour soutenir la recherche sur les tâches de détection d'objets. Développé par Eran Goldman et al., le jeu de données contient plus de 110 000 catégories d'unités de gestion des stocks (SKU) uniques avec des objets densément regroupés, qui se ressemblent souvent ou sont même identiques, positionnés à proximité les uns des autres.
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Fonctionnalités clés
- SKU-110k contient des images d'étagères de magasins du monde entier, présentant des objets densément regroupés qui posent des défis aux détecteurs d'objets de pointe.
- Le jeu de données comprend plus de 110 000 catégories de SKU uniques, offrant une gamme variée d'apparences d'objets.
- Les annotations incluent des boîtes englobantes (bounding boxes) pour les objets et des étiquettes de catégorie SKU.
Structure du jeu de données
Le jeu de données SKU-110k est organisé en trois sous-ensembles principaux :
- Ensemble d'entraînement : Ce sous-ensemble contient 8 219 images et annotations utilisées pour entraîner des modèles de détection d'objets.
- Ensemble de validation : Ce sous-ensemble se compose de 588 images et annotations utilisées pour la validation du modèle pendant l'entraînement.
- Ensemble de test : Ce sous-ensemble comprend 2 936 images conçues pour l'évaluation finale des modèles de détection d'objets entraînés.
Applications
Le jeu de données SKU-110k est largement utilisé pour entraîner et évaluer des modèles de deep learning dans des tâches de détection d'objets, en particulier dans des scènes densément remplies telles que les présentoirs d'étagères de vente au détail. Ses applications incluent :
- Gestion et automatisation des stocks de détail
- Reconnaissance de produits sur les plateformes de e-commerce
- Vérification de la conformité du planogramme
- Systèmes de caisse en libre-service dans les magasins
- Prélèvement et tri robotisés dans les entrepôts
L'ensemble varié de catégories SKU et les dispositions d'objets densément regroupées font de ce jeu de données une ressource précieuse pour les chercheurs et les praticiens dans le domaine de la vision par ordinateur.
YAML du jeu de données
Un fichier YAML (Yet Another Markup Language) est utilisé pour définir la configuration du jeu de données. Il contient des informations sur les chemins d'accès du jeu de données, les classes et d'autres informations pertinentes. Pour le jeu de données SKU-110K, le fichier SKU-110K.yaml est maintenu à l'adresse https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml.
# 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 labelUtilisation
Pour entraîner un modèle YOLO26n sur le jeu de données SKU-110K pendant 100 époques avec une taille d'image de 640, tu peux utiliser les extraits de code suivants. Pour une liste complète des arguments disponibles, consulte la page Entraînement du modèle.
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)Exemples de données et d'annotations
Le jeu de données SKU-110k contient un ensemble varié d'images d'étagères de vente au détail avec des objets densément regroupés, offrant un contexte riche pour les tâches de détection d'objets. Voici quelques exemples de données issues du jeu de données, accompagnés de leurs annotations correspondantes :

- Image d'étagère de vente au détail densément remplie : Cette image illustre un exemple d'objets densément regroupés dans un cadre de magasin. Les objets sont annotés avec des boîtes englobantes et des étiquettes de catégorie SKU.
L'exemple met en évidence la variété et la complexité des données dans le jeu de données SKU-110k et souligne l'importance de données de haute qualité pour les tâches de détection d'objets. L'agencement dense des produits présente des défis uniques pour les algorithmes de détection, rendant ce jeu de données particulièrement précieux pour développer des solutions de vision par ordinateur robustes axées sur la vente au détail.
Citations et remerciements
Si tu utilises le jeu de données SKU-110k dans tes travaux de recherche ou de développement, merci de citer le document suivant :
@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}
}Nous tenons à remercier Eran Goldman et al. pour la création et la maintenance du jeu de données SKU-110k en tant que ressource précieuse pour la communauté de recherche en vision par ordinateur. Pour plus d'informations sur le jeu de données SKU-110k et ses créateurs, visite le dépôt GitHub du jeu de données SKU-110k.
FAQ
Qu'est-ce que le jeu de données SKU-110k et pourquoi est-il important pour la détection d'objets ?
Le jeu de données SKU-110k se compose d'images d'étagères de vente au détail densément remplies conçues pour aider à la recherche sur les tâches de détection d'objets. Développé par Eran Goldman et al., il comprend plus de 110 000 catégories SKU uniques. Son importance réside dans sa capacité à mettre au défi les détecteurs d'objets de pointe avec des apparences d'objets variées et une forte proximité, ce qui en fait une ressource inestimable pour les chercheurs et les praticiens en vision par ordinateur. Apprends-en davantage sur la structure et les applications du jeu de données dans notre section Jeu de données SKU-110k.
Comment entraîner un modèle YOLO26 en utilisant le jeu de données SKU-110k ?
L'entraînement d'un modèle YOLO26 sur le jeu de données SKU-110k est simple. Voici un exemple pour entraîner un modèle YOLO26n pendant 100 époques avec une taille d'image de 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)Pour une liste complète des arguments disponibles, consulte la page Entraînement du modèle.
Quels sont les principaux sous-ensembles du jeu de données SKU-110k ?
Le jeu de données SKU-110k est organisé en trois sous-ensembles principaux :
- Ensemble d'entraînement : Contient 8 219 images et annotations utilisées pour l'entraînement des modèles de détection d'objets.
- Ensemble de validation : Se compose de 588 images et annotations utilisées pour la validation du modèle pendant l'entraînement.
- Ensemble de test : Inclut 2 936 images conçues pour l'évaluation finale des modèles de détection d'objets entraînés.
Consulte la section Structure du jeu de données pour plus de détails.
Comment configurer le jeu de données SKU-110k pour l'entraînement ?
La configuration du jeu de données SKU-110k est définie dans un fichier YAML, qui inclut des détails sur les chemins d'accès du jeu de données, les classes et d'autres informations pertinentes. Le fichier SKU-110K.yaml est maintenu à SKU-110K.yaml. Par exemple, tu peux entraîner un modèle en utilisant cette configuration comme indiqué dans notre section Usage.
Quelles sont les principales caractéristiques du jeu de données SKU-110k dans le contexte du deep learning ?
Le jeu de données SKU-110k présente des images d'étagères de magasins du monde entier, mettant en avant des objets densément regroupés qui posent des défis significatifs pour les détecteurs d'objets :
- Plus de 110 000 catégories SKU uniques
- Apparences d'objets variées
- Les annotations incluent des boîtes englobantes et des étiquettes de catégorie SKU
Ces caractéristiques rendent le jeu de données SKU-110k particulièrement précieux pour entraîner et évaluer des modèles de deep learning dans les tâches de détection d'objets. Pour plus de détails, vois la section Caractéristiques principales.
Comment citer le jeu de données SKU-110k dans mes recherches ?
Si tu utilises le jeu de données SKU-110k dans tes travaux de recherche ou de développement, merci de citer le document suivant :
@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}
}Plus d'informations sur le jeu de données peuvent être trouvées dans la section Citations et remerciements.