Bộ dữ liệu SKU-110K#
Dataset SKU-110K là một dataset object detection một lớp gồm 11.743 ảnh kệ hàng bán lẻ được đóng gói dày đặc, được chia thành 8.219 ảnh huấn luyện, 588 ảnh xác thực và 2.936 ảnh kiểm thử. Mỗi sản phẩm được gán nhãn với một bounding box theo một lớp duy nhất, object — tên gọi này ám chỉ hơn 110.000 đơn vị lưu kho (SKU) độc đáo xuất hiện trong các khung hình, chứ không phải 110.000 lớp phát hiện. Được tạo bởi Eran Goldman và cộng sự cho bài báo CVPR 2019 Precise Detection in Densely Packed Scenes, dataset này chứa hơn 1,7 triệu sản phẩm được gán nhãn — trung bình khoảng 147 sản phẩm trên mỗi ảnh — biến nó thành một benchmark đòi hỏi khắt khe đối với các mô hình computer vision trong môi trường bán lẻ đông đúc.
Watch: How to Train Ultralytics YOLO26 to Detect Every Product on a Retail Shelf | SKU-110K 🛒

Tính năng chính#
- Phát hiện một lớp: Mỗi sản phẩm được gán nhãn với một bounding box dưới một lớp duy nhất
object(names: {0: object}) — các nhãn không đi kèm thông tin danh mục theo từng SKU. - Mật độ đối tượng cực cao: Hình ảnh kệ hàng từ khắp nơi trên thế giới trung bình có khoảng 147 sản phẩm được đóng gói chặt chẽ, với các đối tượng thường trông tương tự hoặc thậm chí giống hệt nhau được đặt gần nhau.
- Quy mô lớn: Hơn 110.000 SKU độc nhất và hơn 1,7 triệu hộp bao đã được chú thích trên 11.743 hình ảnh là thách thức đối với các bộ phát hiện đối tượng hiện đại nhất.
Cấu trúc tập dữ liệu#
Dataset SKU-110K được chia thành ba tập con, tất cả đều dùng chung một lớp object:
| Split | Hình ảnh | Mô tả |
|---|---|---|
| Huấn luyện (Train) | 8,219 | Hình ảnh và chú thích cho huấn luyện mô hình |
| Validation | 588 | Ảnh giữ lại dùng để đánh giá trong quá trình huấn luyện |
| Kiểm thử | 2,936 | Hình ảnh để đánh giá cuối cùng cho mô hình đã huấn luyện |
Ứng dụng#
Dataset SKU-110K được sử dụng rộng rãi để huấn luyện và đánh giá các mô hình deep learning trong các tác vụ object detection, đặc biệt là trong các cảnh đóng gói dày đặc như trưng bày kệ hàng bán lẻ. Các ứng dụng của nó bao gồm:
- Quản lý và tự động hóa kho hàng bán lẻ
- Nhận diện sản phẩm trên các nền tảng thương mại điện tử
- Xác minh tuân thủ sơ đồ bài trí hàng hóa (planogram)
- Hệ thống thanh toán tự phục vụ trong cửa hàng
- Robot lấy và phân loại hàng trong kho
Để gán nhãn cho ảnh kệ hàng của riêng bạn, huấn luyện và quản lý dataset phát hiện bán lẻ trực tiếp trên trình duyệt, hãy chạy toàn bộ quy trình làm việc với Ultralytics Platform.
YAML tập dữ liệu#
Tệp SKU-110K.yaml định nghĩa cấu hình dataset — đường dẫn dataset, tên lớp và các siêu dữ liệu khác. Nó được duy trì trong kho lưu trữ Ultralytics tại 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 labelCách sử dụng#
SKU-110K tự động tải xuống vào lần đầu tiên bạn huấn luyện và yêu cầu khoảng 13,6 GB dung lượng đĩa trống cho 11.743 hình ảnh của nó. Tập lệnh tải xuống cũng lấy các chú thích gốc và chuyển đổi chúng sang định dạng YOLO, quá trình này có thể mất vài phút.
Để huấn luyện mô hình YOLO26n trên dataset SKU-110K trong 100 epoch với kích thước ảnh là 640, bạn có thể sử dụng các đoạn mã sau. Để có danh sách đầy đủ các tham số có sẵn, hãy tham khảo trang Training của mô hình.
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)Dữ liệu mẫu và Chú thích#
Hình ảnh SKU-110K ghi lại các sản phẩm được xếp dày đặc trên kệ hàng thực tế, nơi hàng chục mặt hàng gần như giống hệt nhau nằm cạnh nhau. Dưới đây là hình ảnh ví dụ cùng các chú thích của nó:

