Link to this sectionDataset SKU-110K#
El conjunto de datos SKU-110K es un conjunto de datos de detección de objetos de una sola clase que contiene 11.743 imágenes de estanterías de tiendas densamente pobladas, divididas en 8.219 imágenes de entrenamiento, 588 de validación y 2.936 de prueba. Cada producto está anotado con un cuadro delimitador bajo una única clase, object: el nombre hace referencia a las más de 110.000 unidades de mantenimiento de existencias (SKU) únicas que aparecen en las escenas, no a 110.000 clases de detección. Creado por Eran Goldman et al. para el artículo de CVPR 2019 Precise Detection in Densely Packed Scenes, contiene más de 1,7 millones de productos anotados, un promedio de casi 147 por imagen, lo que lo convierte en un punto de referencia exigente para modelos de visión artificial en entornos minoristas abarrotados.
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Link to this sectionCaracterísticas clave#
- Detección de una sola clase: Cada producto está etiquetado con un bounding box bajo una única clase,
object(names: {0: object}) — las anotaciones no incluyen etiquetas de categoría por SKU. - Densidad extrema de objetos: Las imágenes de estanterías de tiendas de todo el mundo tienen un promedio de unos 147 productos densamente empaquetados cada una, con objetos que a menudo parecen similares o incluso idénticos situados muy cerca unos de otros.
- Gran escala: Más de 110.000 SKU únicos y más de 1,7 millones de cuadros delimitadores anotados en 11.743 imágenes suponen un reto para los detectores de objetos de última generación.
Link to this sectionEstructura del dataset#
El conjunto de datos SKU-110K se divide en tres subconjuntos, todos ellos compartiendo la única clase object:
| Split | Imágenes | Descripción |
|---|---|---|
| Entrenar | 8.219 | Imágenes y anotaciones para el entrenamiento del modelo |
| Validación | 588 | Imágenes reservadas para la evaluación durante el entrenamiento |
| Prueba | 2.936 | Imágenes para la evaluación final del modelo entrenado |
Link to this sectionAplicaciones#
El conjunto de datos SKU-110K se utiliza ampliamente para entrenar y evaluar modelos de aprendizaje profundo en tareas de detección de objetos, especialmente en escenas densamente pobladas como los expositores de estanterías de tiendas. Sus aplicaciones incluyen:
- Gestión y automatización del inventario minorista
- Reconocimiento de productos en plataformas de comercio electrónico
- Verificación de cumplimiento del planograma
- Sistemas de autopago en tiendas
- Recogida y clasificación robótica en almacenes
Para anotar tus propias imágenes de estanterías, entrenar y gestionar conjuntos de datos de detección minorista en tu navegador, ejecuta el flujo de trabajo completo con Ultralytics Platform.
Link to this sectionYAML del dataset#
El archivo SKU-110K.yaml define la configuración del conjunto de datos: las rutas del conjunto de datos, los nombres de las clases y otros metadatos. Se mantiene en el repositorio de Ultralytics en 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 labelLink to this sectionUso#
SKU-110K se descarga automáticamente la primera vez que entrenas y requiere unos 13,6 GB de espacio libre en disco para sus 11.743 imágenes. El script de descarga también obtiene las anotaciones originales y las convierte al formato YOLO, lo que puede llevar unos minutos.
Para entrenar un modelo YOLO26n en el conjunto de datos SKU-110K durante 100 épocas con un tamaño de imagen de 640, puedes utilizar los siguientes fragmentos de código. Para obtener una lista completa de los argumentos disponibles, consulta la página de Entrenamiento del modelo.
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 sectionEjemplos de datos y anotaciones#
Las imágenes de SKU-110K capturan productos densamente empaquetados en estanterías de tiendas reales, donde docenas de artículos casi idénticos están colocados uno al lado del otro. Aquí tienes un ejemplo de imagen con sus anotaciones:

- Imagen de estantería minorista densamente poblada: Esta imagen muestra un ejemplo de objetos densamente empaquetados en un entorno de estantería minorista. Los objetos están anotados con cuadros delimitadores bajo la única clase
object.
La densa disposición de los productos hace que SKU-110K sea especialmente valioso para desarrollar soluciones de visión artificial robustas centradas en el comercio minorista, ya que el elevado número de objetos por imagen lleva a los detectores mucho más allá de los puntos de referencia típicos.
Link to this sectionCitas y agradecimientos#
Si utilizas el conjunto de datos SKU-110K en tu trabajo de investigación o desarrollo, por favor cita el siguiente artículo:
@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}
}Nos gustaría dar las gracias a Eran Goldman et al. por crear y mantener el conjunto de datos SKU-110K como un recurso valioso para la comunidad investigadora de visión artificial. Para obtener más información sobre el conjunto de datos SKU-110K y sus creadores, visita el repositorio de GitHub del conjunto de datos SKU-110K.
Link to this sectionFAQ#
Link to this section¿Para qué se utiliza el conjunto de datos SKU-110K?#
El conjunto de datos SKU-110K es un conjunto de datos de detección de objetos de una sola clase compuesto por 11.743 imágenes de estanterías de tiendas densamente pobladas, creado por Eran Goldman et al. para su artículo de CVPR 2019. Cada producto está etiquetado con un cuadro delimitador object, y las imágenes abarcan más de 110.000 unidades de mantenimiento de existencias (SKU) únicas, lo que lo convierte en un sólido punto de referencia para detectar objetos en escenas abarrotadas y para crear sistemas de visión artificial minorista.
Link to this section¿Tiene el conjunto de datos SKU-110K 110.000 clases?#
No. SKU-110K es de una sola clase: cada producto está anotado con un bounding box bajo la clase object (names: {0: object}). El "110K" del nombre se refiere al número de unidades de mantenimiento de existencias (SKUs) únicas fotografiadas en las imágenes, no al número de clases de detección.
Link to this section¿Cuántas imágenes y clases hay en el conjunto de datos SKU-110K?#
El conjunto de datos SKU-110K contiene 11.743 imágenes (8.219 para entrenamiento, 588 para validación y 2.936 para pruebas) y una sola clase de detección, object. Consulta la sección Estructura del conjunto de datos y la configuración SKU-110K.yaml para obtener más detalles.
Link to this section¿Cuánto ocupa la descarga del conjunto de datos SKU-110K?#
SKU-110K ocupa unos 13,6 GB y se descarga automáticamente la primera vez que entrenas con data="SKU-110K.yaml": no es necesaria ninguna descarga manual. Para ver otras opciones más pequeñas, consulta la visión general de conjuntos de datos de detección.
Link to this section¿Cómo entreno un modelo YOLO26 usando el conjunto de datos SKU-110K?#
Entrenar un modelo YOLO26 con el conjunto de datos SKU-110K es sencillo. Aquí tienes un ejemplo para entrenar un modelo YOLO26n durante 100 épocas con un tamaño de imagen 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)Para obtener una lista completa de los argumentos disponibles, consulta la página de entrenamiento de modelos y los consejos para el entrenamiento de modelos.