Skip to content

Ensemble de données SKU-110k

L'ensemble de données SKU-110k est une collection d'images d'étagères de vente au détail densément emballées, conçue pour soutenir la recherche dans les tâches de détection d'objets. Développé par Eran Goldman et al, cet ensemble de données contient plus de 110 000 catégories uniques d'unités de gestion de magasin (UGS) avec des objets densément emballés, souvent similaires ou même identiques, placés à proximité les uns des autres.



Regarde : Comment entraîner YOLOv10 sur l'ensemble de données SKU-110k à l'aide de Ultralytics | Ensemble de données sur la vente au détail

Image de l'échantillon du jeu de données

Caractéristiques principales

  • SKU-110k contient des images d'étagères de magasins du monde entier, avec des objets densément emballés qui posent des défis aux détecteurs d'objets de pointe.
  • L'ensemble de données comprend plus de 110 000 catégories d'UGS uniques, offrant ainsi une gamme diversifiée d'apparences d'objets.
  • Les annotations comprennent des boîtes de délimitation pour les objets et des étiquettes de catégorie d'UGS.

Structure de l'ensemble de données

L'ensemble de données SKU-110k est organisé en trois sous-ensembles principaux :

  1. Ensemble d'entraînement: Ce sous-ensemble contient des images et des annotations utilisées pour l'entraînement des modèles de détection d'objets.
  2. Ensemble de validation: Ce sous-ensemble se compose d'images et d'annotations utilisées pour la validation du modèle pendant la formation.
  3. Jeu de test: Ce sous-ensemble est conçu pour l'évaluation finale des modèles de détection d'objets entraînés.

Applications

L'ensemble de données SKU-110k est largement utilisé pour former et évaluer les modèles d'apprentissage profond dans les tâches de détection d'objets, en particulier dans les scènes densément emballées telles que les étalages des magasins de détail. L'ensemble diversifié de catégories d'UGS et d'arrangements d'objets densément emballés de l'ensemble de données en fait une ressource précieuse pour les chercheurs et les praticiens dans le domaine de la vision par ordinateur.

Jeu de données YAML

Un fichier YAML (Yet Another Markup Language) est utilisé pour définir la configuration du jeu de données. Il contient des informations sur les chemins d'accès au jeu de données, les classes et d'autres informations pertinentes. Dans le cas du jeu de données SKU-110K, le fichier YAML est un fichier de configuration. SKU-110K.yaml est maintenu à 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

Utilisation

Pour entraîner un modèle YOLOv8n sur l'ensemble de données SKU-110K pendant 100 époques avec une taille d'image de 640, tu peux utiliser les extraits de code suivants. Pour obtenir une liste complète des arguments disponibles, reporte-toi à la page Formation du modèle.

Exemple de train

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

Exemples de données et d'annotations

L'ensemble de données SKU-110k contient un ensemble varié d'images d'étagères de vente au détail avec des objets densément emballés, fournissant un contexte riche pour les tâches de détection d'objets. Voici quelques exemples de données issues de l'ensemble de données, ainsi que les annotations correspondantes :

Image de l'échantillon du jeu de données

  • Image d'une étagère de vente au détail densément emballée : Cette image montre un exemple d'objets densément emballés dans un rayon de vente au détail. Les objets sont annotés avec des boîtes de délimitation et des étiquettes de catégorie SKU.

Cet exemple montre la variété et la complexité des données de l'ensemble de données SKU-110k et souligne l'importance des données de haute qualité pour les tâches de détection d'objets.

Citations et remerciements

Si tu utilises le jeu de données SKU-110k dans tes travaux de recherche ou de développement, cite l'article suivant :

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

Nous tenons à remercier Eran Goldman et al. pour la création et la maintenance du jeu de données SKU-110k, qui constitue une ressource précieuse pour la communauté des chercheurs en vision par ordinateur. Pour plus d'informations sur le jeu de données SKU-110k et ses créateurs, visite le dépôt GitHub du jeu de données SKU-110k.

FAQ

Qu'est-ce que l'ensemble de données SKU-110k et pourquoi est-il important pour la détection d'objets ?

L'ensemble de données SKU-110k se compose d'images d'étagères de vente au détail densément emballées, conçues pour aider la recherche dans les tâches de détection d'objets. Développé par Eran Goldman et al, il comprend plus de 110 000 catégories uniques d'UGS. Son importance réside dans sa capacité à mettre au défi les détecteurs d'objets de pointe avec diverses apparences d'objets et leur proximité, ce qui en fait une ressource inestimable pour les chercheurs et les praticiens de la vision par ordinateur. Pour en savoir plus sur la structure et les applications de l'ensemble de données, consulte notre section sur l'ensemble de données SKU-110k.

Comment entraîner un modèle YOLOv8 en utilisant l'ensemble de données SKU-110k ?

La formation d'un modèle YOLOv8 sur l'ensemble de données SKU-110k est simple. Voici un exemple d'entraînement d'un modèle YOLOv8n pour 100 époques avec une taille d'image de 640 :

Exemple de train

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

Pour obtenir une liste complète des arguments disponibles, reporte-toi à la page Formation au modèle.

Quels sont les principaux sous-ensembles de l'ensemble de données SKU-110k ?

L'ensemble de données SKU-110k est organisé en trois sous-ensembles principaux :

  1. Jeu d'entraînement: Contient des images et des annotations utilisées pour l'entraînement des modèles de détection d'objets.
  2. Jeu de validation: Se compose d'images et d'annotations utilisées pour la validation du modèle pendant la formation.
  3. Jeu de test: Conçu pour l'évaluation finale des modèles de détection d'objets formés.

Reporte-toi à la section Structure du jeu de données pour plus de détails.

Comment configurer l'ensemble de données SKU-110k pour la formation ?

La configuration du jeu de données SKU-110k est définie dans un fichier YAML, qui comprend des détails sur les chemins d'accès au jeu de données, les classes et d'autres informations pertinentes. Le fichier SKU-110K.yaml est maintenu à SKU-110K.yaml. Par exemple, tu peux former un modèle à l'aide de cette configuration, comme le montre notre Utilisation section.

Quelles sont les principales caractéristiques de l'ensemble de données SKU-110k dans le contexte de l'apprentissage profond ?

L'ensemble de données SKU-110k comprend des images d'étagères de magasins du monde entier, présentant des objets densément emballés qui posent des défis importants aux détecteurs d'objets :

  • Plus de 110 000 catégories uniques d'UGS
  • Diverses apparences d'objets
  • Les annotations comprennent des boîtes de délimitation et des étiquettes de catégorie d'UGS.

Ces caractéristiques rendent l'ensemble de données SKU-110k particulièrement précieux pour la formation et l'évaluation des modèles d'apprentissage profond dans les tâches de détection d'objets. Pour plus de détails, voir la section Caractéristiques principales.

Comment citer l'ensemble de données SKU-110k dans ma recherche ?

Si tu utilises le jeu de données SKU-110k dans tes travaux de recherche ou de développement, cite l'article suivant :

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

Tu trouveras plus d'informations sur l'ensemble des données dans la section Citations et remerciements.



Créé le 2023-11-12, Mis à jour le 2024-07-26
Auteurs : RizwanMunawar (1), glenn-jocher (6), Laughing-q (1)

Commentaires