SKU-110k 数据集

SKU-110k 数据集是一个零售货架密集堆叠图像的集合,旨在支持目标检测任务的研究。该数据集由 Eran Goldman 等人开发,包含超过 110,000 个独特的库存单位 (SKU) 类别,其中的对象密集排列、位置邻近,且外观往往相似甚至完全相同。



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

SKU-110K 数据集密集堆叠的零售货架检测

主要特性

  • SKU-110k 包含来自世界各地的零售货架图像,其中密集堆叠的对象为最先进的目标检测器带来了挑战。
  • 该数据集包含超过 110,000 个独特的 SKU 类别,提供了多样化的对象外观。
  • 标注信息包括对象的边界框 (BBox) 和 SKU 类别标签。

数据集结构

SKU-110k 数据集分为三个主要子集:

  1. 训练集:该子集包含 8,219 张图像及对应的标注,用于训练目标检测模型。
  2. 验证集:该子集包含 588 张图像及对应的标注,用于训练过程中的模型验证。
  3. 测试集:该子集包含 2,936 张图像,旨在对训练好的目标检测模型进行最终评估。

应用场景

SKU-110k 数据集被广泛用于在目标检测任务中训练和评估深度学习模型,特别是在零售货架展示等密集堆叠的场景中。其应用包括:

  • 零售库存管理与自动化
  • 电子商务平台中的产品识别
  • 货架图 (Planogram) 合规性验证
  • 商店自助结账系统
  • 仓库中的机器人拣选与分拣

该数据集多样的 SKU 类别和密集的物体排列,使其成为计算机视觉领域研究人员和从业者的宝贵资源。

数据集 YAML

YAML (Yet Another Markup Language) 文件用于定义数据集配置。它包含关于数据集路径、类别和其他相关信息。对于 SKU-110K 数据集,SKU-110K.yaml 文件托管在 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, 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 label

使用方法

若要使用图像尺寸 640 在 SKU-110K 数据集上训练 YOLO26n 模型 100 个周期,你可以使用以下代码片段。有关可用参数的完整列表,请参阅模型训练页面。

训练示例
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)

示例数据和标注

SKU-110k 数据集包含一系列多样的零售货架图像,其中物体密集堆叠,为目标检测任务提供了丰富的上下文。以下是数据集中的一些数据示例及其对应的标注:

SKU-110K 商店货架零售产品检测

  • 密集堆叠的零售货架图像:此图像展示了零售货架环境中密集堆叠物体的示例。物体用边界框和 SKU 类别标签进行了标注。

该示例展示了 SKU-110k 数据集中数据的多样性和复杂性,并强调了高质量数据对于目标检测任务的重要性。产品的密集排列为检测算法带来了独特的挑战,使该数据集对于开发稳健的零售计算机视觉解决方案尤为有价值。

引文与致谢

如果你在研究或开发工作中使用了 SKU-110k 数据集,请引用以下论文:

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

我们感谢 Eran Goldman 等人创建并维护了 SKU-110k 数据集,使其成为计算机视觉研究社区的宝贵资源。有关 SKU-110k 数据集及其创建者的更多信息,请访问 SKU-110k 数据集 GitHub 仓库

常见问题 (FAQ)

什么是 SKU-110k 数据集,它为什么对目标检测很重要?

SKU-110k 数据集由密集堆叠的零售货架图像组成,旨在辅助目标检测任务的研究。它由 Eran Goldman 等人开发,包含超过 110,000 个独特的 SKU 类别。它的重要性在于它能够用多样化的物体外观和邻近度来挑战最先进的目标检测器,这使其成为计算机视觉研究人员和从业者的宝贵资源。了解更多关于数据集结构和应用的信息,请访问我们的 SKU-110k 数据集 部分。

如何使用 SKU-110k 数据集训练 YOLO26 模型?

在 SKU-110k 数据集上训练 YOLO26 模型非常直接。这是一个使用图像尺寸 640 训练 YOLO26n 模型 100 个周期的示例:

训练示例
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)

有关可用参数的完整列表,请参考模型 Training 页面。

SKU-110k 数据集的主要子集有哪些?

SKU-110k 数据集分为三个主要子集:

  1. 训练集:包含 8,219 张图像及对应的标注,用于训练目标检测模型。
  2. 验证集:包含 588 张图像及对应的标注,用于训练过程中的模型验证。
  3. 测试集:包含 2,936 张图像,旨在对训练好的目标检测模型进行最终评估。

有关更多详情,请参阅 数据集结构 部分。

如何配置 SKU-110k 数据集进行训练?

SKU-110k 数据集配置定义在一个 YAML 文件中,其中包括关于数据集路径、类别和其他相关信息的详细信息。SKU-110K.yaml 文件维护在 SKU-110K.yaml。例如,你可以使用此配置来训练模型,如我们的 用法 部分所示。

深度学习的背景下,SKU-110k 数据集的关键特性是什么?

SKU-110k 数据集展示了来自世界各地的商店货架图像,呈现了密集堆叠的物体,这些物体为目标检测器带来了重大挑战:

  • 超过 110,000 个独特的 SKU 类别
  • 多样化的物体外观
  • 标注包括边界框和 SKU 类别标签

这些特性使得 SKU-110k 数据集在训练和评估目标检测任务中的深度学习模型时非常有价值。有关更多详情,请参阅 关键特性 部分。

在我的研究中如何引用 SKU-110k 数据集?

如果你在研究或开发工作中使用了 SKU-110k 数据集,请引用以下论文:

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

关于该数据集的更多信息可在 引用与致谢 部分找到。

评论