Salta para o conteĆŗdo

Conjunto de dados SKU-110k

O conjunto de dados SKU-110k Ć© uma coleĆ§Ć£o de imagens de prateleiras de retalho densamente embaladas, concebidas para apoiar a investigaĆ§Ć£o em tarefas de deteĆ§Ć£o de objectos. Desenvolvido por Eran Goldman et al., o conjunto de dados contĆ©m mais de 110.000 categorias Ćŗnicas de unidades de manutenĆ§Ć£o de loja (SKU) com objectos densamente embalados, muitas vezes com aspeto semelhante ou mesmo idĆŖntico, posicionados nas proximidades.

Imagem de amostra do conjunto de dados

CaracterĆ­sticas principais

  • O SKU-110k contĆ©m imagens de prateleiras de lojas de todo o mundo, com objectos densamente compactados que representam desafios para os detectores de objectos mais avanƧados.
  • O conjunto de dados inclui mais de 110.000 categorias SKU Ćŗnicas, fornecendo uma gama diversificada de aparĆŖncias de objectos.
  • As anotaƧƵes incluem caixas delimitadoras para objectos e etiquetas de categorias SKU.

Estrutura do conjunto de dados

O conjunto de dados SKU-110k estĆ” organizado em trĆŖs subconjuntos principais:

  1. Conjunto de treino: Este subconjunto contĆ©m imagens e anotaƧƵes utilizadas para treinar modelos de deteĆ§Ć£o de objectos.
  2. Conjunto de validaĆ§Ć£o: Este subconjunto Ć© constituĆ­do por imagens e anotaƧƵes utilizadas para validaĆ§Ć£o do modelo durante o treino.
  3. Conjunto de teste: Este subconjunto foi concebido para a avaliaĆ§Ć£o final dos modelos de deteĆ§Ć£o de objectos treinados.

AplicaƧƵes

O conjunto de dados SKU-110k Ć© amplamente utilizado para treinar e avaliar modelos de aprendizagem profunda em tarefas de deteĆ§Ć£o de objectos, especialmente em cenas densamente compactadas, como os expositores de prateleiras de retalho. O conjunto de dados diversificado de categorias SKU e arranjos de objectos densamente embalados tornam-no um recurso valioso para investigadores e profissionais no campo da visĆ£o computacional.

Conjunto de dados YAML

Um ficheiro YAML (Yet Another Markup Language) Ć© utilizado para definir a configuraĆ§Ć£o do conjunto de dados. ContĆ©m informaƧƵes sobre os caminhos do conjunto de dados, classes e outras informaƧƵes relevantes. Para o caso do conjunto de dados SKU-110K, o ficheiro SKU-110K.yaml Ć© mantido em 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

UtilizaĆ§Ć£o

Para treinar um modelo YOLOv8n no conjunto de dados SKU-110K para 100 Ć©pocas com um tamanho de imagem de 640, podes utilizar os seguintes snippets de cĆ³digo. Para obter uma lista abrangente dos argumentos disponĆ­veis, consulta a pĆ”gina Treinamento do modelo.

Exemplo de comboio

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

Dados de amostra e anotaƧƵes

O conjunto de dados SKU-110k contĆ©m um conjunto diversificado de imagens de prateleiras de retalho com objectos densamente embalados, fornecendo um contexto rico para tarefas de deteĆ§Ć£o de objectos. Aqui estĆ£o alguns exemplos de dados do conjunto de dados, juntamente com as anotaƧƵes correspondentes:

Imagem de amostra do conjunto de dados

  • Imagem de uma prateleira de retalho densamente embalada: Esta imagem demonstra um exemplo de objectos densamente embalados numa prateleira de retalho. Os objectos sĆ£o anotados com caixas delimitadoras e etiquetas de categorias SKU.

O exemplo mostra a variedade e complexidade dos dados no conjunto de dados SKU-110k e realƧa a importĆ¢ncia de dados de alta qualidade para tarefas de deteĆ§Ć£o de objectos.

CitaƧƵes e agradecimentos

Se utilizares o conjunto de dados SKU-110k no teu trabalho de investigaĆ§Ć£o ou desenvolvimento, cita o seguinte 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}
}

GostarĆ­amos de agradecer a Eran Goldman et al. por criar e manter o conjunto de dados SKU-110k como um recurso valioso para a comunidade de pesquisa em visĆ£o computacional. Para mais informaƧƵes sobre o conjunto de dados SKU-110k e os seus criadores, visita o repositĆ³rio GitHub do conjunto de dados SKU-110k.



Criado em 2023-11-12, Atualizado em 2023-11-22
Autores: glenn-jocher (3), Laughing-q (1)

ComentƔrios