Meet YOLO26: next-gen vision AI.

Link to this sectionSKU-110k 数据集#

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



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

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

Link to this section主要特性#

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

Link to this section数据集结构#

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

  1. 训练集:此子集包含 8,219 张图像和用于训练目标检测模型的标注。
  2. 验证集:此子集包含 588 张图像和用于训练期间模型验证的标注。
  3. 测试集:此子集包括 2,936 张图像,旨在对训练好的目标检测模型进行最终评估。

Link to this section应用#

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

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

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

Link to this section数据集 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

Link to this section用法#

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

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

Link to this section示例数据与标注#

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

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

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

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

Link to this section引用与致谢#

如果你在研究或开发工作中使用 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 仓库

Link to this section常见问题解答#

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

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

Link to this section我该如何使用 SKU-110k 数据集训练 YOLO26 模型?#

在 SKU-110k 数据集上训练 YOLO26 模型非常直接。以下是训练 YOLO26n 模型 100 个 epoch 并使用 640 图像大小的示例:

训练示例
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 页面。

Link to this sectionSKU-110k 数据集的主要子集有哪些?#

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

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

请参阅 数据集结构 部分获取更多详细信息。

Link to this section我该如何配置 SKU-110k 数据集进行训练?#

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

Link to this section深度学习背景下,SKU-110k 数据集的关键特征是什么?#

SKU-110k 数据集以来自世界各地的商店货架图像为特色,展示了对目标检测器构成重大挑战的密集排列物体:

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

这些特征使得 SKU-110k 数据集对于目标检测任务中深度学习模型的训练和评估特别有价值。有关更多详细信息,请参阅 关键特征 部分。

Link to this section我该如何在研究中引用 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}
}

有关该数据集的更多信息,可以在 引文与致谢 部分找到。

评论