Saltar al contenido

Conjunto de datos SKU-110k

El conjunto de datos SKU-110k es una colecci贸n de im谩genes de estanter铆as de tiendas densamente empaquetadas, dise帽ada para apoyar la investigaci贸n en tareas de detecci贸n de objetos. Desarrollado por Eran Goldman et al., el conjunto de datos contiene m谩s de 110.000 categor铆as 煤nicas de unidades de mantenimiento de tienda (SKU) con objetos densamente empaquetados, a menudo de aspecto similar o incluso id茅ntico, situados muy cerca.

Imagen de muestra del conjunto de datos

Caracter铆sticas principales

  • 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 煤nicas de SKU, lo que proporciona una gama diversa 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:

  1. Conjunto de entrenamiento: Este subconjunto contiene im谩genes y anotaciones utilizadas para entrenar los modelos de detecci贸n de objetos.
  2. Conjunto de validaci贸n: Este subconjunto consta de im谩genes y anotaciones utilizadas para la validaci贸n del modelo durante el entrenamiento.
  3. Conjunto de pruebas: Este subconjunto est谩 dise帽ado 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 aprendizaje profundo en tareas de detecci贸n de objetos, especialmente en escenas densamente empaquetadas, como las estanter铆as de los comercios. La diversidad de categor铆as de SKU del conjunto de datos y las disposiciones de objetos densamente empaquetados lo convierten en un valioso recurso para investigadores y profesionales del campo de la visi贸n por ordenador.

Conjunto de datos YAML

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. En 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/cfg/datasets/SKU-110K.yaml

# Ultralytics YOLO 馃殌, AGPL-3.0 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: ../datasets/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 pandas as pd
  from tqdm 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 = pd.read_csv(dir / 'annotations' / d, names=names).values  # annotations
      images, unique_images = x[:, 0], np.unique(x[:, 0])
      with open((dir / d).with_suffix('.txt').__str__().replace('annotations_', ''), 'w') 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') 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 label

Utilizaci贸n

Para entrenar un modelo YOLOv8n 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 Entrenamiento del modelo.

Ejemplo de tren

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=SKU-110K.yaml model=yolov8n.pt 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 de tiendas con objetos densamente empaquetados, lo que proporciona un contexto rico para las tareas de detecci贸n de objetos. Aqu铆 tienes algunos ejemplos de datos del conjunto de datos, junto con sus correspondientes anotaciones:

Imagen de muestra del conjunto de datos

  • Imagen de una estanter铆a de venta al por menor densamente empaquetada: Esta imagen muestra un ejemplo de objetos densamente empaquetados en una estanter铆a de venta al por menor. Los objetos est谩n marcados con cajas delimitadoras y etiquetas de categor铆a SKU.

El ejemplo muestra la variedad y complejidad de los datos del conjunto de datos SKU-110k y destaca la importancia de los datos de alta calidad para las tareas de detecci贸n de objetos.

Citas y agradecimientos

Si utilizas el conjunto de datos SKU-110k en tu trabajo de investigaci贸n o desarrollo, cita el siguiente documento:

@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}
}

Queremos dar las gracias a Eran Goldman et al. por crear y mantener el conjunto de datos SKU-110k como un valioso recurso para la comunidad de investigadores de visi贸n por ordenador. Para obtener m谩s informaci贸n sobre el conjunto de datos SKU-110k y sus creadores, visita el repositorio GitHub del conjunto de datos SKU-110k.



Creado 2023-11-12, Actualizado 2024-05-18
Autores: glenn-jocher (4), Laughing-q (1)

Comentarios