Dataset SKU-110k
El conjunto de datos SKU-110k es una colección de imágenes de estanterías minoristas con productos muy juntos, diseñado para apoyar la investigación en tareas de object detection. Desarrollado por Eran Goldman et al., el conjunto de datos contiene más de 110.000 categorías únicas de unidades de mantenimiento de existencias (SKU) con objetos densamente empaquetados, que a menudo parecen similares o incluso idénticos, situados muy cerca unos de otros.
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Características clave
- SKU-110k contiene imágenes de estanterías de tiendas de todo el mundo, con objetos densamente empaquetados que suponen un reto para los detectores de objetos de última generación.
- El conjunto de datos incluye más de 110.000 categorías SKU únicas, lo que proporciona una diversa gama de apariencias de objetos.
- Las anotaciones incluyen cuadros delimitadores para los objetos y etiquetas de categoría SKU.
Estructura del conjunto de datos
El conjunto de datos SKU-110k está organizado en tres subconjuntos principales:
- Conjunto de entrenamiento: Este subconjunto contiene 8.219 imágenes y anotaciones utilizadas para entrenar modelos de detección de objetos.
- Conjunto de validación: Este subconjunto consta de 588 imágenes y anotaciones utilizadas para la validación del modelo durante el entrenamiento.
- Conjunto de pruebas: Este subconjunto incluye 2.936 imágenes diseñadas para la evaluación final de los modelos de detección de objetos entrenados.
Aplicaciones
El conjunto de datos SKU-110k se utiliza ampliamente para entrenar y evaluar modelos de deep learning en tareas de detección de objetos, especialmente en escenas densamente pobladas como expositores de estanterías minoristas. Sus aplicaciones incluyen:
- Gestión y automatización del inventario minorista
- Reconocimiento de productos en plataformas de comercio electrónico
- Verificación del cumplimiento del planograma
- Sistemas de autopago en tiendas
- Recogida y clasificación robótica en almacenes
El variado conjunto de categorías SKU y la disposición densamente empaquetada de los objetos hacen de este conjunto de datos un recurso valioso para investigadores y profesionales en el campo de la computer vision.
YAML del conjunto de datos
Se utiliza un archivo YAML (Yet Another Markup Language) para definir la configuración del conjunto de datos. Contiene información sobre las rutas del conjunto de datos, las clases y otra información relevante. Para el caso del conjunto de datos SKU-110K, el archivo SKU-110K.yaml se mantiene 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 labelUso
Para entrenar un modelo YOLO26n en el conjunto de datos SKU-110K durante 100 epochs 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 Training 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)Muestra de datos y anotaciones
El conjunto de datos SKU-110k contiene un conjunto diverso de imágenes de estanterías minoristas con objetos densamente empaquetados, lo que proporciona un contexto enriquecido para las tareas de detección de objetos. Aquí tienes algunos ejemplos de datos del conjunto, junto con sus anotaciones correspondientes:

- 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 y etiquetas de categoría SKU.
El ejemplo muestra la variedad y complejidad de los datos en el conjunto SKU-110k y subraya la importancia de contar con datos de alta calidad para las tareas de detección de objetos. La densa disposición de los productos presenta retos únicos para los algoritmos de detección, lo que hace que este conjunto de datos sea especialmente valioso para desarrollar soluciones sólidas de computer vision centradas en el comercio minorista.
Citas y reconocimientos
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 agradecer a Eran Goldman et al. por crear y mantener el conjunto de datos SKU-110k como un recurso valioso para la comunidad de investigación en computer vision. 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.
Preguntas frecuentes
¿Qué es el conjunto de datos SKU-110k y por qué es importante para la detección de objetos?
El conjunto de datos SKU-110k consiste en imágenes de estanterías minoristas densamente pobladas, diseñadas para ayudar a la investigación en tareas de detección de objetos. Desarrollado por Eran Goldman et al., incluye más de 110.000 categorías SKU únicas. Su importancia reside en su capacidad para desafiar a los detectores de objetos de última generación con apariencias de objetos diversas y proximidad, lo que lo convierte en un recurso inestimable para investigadores y profesionales de la computer vision. Aprende más sobre la estructura y las aplicaciones del conjunto de datos en nuestra sección SKU-110k Dataset.
¿Cómo entreno un modelo YOLO26 usando el conjunto de datos SKU-110k?
Entrenar un modelo YOLO26 en el conjunto de datos SKU-110k es sencillo. Aquí tienes un ejemplo para entrenar un modelo YOLO26n durante 100 epochs 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 del modelo.
¿Cuáles son los subconjuntos principales del conjunto de datos SKU-110k?
El conjunto de datos SKU-110k está organizado en tres subconjuntos principales:
- Conjunto de entrenamiento: Contiene 8.219 imágenes y anotaciones utilizadas para entrenar modelos de detección de objetos.
- Conjunto de validación: Consta de 588 imágenes y anotaciones utilizadas para la validación del modelo durante el entrenamiento.
- Conjunto de pruebas: Incluye 2.936 imágenes diseñadas para la evaluación final de los modelos de detección de objetos entrenados.
Consulta la sección Dataset Structure para más detalles.
¿Cómo configuro el conjunto de datos SKU-110k para el entrenamiento?
La configuración del conjunto de datos SKU-110k se define en un archivo YAML, que incluye detalles sobre las rutas del conjunto de datos, las clases y otra información relevante. El archivo SKU-110K.yaml se mantiene en SKU-110K.yaml. Por ejemplo, puedes entrenar un modelo utilizando esta configuración como se muestra en nuestra sección Usage.
¿Cuáles son las características clave del conjunto de datos SKU-110k en el contexto del deep learning?
El conjunto de datos SKU-110k presenta imágenes de estanterías de tiendas de todo el mundo, mostrando objetos densamente empaquetados que plantean retos importantes para los detectores de objetos:
- Más de 110.000 categorías SKU únicas
- Diversas apariencias de objetos
- Las anotaciones incluyen cuadros delimitadores y etiquetas de categoría SKU
Estas características hacen que el conjunto de datos SKU-110k sea especialmente valioso para entrenar y evaluar modelos de deep learning en tareas de detección de objetos. Para más detalles, consulta la sección Key Features.
¿Cómo cito el conjunto de datos SKU-110k en mi investigación?
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}
}Puedes encontrar más información sobre el conjunto de datos en la sección Citations and Acknowledgments.