Segurança pronta para empresas: Compatível com ISO 27001 + SOC 2 Tipo I.

Link to this sectionConjunto de dados SKU-110K#

O conjunto de dados SKU-110K é um conjunto de dados de detecção de objetos de classe única com 11.743 imagens de prateleiras de varejo densamente preenchidas, divididas em 8.219 imagens de treinamento, 588 de validação e 2.936 de teste. Cada produto é anotado com uma caixa delimitadora sob uma única classe, object — o nome refere-se às mais de 110.000 unidades de manutenção de estoque (SKUs) exclusivas retratadas nas cenas, e não a 110.000 classes de detecção. Criado por Eran Goldman et al. para o artigo da CVPR 2019 Precise Detection in Densely Packed Scenes, ele contém mais de 1,7 milhão de produtos anotados — uma média de cerca de 147 por imagem — tornando-o um benchmark exigente para modelos de visão computacional em ambientes de varejo movimentados.



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Detecção de prateleira de varejo densamente preenchida do dataset SKU-110K

Link to this sectionPrincipais recursos#

  • Detecção de classe única: Cada produto é rotulado com uma caixa delimitadora sob uma única classe, object (names: {0: object}) — as anotações não contêm rótulos de categoria por SKU.
  • Densidade extrema de objetos: As imagens de prateleiras de lojas de todo o mundo têm, em média, cerca de 147 produtos densamente compactados cada uma, com objetos que muitas vezes parecem semelhantes ou até idênticos posicionados muito próximos uns dos outros.
  • Grande escala: Mais de 110.000 SKUs únicas e mais de 1,7 milhão de caixas delimitadoras anotadas em 11.743 imagens desafiam os detectores de objetos de última geração.

Link to this sectionEstrutura do Dataset#

O conjunto de dados SKU-110K é dividido em três subconjuntos, todos compartilhando a classe única object:

DivisãoImagensDescrição
Treinar8.219Imagens e anotações para treinamento de modelos
Validação588Imagens reservadas para avaliação durante o treinamento
Teste2.936Imagens para avaliação final do modelo treinado

Link to this sectionAplicações#

O conjunto de dados SKU-110K é amplamente utilizado para treinar e avaliar modelos de aprendizado profundo em tarefas de detecção de objetos, especialmente em cenas densamente compactadas, como expositores de prateleiras de varejo. Suas aplicações incluem:

  • Gestão e automação de estoque de varejo
  • Reconhecimento de produtos em plataformas de e-commerce
  • Verificação de conformidade de planogramas
  • Sistemas de autoatendimento em lojas
  • Coleta e separação robótica em armazéns

Para anotar suas próprias imagens de prateleiras, treinar e gerenciar conjuntos de dados de detecção de varejo em seu navegador, execute o fluxo de trabalho completo com a Ultralytics Platform.

Link to this sectionYAML do Dataset#

O arquivo SKU-110K.yaml define a configuração do conjunto de dados — os caminhos do conjunto de dados, nomes de classes e outros metadados. Ele é mantido no repositório Ultralytics em https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/SKU-110K.yaml.

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 label

Link to this sectionUso#

Download de 13,6 GB

O SKU-110K faz o download automaticamente na primeira vez que você treina e requer cerca de 13,6 GB de espaço livre em disco para suas 11.743 imagens. O script de download também busca as anotações originais e as converte para o formato YOLO, o que pode levar alguns minutos.

Para treinar um modelo YOLO26n no dataset SKU-110K por 100 épocas com um tamanho de imagem de 640, você pode usar os seguintes trechos de código. Para uma lista abrangente de argumentos disponíveis, consulte a página de Treinamento do modelo.

Exemplo de Treinamento
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 sectionDados de Amostra e Anotações#

As imagens SKU-110K capturam produtos densamente compactados em prateleiras reais de lojas, onde dezenas de itens quase idênticos estão lado a lado. Aqui está um exemplo de imagem com suas anotações:

Detecção de produtos de varejo SKU-110K em prateleiras de lojas

  • Imagem de prateleira de varejo densamente compactada: Esta imagem demonstra um exemplo de objetos densamente compactados em um ambiente de prateleira de varejo. Os objetos são anotados com caixas delimitadoras sob a classe única object.

O arranjo denso de produtos torna o SKU-110K particularmente valioso para o desenvolvimento de soluções robustas de visão computacional voltadas para o varejo, pois a alta contagem de objetos por imagem empurra os detectores muito além dos benchmarks típicos.

Link to this sectionCitações e Agradecimentos#

Se você utilizar o conjunto de dados SKU-110K em seu trabalho de pesquisa ou desenvolvimento, por favor, cite o seguinte artigo:

Citação
@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 obter mais informações sobre o conjunto de dados SKU-110K e seus criadores, visite o repositório GitHub do conjunto de dados SKU-110K.

Link to this sectionFAQ#

Link to this sectionPara que serve o conjunto de dados SKU-110K?#

O conjunto de dados SKU-110K é um conjunto de dados de detecção de objetos de classe única com 11.743 imagens de prateleiras de varejo densamente compactadas, criado por Eran Goldman et al. para o artigo da CVPR 2019. Cada produto é rotulado com uma caixa delimitadora object, e as imagens abrangem mais de 110.000 unidades de manutenção de estoque (SKUs) exclusivas, tornando-o um benchmark forte para detectar objetos em cenas lotadas e para criar sistemas de visão computacional de varejo.

Link to this sectionO conjunto de dados SKU-110K possui 110.000 classes?#

Não. O SKU-110K é de classe única: cada produto é anotado com uma caixa delimitadora sob a classe object (names: {0: object}). O "110K" no nome refere-se ao número de unidades de manutenção de estoque (SKUs) exclusivas retratadas nas imagens, não ao número de classes de detecção.

Link to this sectionQuantas imagens e classes existem no conjunto de dados SKU-110K?#

O conjunto de dados SKU-110K contém 11.743 imagens — 8.219 para treinamento, 588 para validação e 2.936 para teste — e uma única classe de detecção, object. Consulte a seção Estrutura do conjunto de dados e a configuração SKU-110K.yaml para obter detalhes.

Link to this sectionQual é o tamanho do download do conjunto de dados SKU-110K?#

O SKU-110K tem cerca de 13,6 GB e faz o download automaticamente na primeira vez que você treina com data="SKU-110K.yaml" — nenhum download manual é necessário. Para ver opções menores, consulte a visão geral dos conjuntos de dados de detecção.

Link to this sectionComo treino um modelo YOLO26 usando o conjunto de dados SKU-110K?#

Treinar um modelo YOLO26 no conjunto de dados SKU-110K é simples. Aqui está um exemplo para treinar um modelo YOLO26n por 100 épocas com um tamanho de imagem de 640:

Exemplo de Treinamento
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 uma lista completa de argumentos disponíveis, consulte a página de Treinamento do modelo e as dicas de treinamento de modelos.

Comentários