Bỏ để qua phần nội dung

Bộ dữ liệu SKU-110k

Bộ dữ liệu SKU-110k là một tập hợp các hình ảnh kệ bán lẻ được đóng gói dày đặc, được thiết kế để hỗ trợ nghiên cứu trong các nhiệm vụ phát hiện đối tượng. Được phát triển bởi Eran Goldman và cộng sự, bộ dữ liệu chứa hơn 110.000 danh mục đơn vị lưu trữ (SKU) duy nhất với các đối tượng được đóng gói dày đặc, thường trông giống nhau hoặc thậm chí giống hệt nhau, được đặt gần nhau.

Hình ảnh mẫu tập dữ liệu

Các tính năng chính

  • SKU-110k chứa hình ảnh của các kệ hàng từ khắp nơi trên thế giới, có các vật thể được đóng gói dày đặc đặt ra những thách thức cho các máy dò đối tượng hiện đại.
  • Bộ dữ liệu bao gồm hơn 110.000 danh mục SKU duy nhất, cung cấp một loạt các giao diện đối tượng đa dạng.
  • Chú thích bao gồm các hộp giới hạn cho các đối tượng và nhãn danh mục SKU.

Cấu trúc tập dữ liệu

Tập dữ liệu SKU-110k được tổ chức thành ba tập hợp con chính:

  1. Tập hợp đào tạo: Tập hợp con này chứa hình ảnh và chú thích được sử dụng để huấn luyện các mô hình phát hiện đối tượng.
  2. Tập hợp xác thực: Tập hợp con này bao gồm các hình ảnh và chú thích được sử dụng để xác thực mô hình trong quá trình đào tạo.
  3. Bộ kiểm thử: Tập hợp con này được thiết kế để đánh giá cuối cùng các mô hình phát hiện đối tượng được đào tạo.

Ứng dụng

Bộ dữ liệu SKU-110k được sử dụng rộng rãi để đào tạo và đánh giá các mô hình học sâu trong các tác vụ phát hiện đối tượng, đặc biệt là trong các cảnh đông đúc như kệ bán lẻ. Tập hợp các danh mục SKU đa dạng của bộ dữ liệu và sắp xếp đối tượng dày đặc làm cho nó trở thành một nguồn tài nguyên quý giá cho các nhà nghiên cứu và các học viên trong lĩnh vực thị giác máy tính.

Tập dữ liệu YAML

Tệp YAML (Yet Another Markup Language) được sử dụng để xác định cấu hình tập dữ liệu. Nó chứa thông tin về đường dẫn, lớp và thông tin liên quan khác của tập dữ liệu. Đối với trường hợp của tập dữ liệu SKU-110K, SKU-110K.yaml Tệp được duy trì tại 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

Sử dụng

Để đào tạo một YOLOv8n mô hình trên tập dữ liệu SKU-110K cho 100 kỷ nguyên với kích thước hình ảnh là 640, bạn có thể sử dụng các đoạn mã sau. Để biết danh sách đầy đủ các đối số có sẵn, hãy tham khảo trang Đào tạo mẫu.

Ví dụ về tàu hỏa

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="SKU-110K.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo detect train data=SKU-110K.yaml model=yolov8n.pt epochs=100 imgsz=640

Dữ liệu mẫu và chú thích

Bộ dữ liệu SKU-110k chứa một bộ hình ảnh kệ bán lẻ đa dạng với các đối tượng được đóng gói dày đặc, cung cấp ngữ cảnh phong phú cho các tác vụ phát hiện đối tượng. Dưới đây là một số ví dụ về dữ liệu từ tập dữ liệu, cùng với các chú thích tương ứng của chúng:

Hình ảnh mẫu tập dữ liệu

  • Hình ảnh kệ bán lẻ được đóng gói dày đặc: Hình ả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ệ bán lẻ. Các đối tượng được chú thích bằng các hộp giới hạn và nhãn danh mục SKU.

Ví dụ này cho thấy sự đa dạng và phức tạp của dữ liệu trong tập dữ liệu SKU-110k và nhấn mạnh tầm quan trọng của dữ liệu chất lượng cao đối với các tác vụ phát hiện đối tượng.

Trích dẫn và xác nhận

Nếu bạn sử dụng bộ dữ liệu SKU-110k trong công việc nghiên cứu hoặ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 muốn ghi nhận Eran Goldman et al. đã tạo và duy trì bộ dữ liệu SKU-110k như một nguồn tài nguyên quý giá cho cộng đồng nghiên cứu thị giác máy tính. Để biết thêm thông tin về tập dữ liệu SKU-110k và người tạo ra nó, hãy truy cập kho lưu trữ GitHub tập dữ liệu SKU-110k.



Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), Laughing-q (1)

Ý kiến