Passer au contenu

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 remplies, conçue pour soutenir la recherche dans les tâches de détection d'objets. Développé par Eran Goldman et al., l'ensemble de données contient plus de 110 000 catégories uniques d'unités de gestion des stocks (UGS) avec des objets densément emballés, souvent d'apparence similaire, voire identique, positionnés à proximité.



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

Exemple d'image de l'ensemble de données

Principales caractéristiques

  • SKU-110k contient des images de rayons de magasins du monde entier, présentant 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 de SKU uniques, offrant une gamme diversifiée d’apparences d’objets.
  • Les annotations comprennent des cadres de délimitation pour les objets et les étiquettes de catégorie SKU.

Structure du jeu 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 8 219 images et annotations utilisées pour l'entraînement des modèles de détection d'objets.
  2. Ensemble de validation : Ce sous-ensemble se compose de 588 images et annotations utilisées pour la validation du modèle pendant la formation.
  3. Ensemble de test : Ce sous-ensemble comprend 2 936 images conçues 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 l'entraînement et l'évaluation des modèles de deep learning dans les tâches de détection d'objets, en particulier dans les scènes densément emballées telles que les présentoirs de rayons de vente au détail. Ses applications incluent:

  • Gestion et automatisation des stocks dans le commerce de détail
  • Reconnaissance de produits sur les plateformes de commerce électronique
  • Vérification de la conformité du planogramme
  • Systèmes de caisse automatique dans les magasins
  • Prélèvement et tri robotisés dans les entrepôts

L'ensemble diversifié de catégories de SKU et les arrangements d'objets densément emballés de l'ensemble de données en font une ressource précieuse pour les chercheurs et les praticiens dans le domaine de la vision par ordinateur.

YAML du jeu de données

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

Utilisation

Pour entraîner un modèle YOLO11n sur l'ensemble de données SKU-110K pendant 100 epochs avec une taille d'image de 640, vous pouvez utiliser les extraits de code suivants. Pour une liste complète des arguments disponibles, consultez la page Formation du modèle.

Exemple d'entraînement

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

Exemple de données et d'annotations

L'ensemble de données SKU-110k contient un ensemble diversifié 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 de l'ensemble de données, ainsi que leurs annotations correspondantes :

Exemple d'image de l'ensemble de données

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

L'exemple présente la variété et la complexité des données dans l'ensemble de données SKU-110k et souligne l'importance de données de haute qualité pour les tâches de détection d'objets. La disposition dense des produits présente des défis uniques pour les algorithmes de détection, ce qui rend cet ensemble de données particulièrement précieux pour le développement de solutions robustes de vision par ordinateur axées sur la vente au détail.

Citations et remerciements

Si vous utilisez l’ensemble de données SKU-110k dans vos travaux de recherche ou de développement, veuillez citer 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 de l’ensemble de données SKU-110k en tant que ressource précieuse pour la communauté de recherche en vision par ordinateur. Pour plus d’informations sur l’ensemble de données SKU-110k et ses créateurs, consultez le référentiel GitHub de l’ensemble de données SKU-110k.

FAQ

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

L'ensemble de données SKU-110k est constitué d'images d'étagères de vente au détail densément remplies, conçues pour faciliter 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 de SKU uniques. Son importance réside dans sa capacité à mettre au défi les détecteurs d'objets de pointe avec des apparences et une proximité d'objets diverses, ce qui en fait une ressource inestimable pour les chercheurs et les praticiens en vision par ordinateur. Apprenez-en davantage sur la structure et les applications de l'ensemble de données dans notre section Ensemble de données SKU-110k.

Comment entraîner un modèle YOLO11 en utilisant le jeu de données SKU-110k ?

L’entraînement d’un modèle YOLO11 sur l’ensemble de données SKU-110k est simple. Voici un exemple d’entraînement d’un modèle YOLO11n pendant 100 epochs avec une taille d’image de 640 :

Exemple d'entraînement

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

Pour une liste complète des arguments disponibles, consultez la page Entraînement du modèle.

Quels sont les principaux sous-ensembles du jeu de données SKU-110k ?

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

  1. Ensemble d'entraînement : Contient 8 219 images et annotations utilisées pour l'entraînement des modèles de détection d'objets.
  2. Ensemble de validation : Se compose de 588 images et annotations utilisées pour la validation du modèle pendant la formation.
  3. Ensemble de test : Comprend 2 936 images conçues pour l’évaluation finale des modèles de détection d’objets entraînés.

Consultez la section Structure de l'ensemble de données pour plus de détails.

Comment configurer le jeu de données SKU-110k pour l'entraînement ?

La configuration de l'ensemble de données SKU-110k est définie dans un fichier YAML, qui comprend des détails sur les chemins d'accès, les classes et d'autres informations pertinentes de l'ensemble de données. Le SKU-110K.yaml fichier est maintenu à l'adresse SKU-110K.yaml. Par exemple, vous pouvez entraîner un modèle en utilisant cette configuration comme indiqué dans 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 présente des images de rayons 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 de références uniques
  • Apparences d'objets variées
  • Les annotations comprennent des boîtes englobantes et des étiquettes de catégorie SKU

Ces caractéristiques rendent l'ensemble de données SKU-110k particulièrement précieux pour l'entraînement et l'évaluation de modèles d'apprentissage profond dans les tâches de détection d'objets. Pour plus de détails, consultez la section Fonctionnalités clés.

Comment citer le jeu de données SKU-110k dans mes recherches ?

Si vous utilisez l’ensemble de données SKU-110k dans vos travaux de recherche ou de développement, veuillez citer 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}
}

Plus d'informations sur l'ensemble de données sont disponibles dans la section Citations et remerciements.



📅 Créé il y a 1 an ✏️ Mis à jour il y a 5 mois

Commentaires