Conjunto de dados SKU-110k
O conjunto de dados SKU-110k é uma coleção de imagens de prateleiras de varejo densamente preenchidas, projetada para apoiar pesquisas em tarefas de detecção de objetos. Desenvolvido por Eran Goldman et al., o conjunto de dados contém mais de 110.000 categorias únicas de unidade de manutenção de estoque (SKU) com objetos densamente agrupados, que frequentemente parecem semelhantes ou até idênticos, posicionados em proximidade.
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Principais recursos
- O SKU-110k contém imagens de prateleiras de lojas de todo o mundo, apresentando objetos densamente agrupados que representam desafios para os detectores de objetos de última geração.
- O conjunto de dados inclui mais de 110.000 categorias SKU únicas, proporcionando uma gama diversificada de aparências de objetos.
- As anotações incluem caixas delimitadoras (bounding boxes) para objetos e rótulos de categoria SKU.
Estrutura do Dataset
O conjunto de dados SKU-110k é organizado em três subconjuntos principais:
- Conjunto de treinamento: Este subconjunto contém 8.219 imagens e anotações usadas para treinar modelos de detecção de objetos.
- Conjunto de validação: Este subconjunto consiste em 588 imagens e anotações usadas para validação de modelo durante o treinamento.
- Conjunto de teste: Este subconjunto inclui 2.936 imagens projetadas para a avaliação final de modelos de detecção de objetos treinados.
Aplicações
O conjunto de dados SKU-110k é amplamente utilizado para treinar e avaliar modelos de deep learning em tarefas de detecção de objetos, especialmente em cenas densamente agrupadas, como expositores de prateleiras de varejo. Suas aplicações incluem:
- Gestão e automação de inventário de varejo
- Reconhecimento de produtos em plataformas de e-commerce
- Verificação de conformidade de planograma
- Sistemas de autoatendimento (self-checkout) em lojas
- Coleta e classificação robótica em armazéns
O conjunto diversificado de categorias SKU e os arranjos densamente agrupados de objetos do conjunto de dados o tornam um recurso valioso para pesquisadores e profissionais na área de visão computacional.
YAML do Dataset
Um arquivo YAML (Yet Another Markup Language) é usado para definir a configuração do conjunto de dados. Ele contém informações sobre os caminhos do conjunto de dados, classes e outras informações relevantes. No caso do conjunto de dados SKU-110K, o arquivo SKU-110K.yaml é mantido em 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 labelUtilização
Para treinar um modelo YOLO26n no conjunto de dados 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.
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)Amostra de dados e anotações
O conjunto de dados SKU-110k contém um conjunto diversificado de imagens de prateleiras de varejo com objetos densamente agrupados, fornecendo um contexto rico para tarefas de detecção de objetos. Aqui estão alguns exemplos de dados do conjunto de dados, juntamente com suas respectivas anotações:

- Imagem de prateleira de varejo densamente preenchida: Esta imagem demonstra um exemplo de objetos densamente agrupados em um ambiente de prateleira de varejo. Os objetos são anotados com caixas delimitadoras e rótulos de categoria SKU.
O exemplo demonstra a variedade e a complexidade dos dados no conjunto de dados SKU-110k e destaca a importância de dados de alta qualidade para tarefas de detecção de objetos. O arranjo denso de produtos apresenta desafios únicos para algoritmos de detecção, tornando este conjunto de dados particularmente valioso para o desenvolvimento de soluções robustas de visão computacional voltadas para o varejo.
Citações e Agradecimentos
Se você usar o conjunto de dados SKU-110k em sua pesquisa ou trabalho de desenvolvimento, por favor cite o seguinte artigo:
@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 seus criadores, visite o repositório GitHub do conjunto de dados SKU-110k.
FAQ
O que é o conjunto de dados SKU-110k e por que ele é importante para a detecção de objetos?
O conjunto de dados SKU-110k consiste em imagens de prateleiras de varejo densamente preenchidas, projetadas para auxiliar a pesquisa em tarefas de detecção de objetos. Desenvolvido por Eran Goldman et al., ele inclui mais de 110.000 categorias SKU únicas. Sua importância reside na sua capacidade de desafiar detectores de objetos de última geração com aparências e proximidade diversas de objetos, tornando-o um recurso inestimável para pesquisadores e profissionais em visão computacional. Saiba mais sobre a estrutura e as aplicações do conjunto de dados em nossa seção Conjunto de dados SKU-110k.
Como 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:
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 abrangente de argumentos disponíveis, consulta a página de Treinamento do modelo.
Quais são os principais subconjuntos do conjunto de dados SKU-110k?
O conjunto de dados SKU-110k é organizado em três subconjuntos principais:
- Conjunto de treinamento: Contém 8.219 imagens e anotações usadas para treinar modelos de detecção de objetos.
- Conjunto de validação: Consiste em 588 imagens e anotações usadas para validação de modelo durante o treinamento.
- Conjunto de teste: Inclui 2.936 imagens projetadas para a avaliação final de modelos de detecção de objetos treinados.
Consulte a seção Estrutura do conjunto de dados para mais detalhes.
Como configuro o conjunto de dados SKU-110k para treinamento?
A configuração do conjunto de dados SKU-110k é definida em um arquivo YAML, que inclui detalhes sobre os caminhos do conjunto de dados, classes e outras informações relevantes. O arquivo SKU-110K.yaml é mantido em SKU-110K.yaml. Por exemplo, você pode treinar um modelo usando essa configuração como mostrado em nossa seção Uso.
Quais são as principais características do conjunto de dados SKU-110k no contexto de deep learning?
O conjunto de dados SKU-110k apresenta imagens de prateleiras de lojas de todo o mundo, exibindo objetos densamente agrupados que representam desafios significativos para detectores de objetos:
- Mais de 110.000 categorias SKU únicas
- Aparências de objetos diversificadas
- As anotações incluem caixas delimitadoras e rótulos de categoria SKU
Essas características tornam o conjunto de dados SKU-110k particularmente valioso para treinar e avaliar modelos de deep learning em tarefas de detecção de objetos. Para mais detalhes, consulte a seção Principais características.
Como cito o conjunto de dados SKU-110k na minha pesquisa?
Se você usar o conjunto de dados SKU-110k em sua pesquisa ou trabalho de desenvolvimento, por favor cite o seguinte artigo:
@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}
}Mais informações sobre o conjunto de dados podem ser encontradas na seção Citações e agradecimentos.