Link to this sectionSKU-110K 数据集#
SKU-110K 数据集是一个单类别目标检测数据集,包含 11,743 张密集排列的零售货架图像,分为 8,219 张训练图像、588 张验证图像和 2,936 张测试图像。每个产品都用一个 object 单一类别的边界框进行标注——这个名称指的是图中拍摄的超过 110,000 个独特的库存单位 (SKUs),而不是 110,000 个检测类别。该数据集由 Eran Goldman 等人为 CVPR 2019 论文《Precise Detection in Densely Packed Scenes》创建,包含超过 170 万个标注产品(平均每张图约 147 个),使其成为拥挤零售环境中计算机视觉模型极具挑战性的基准。
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Link to this section主要特性#
- 单类别检测:每个产品都用
object这一单一类别的边界框进行标记(names: {0: object})——标注中不包含各 SKU 的类别标签。 - 极高目标密度:来自世界各地的零售货架图像平均每张包含约 147 个紧密排列的产品,这些物体通常外观相似甚至相同,且位置非常接近。
- 大规模:超过 110,000 个独特的 SKU 和 11,743 张图像中超过 170 万个标注边界框,对最先进的目标检测器构成了挑战。
Link to this section数据集结构#
SKU-110K 数据集分为三个子集,它们都共享同一个 object 类:
| 拆分 | 图像 | 描述 |
|---|---|---|
| 训练 | 8,219 | 用于模型训练的图像和标注 |
| 验证 | 588 | 训练期间用于评估的留出图像 |
| 测试 | 2,936 | 用于最终模型评估的图像 |
Link to this section应用#
SKU-110K 数据集广泛用于目标检测任务中深度学习模型的训练和评估,特别是在零售货架陈列等密集场景中。其应用包括:
- 零售库存管理与自动化
- 电子商务平台中的产品识别
- 货架图 (Planogram) 合规性验证
- 门店自助结账系统
- 仓库中的机器人拣选与分拣
若要在浏览器中标注你自己的货架图像、训练并管理零售检测数据集,请使用 Ultralytics Platform 运行完整工作流。
Link to this section数据集 YAML#
SKU-110K.yaml 文件定义了数据集配置,包括数据集路径、类名和其他元数据。它托管在 Ultralytics 代码库中:https://github.com/ultralytics/ultralytics/blob/main/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 labelLink to this section用法#
SKU-110K 在你首次训练时会自动下载,其 11,743 张图像需要约 13.6 GB 的可用磁盘空间。下载脚本还会获取原始标注并将其转换为 YOLO 格式,这可能需要几分钟。
若要使用图像大小为 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 图像捕捉了真实零售货架上密集排列的产品,数十个近乎相同的物品并排摆放。以下是一个带有标注的图像示例:

- 密集排列的零售货架图像:此图像展示了零售货架环境中密集物体的一个示例。物体在
object单一类别下用边界框标注。
产品密集的排列使得 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 dataset GitHub repository。
Link to this section常见问题解答#
Link to this sectionSKU-110K 数据集的用途是什么?#
SKU-110K 数据集是一个单类别目标检测数据集,包含 11,743 张密集排列的零售货架图像,由 Eran Goldman 等人为其 CVPR 2019 论文创建。每个产品都用一个 object 边界框进行标记,图像涵盖了超过 110,000 个独特的库存单位 (SKUs),使其成为检测拥挤场景中物体及构建零售计算机视觉系统的强有力基准。
Link to this sectionSKU-110K 数据集有 110,000 个类别吗?#
不是。SKU-110K 是单类别的:每个产品都标注在 object 类下的一个边界框中(names: {0: object})。名称中的 “110K” 指的是图像中拍摄的独特库存单位 (SKUs) 的数量,而不是检测类别的数量。
Link to this sectionSKU-110K 数据集中有多少图像和类别?#
SKU-110K 数据集包含 11,743 张图像——8,219 张用于训练,588 张用于验证,2,936 张用于测试——以及一个单一的检测类别 object。详情请参见 数据集结构 部分和 SKU-110K.yaml 配置。
Link to this sectionSKU-110K 数据集下载有多大?#
SKU-110K 大约为 13.6 GB,在你首次使用 data="SKU-110K.yaml" 进行训练时会自动下载——无需手动下载。若要浏览更多较小的选项,请查看检测数据集概览。
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)