- Ảnh kệ hàng bán lẻ đóng gói dày đặc: Ảnh này minh họa một ví dụ về các đối tượng được đóng gói dày đặc trong bối cảnh kệ hàng bán lẻ. Các đối tượng được gán nhãn bằng bounding box theo lớp duy nhất
object.
Sự sắp xếp dày đặc của sản phẩm làm cho SKU-110K đặc biệt có giá trị để phát triển các giải pháp thị giác máy tính tập trung vào bán lẻ mạnh mẽ, vì số lượng đối tượng cao trên mỗi hình ảnh đẩy các bộ phát hiện vượt xa các chuẩn đánh giá thông thường.
Trích dẫn và Ghi nhận#
Nếu bạn sử dụng bộ dữ liệu SKU-110K trong nghiên cứu hoặc công việc phát triển của mình, vui lòng trích dẫn bài báo sau:
@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}
}Chúng tôi xin gửi lời cảm ơn đến Eran Goldman và cộng sự vì đã tạo và duy trì dataset SKU-110K như một tài nguyên có giá trị cho cộng đồng nghiên cứu computer vision. Để biết thêm thông tin về dataset SKU-110K và những người tạo ra nó, hãy truy cập kho lưu trữ GitHub của dataset SKU-110K.
Câu hỏi thường gặp#
Dataset SKU-110K là một dataset object detection một lớp gồm 11.743 ảnh kệ hàng bán lẻ đóng gói dày đặc, được tạo bởi Eran Goldman và cộng sự cho bài báo CVPR 2019 của họ. Mỗi sản phẩm được gán nhãn bằng một bounding box
object, và hình ảnh bao phủ hơn 110.000 đơn vị lưu kho (SKU) độc đáo, biến nó thành một benchmark mạnh mẽ để phát hiện đối tượng trong các cảnh đông đúc và xây dựng hệ thống computer vision bán lẻ.Không. SKU-110K là dataset một lớp: mỗi sản phẩm được gán nhãn với một bounding box thuộc lớp
object(names: {0: object}). Số "110K" trong tên gọi đề cập đến số lượng đơn vị lưu kho (SKU) độc đáo xuất hiện xuyên suốt các hình ảnh, chứ không phải số lượng lớp phát hiện.Dataset SKU-110K chứa 11.743 ảnh — 8.219 ảnh huấn luyện, 588 ảnh xác thực và 2.936 ảnh kiểm thử — cùng với một lớp phát hiện duy nhất
object. Xem mục Dataset Structure và cấu hìnhSKU-110K.yamlđể biết thêm chi tiết.SKU-110K có dung lượng khoảng 13,6 GB và sẽ tự động tải xuống lần đầu tiên bạn thực hiện huấn luyện với
data="SKU-110K.yaml"— không cần tải xuống thủ công. Để duyệt qua các tùy chọn nhỏ hơn, hãy xem tổng quan về dataset phát hiện.Việc huấn luyện một mô hình YOLO26 trên bộ dữ liệu SKU-110K rất đơn giản. Dưới đây là ví dụ để huấn luyện mô hình YOLO26n trong 100 epoch với kích thước ảnh là 640:
Ví dụ về Trainingfrom 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)Để có danh sách toàn diện các tham số khả dụng, hãy tham khảo trang Training của mô hình và mẹo huấn luyện mô hình.