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 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 aos mais de 110.000 códigos de itens de estoque (SKUs) exclusivos retratados 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 traz mais de 1,7 milhão de produtos anotados — uma média de aproximadamente 147 por imagem —, tornando-se um benchmark exigente para modelos de visão computacional em ambientes de varejo lotados.
Watch: How to Train Ultralytics YOLO26 to Detect Every Product on a Retail Shelf | SKU-110K 🛒

Principais 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.
Estrutura do Dataset#
O conjunto de dados SKU-110K é dividido em três subconjuntos, todos compartilhando a única classe object:
| Divisão | Imagens | Descrição |
|---|---|---|
| Treinar | 8,219 | Imagens e anotações para treinamento de modelos |
| Validação | 588 | Imagens reservadas para avaliação durante o treinamento |
| Teste | 2,936 | Imagens para avaliação final do modelo treinado |
Aplicaçõ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 preenchidas, como exibições em 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 no seu navegador, execute o fluxo de trabalho completo com Ultralytics Platform.
YAML do Dataset#
O arquivo SKU-110K.yaml define a configuração do conjunto de dados — os caminhos do conjunto de dados, os nomes das classes e outros metadados. Ele é mantido no repositório do Ultralytics 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 labelUso#
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 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 obter 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)Dados 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:

- Imagem de prateleira de varejo densamente preenchida: Esta imagem demonstra um exemplo de objetos densamente preenchidos em um ambiente de prateleira de varejo. Os objetos são anotados com caixas delimitadoras sob a única classe
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.
Citaçõ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:
@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 criarem e manterem 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 do conjunto de dados SKU-110K no GitHub.
FAQ#
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, criado por Eran Goldman et al. para seu artigo da CVPR 2019. Cada produto é rotulado com uma caixa delimitadora
object, e as imagens abrangem mais de 110.000 códigos de itens de estoque (SKUs) exclusivos, tornando-o um benchmark forte para detectar objetos em cenas lotadas e para construir sistemas de visão computacional para o varejo.Não. O SKU-110K é de classe única: cada produto é anotado com uma caixa delimitadora sob a classe
object(names: {0: object}). O termo "110K" no nome refere-se ao número de códigos de itens de estoque (SKUs) exclusivos retratados nas imagens, e não ao número de classes de detecção.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çãoSKU-110K.yamlpara obter detalhes.O SKU-110K tem cerca de 13,6 GB e é baixado automaticamente na primeira vez que você treina com
data="SKU-110K.yaml"— nenhum download manual é necessário. Para navegar por opções menores, consulte a visão geral dos conjuntos de dados de detecção.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 Treinamentofrom 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 obter uma lista abrangente de argumentos disponíveis, consulte a página de Treinamento do modelo e as dicas de treinamento de modelos.



