Conjunto de Dados SKU-110k
O dataset SKU-110k é uma coleção de imagens de prateleiras de varejo densamente compactadas, projetada para apoiar a pesquisa em tarefas de detecção de objetos. Desenvolvido por Eran Goldman et al., o dataset contém mais de 110.000 categorias únicas de unidades de manutenção de estoque (SKU) com objetos densamente compactados, muitas vezes parecendo semelhantes ou até idênticos, posicionados em proximidade.
Assista: Como Treinar o YOLOv10 no Dataset SKU-110k usando Ultralytics | Dataset de Varejo
Principais Características
- O SKU-110k contém imagens de prateleiras de lojas de todo o mundo, apresentando objetos densamente compactados que representam desafios para os detectores de objetos de última geração.
- O conjunto de dados inclui mais de 110.000 categorias de SKU exclusivas, fornecendo uma gama diversificada de aparências de objetos.
- As anotações incluem caixas delimitadoras para objetos e rótulos de categoria de SKU.
Estrutura do Conjunto de Dados
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 do 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 dataset 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 displays de prateleiras de varejo. Suas aplicações incluem:
- Gestão e automação de inventário no varejo
- Reconhecimento de produtos em plataformas de e-commerce
- Verificação de conformidade de planograma
- Sistemas de autoatendimento em lojas
- Picking e separação robóticos em armazéns
O conjunto diversificado de categorias de SKU e os arranjos de objetos densamente compactados do dataset o tornam um recurso valioso para pesquisadores e profissionais no campo da visão computacional.
YAML do Conjunto de Dados
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, classes e outras informações relevantes do conjunto de dados. Para o caso do conjunto de dados SKU-110K, o SKU-110K.yaml
arquivo é mantido 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 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", 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
Utilização
Para treinar um modelo YOLO11n no conjunto de dados SKU-110K por 100 epochs com um tamanho de imagem de 640, você pode usar os seguintes trechos de código. Para uma lista completa de argumentos disponíveis, consulte a página de Treinamento do modelo.
Exemplo de Treinamento
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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=yolo11n.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 varejo com objetos densamente compactados, 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 anotações correspondentes:
- 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 e rótulos de categoria de SKU.
O exemplo mostra 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. A disposição densa dos 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 focadas no varejo.
Citações e Agradecimentos
Se você usar o conjunto de dados SKU-110k em seu trabalho de pesquisa ou desenvolvimento, 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 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.
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 compactadas, projetadas para auxiliar a pesquisa em tarefas de detecção de objetos. Desenvolvido por Eran Goldman et al., inclui mais de 110.000 categorias de SKU exclusivas. Sua importância reside em sua capacidade de desafiar os detectores de objetos de última geração com diversas aparências e proximidade 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 faço para treinar um modelo YOLO11 usando o dataset SKU-110k?
Treinar um modelo YOLO11 no conjunto de dados SKU-110k é simples. Aqui está um exemplo para treinar um modelo YOLO11n por 100 épocas com um tamanho de imagem de 640:
Exemplo de Treinamento
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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=yolo11n.pt epochs=100 imgsz=640
Para uma lista completa dos argumentos disponíveis, consulte 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 do 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 obter 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, classes e outras informações relevantes do conjunto de dados. O SKU-110K.yaml
arquivo é mantido em SKU-110K.yaml. Por exemplo, pode treinar um modelo usando esta configuração, como mostrado no nosso Utilização secção.
Quais são as principais características do conjunto de dados SKU-110k no contexto de aprendizado profundo?
O conjunto de dados SKU-110k apresenta imagens de prateleiras de lojas de todo o mundo, mostrando objetos densamente compactados que representam desafios significativos para os detectores de objetos:
- Mais de 110.000 categorias de SKU exclusivas
- Aparências diversas de objetos
- As anotações incluem caixas delimitadoras e rótulos de categoria de SKU
Esses recursos tornam o conjunto de dados SKU-110k particularmente valioso para treinar e avaliar modelos de aprendizado profundo em tarefas de detecção de objetos. Para mais detalhes, consulte a seção Principais Recursos.
Como cito o conjunto de dados SKU-110k na minha pesquisa?
Se você usar o conjunto de dados SKU-110k em seu trabalho de pesquisa ou desenvolvimento, 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.