YOLO Vision 2026:

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 🛒

SKU-110K dataset densely packed retail shelf detection

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:

SplitHình ảnhMô tả
Huấn luyện (Train)8,219Hình ảnh và chú thích cho huấn luyện mô hình
Validation588Ảnh giữ lại dùng để đánh giá trong quá trình huấn luyện
Kiểm thử2,936Hì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/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

Cách sử dụng#

Tải xuống 13,6 GB

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.

Ví dụ về Training
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ó:

SKU-110K retail product detection on store shelves

  • Ả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:

Trích dẫn
@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ình SKU-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ề Training
    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)

    Để 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.

Bình luận