Skip to content

SKU-110k 数据集

SKU-110k 数据集是一个密集包装的零售货架图像集合,旨在支持目标检测任务的研究。由Eran Goldman等人开发,该数据集包含超过110,000种独特的存储单元(SKU)类别,这些类别中的物体通常看起来相似甚至相同,并且紧密排列。



观看: 如何使用Ultralytics在SKU-110k数据集上训练YOLOv10 | 零售数据集

数据集样本图像

主要特点

  • SKU-110k包含来自世界各地的商店货架图像,这些图像中的物体密集排列,对最先进的目标检测器提出了挑战。
  • 该数据集包含超过110,000种独特的SKU类别,提供了多样化的物体外观。
  • 注释包括物体的边界框和SKU类别标签。

数据集结构

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

  1. 训练集: 该子集包含用于训练目标检测模型的图像和注释。
  2. 验证集: 该子集包含用于训练期间模型验证的图像和注释。
  3. 测试集: 该子集用于训练好的目标检测模型的最终评估。

应用

SKU-110k数据集广泛用于训练和评估深度学习模型在目标检测任务中的表现,特别是在零售货架展示等密集排列的场景中。数据集中多样化的SKU类别和密集排列的物体使其成为计算机视觉领域研究人员和从业者的宝贵资源。

数据集YAML

YAML(另一种标记语言)文件用于定义数据集配置。它包含有关数据集路径、类别和其他相关信息。对于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 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

使用方法

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

训练示例

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载预训练模型(推荐用于训练)

# 训练模型
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)
# 从预训练的*.pt模型开始训练
yolo detect train data=SKU-110K.yaml model=yolo11n.pt epochs=100 imgsz=640

样本数据和注释

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

数据集样本图像

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

该示例展示了SKU-110k数据集中数据的多样性和复杂性,并强调了高质量数据对目标检测任务的重要性。

引用和致谢

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

```bibtex @inproceedings{goldman2019dense,

author = {Eran Goldman and Roei Herzig and Aviv Eisenschtat and Jacob Goldberger and Tal Hassner}, title = {密集场景中的精确检测}, booktitle = {计算机视觉与模式识别会议 (CVPR) 论文集}, year = {2019} }

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

常见问题

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

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

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

在 SKU-110k 数据集上训练 YOLO11 模型非常简单。以下是一个示例,用于训练一个 YOLO11n 模型,图像大小为 640,训练 100 个 epoch:

训练示例

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n.pt")  # 加载预训练模型(推荐用于训练)

# 训练模型
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)
# 从预训练的 *.pt 模型开始训练
yolo detect train data=SKU-110K.yaml model=yolo11n.pt epochs=100 imgsz=640

有关可用参数的完整列表,请参阅模型 训练 页面。

SKU-110k 数据集的主要子集是什么?

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

  1. 训练集:包含用于训练目标检测模型的图像和标注。
  2. 验证集:包含用于训练期间模型验证的图像和标注。
  3. 测试集:用于训练目标检测模型的最终评估。

请参阅 数据集结构 部分了解更多详情。

如何配置 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     = {密集场景中的精确检测},
 booktitle = {计算机视觉与模式识别会议 (CVPR) 论文集},
 year      = {2019}
}

有关数据集的更多信息,请参阅 引用和致谢 部分。


📅 Created 11 months ago ✏️ Updated 13 days ago

Comments