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.



Observa: Como treinar o YOLOv10 no conjunto de dados SKU-110k utilizando Ultralytics | Conjunto de dados de retalho

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 embalados 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.

FAQ

O que é o conjunto de dados SKU-110k e porque é que é importante para a deteção de objectos?

O conjunto de dados SKU-110k consiste em imagens de prateleiras de retalho densamente compactadas, concebidas para ajudar a investigação em tarefas de deteção de objectos. Desenvolvido por Eran Goldman et al., inclui mais de 110.000 categorias SKU únicas. A sua importância reside na sua capacidade de desafiar os detectores de objectos mais avançados com diversas aparências de objectos e proximidade, tornando-o um recurso inestimável para investigadores e profissionais da visão computacional. Sabe mais sobre a estrutura e as aplicações do conjunto de dados na nossa secção Conjunto de dados SKU-110k.

Como é que treino um modelo YOLOv8 utilizando o conjunto de dados SKU-110k?

Treinar um modelo YOLOv8 no conjunto de dados SKU-110k é simples. Eis um exemplo para treinar um modelo YOLOv8n para 100 épocas com um tamanho de imagem de 640:

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

Para obter uma lista completa dos argumentos disponíveis, consulta a página de formação do modelo.

Quais são os principais subconjuntos do conjunto de dados SKU-110k?

O conjunto de dados SKU-110k está organizado em três subconjuntos principais:

  1. Conjunto de treino: Contém imagens e anotações utilizadas para treinar modelos de deteção de objectos.
  2. Conjunto de validação: Consiste em imagens e anotações utilizadas para validação do modelo durante o treino.
  3. Conjunto de teste: Concebido para a avaliação final dos modelos de deteção de objectos treinados.

Para mais informações, consulta a secção Estrutura do conjunto de dados.

Como é que configuro o conjunto de dados SKU-110k para treino?

A configuração do conjunto de dados SKU-110k é definida em um arquivo YAML, que inclui detalhes sobre os caminhos, classes e outras informações relevantes do conjunto de dados. O ficheiro SKU-110K.yaml é mantido em SKU-110K.yaml. Por exemplo, podes treinar um modelo usando esta configuração, como mostrado na nossa Utilização secção.

Quais são as principais características do conjunto de dados SKU-110k no contexto da aprendizagem profunda?

O conjunto de dados SKU-110k apresenta imagens de prateleiras de lojas de todo o mundo, mostrando objectos densamente compactados que representam desafios significativos para os detectores de objectos:

  • Mais de 110.000 categorias SKU exclusivas
  • Aparência diversificada dos objectos
  • As anotações incluem caixas delimitadoras e etiquetas de categoria SKU

Estas características tornam o conjunto de dados SKU-110k particularmente valioso para treinar e avaliar modelos de aprendizagem profunda em tarefas de deteção de objectos. Para obter mais detalhes, consulta a secção Características principais.

Como é que cito o conjunto de dados SKU-110k na minha investigação?

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

Para mais informações sobre o conjunto de dados, consulta a secção Citações e Agradecimentos.



Criado em 2023-11-12, Atualizado em 2024-07-26
Autores: RizwanMunawar (1), glenn-jocher (6), Laughing-q (1)

Comentários