Набор данных SKU-110k
Набор данных SKU-110k представляет собой коллекцию изображений плотно заставленных полок магазинов, разработанную для поддержки исследований в задачах обнаружения объектов. Набор данных, созданный Эраном Голдманом и коллегами, содержит более 110 000 уникальных категорий товарных позиций (SKU) с плотно расположенными объектами, которые часто выглядят похожими или даже идентичными.
Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

Основные характеристики
- SKU-110k содержит изображения полок магазинов со всего мира с плотно расположенными объектами, что создает трудности для современных детекторов объектов.
- Набор данных включает более 110 000 уникальных категорий SKU, обеспечивая широкое разнообразие внешнего вида объектов.
- Аннотации включают ограничивающие рамки (bounding boxes) для объектов и метки категорий SKU.
Структура набора данных
Набор данных SKU-110k организован в три основных подмножества:
- Обучающая выборка: это подмножество содержит 8 219 изображений и аннотаций, используемых для обучения моделей обнаружения объектов.
- Валидационная выборка: это подмножество состоит из 588 изображений и аннотаций, используемых для проверки модели во время обучения.
- Тестовая выборка: это подмножество включает 2 936 изображений, предназначенных для финальной оценки обученных моделей обнаружения объектов.
Приложения
Набор данных SKU-110k широко используется для обучения и оценки моделей глубинного обучения в задачах обнаружения объектов, особенно в сценах с плотным размещением, таких как витрины магазинов. Его применение включает:
- Управление товарными запасами и автоматизацию розничной торговли
- Распознавание товаров на платформах электронной коммерции
- Проверку соответствия планограмме
- Системы самообслуживания в магазинах
- Роботизированный сбор и сортировку товаров на складах
Разнообразный набор категорий SKU и плотное расположение объектов делают этот датасет ценным ресурсом для исследователей и практиков в области компьютерного зрения.
YAML набора данных
Для определения конфигурации набора данных используется YAML-файл. Он содержит информацию о путях к данным, классах и другую важную информацию. Для набора данных SKU-110K файл SKU-110K.yaml поддерживается по адресу 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 labelИспользование
Чтобы обучить модель YOLO26n на наборе данных SKU-110K в течение 100 эпох с размером изображения 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)Примеры данных и аннотаций
Набор данных SKU-110k содержит разнообразные изображения полок магазинов с плотно расположенными объектами, предоставляя богатый контекст для задач обнаружения объектов. Вот несколько примеров данных из набора вместе с соответствующими аннотациями:

- Изображение плотно заставленной полки магазина: это изображение демонстрирует пример плотного размещения объектов в условиях розничной торговли. Объекты аннотированы ограничивающими рамками и метками категорий SKU.
Этот пример показывает разнообразие и сложность данных в SKU-110k и подчеркивает важность высококачественных данных для задач обнаружения объектов. Плотное расположение товаров создает уникальные проблемы для алгоритмов обнаружения, что делает этот датасет особенно ценным для разработки надежных решений в области компьютерного зрения для розничной торговли.
Цитирование и благодарности
Если ты используешь набор данных 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}
}Мы хотели бы выразить признательность Эрану Голдману и коллегам за создание и поддержку набора данных SKU-110k как ценного ресурса для сообщества исследователей в области компьютерного зрения. Дополнительную информацию о наборе данных SKU-110k и его создателях можно найти в репозитории GitHub набора данных SKU-110k.
Часто задаваемые вопросы (FAQ)
Что такое набор данных SKU-110k и почему он важен для обнаружения объектов?
Набор данных SKU-110k состоит из изображений плотно заставленных полок магазинов, разработанных для помощи в исследованиях задач обнаружения объектов. Созданный Эраном Голдманом и коллегами, он включает более 110 000 уникальных категорий SKU. Его важность заключается в способности ставить сложные задачи перед современными детекторами объектов благодаря разнообразному внешнему виду объектов и их близости друг к другу, что делает его неоценимым ресурсом для исследователей и практиков компьютерного зрения. Узнай больше о структуре и приложениях набора данных в разделе Набор данных SKU-110k.
Как обучить модель YOLO26, используя набор данных SKU-110k?
Обучение модели YOLO26 на наборе данных SKU-110k довольно просто. Вот пример обучения модели YOLO26n в течение 100 эпох с размером изображения 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)Для полного списка доступных аргументов смотри страницу Обучение (Training) модели.
Каковы основные подмножества набора данных SKU-110k?
Набор данных SKU-110k организован в три основных подмножества:
- Обучающая выборка: содержит 8 219 изображений и аннотаций, используемых для обучения моделей обнаружения объектов.
- Валидационная выборка: состоит из 588 изображений и аннотаций, используемых для проверки модели во время обучения.
- Тестовая выборка: включает 2 936 изображений, предназначенных для финальной оценки обученных моделей обнаружения объектов.
Для получения подробной информации обратись к разделу Структура набора данных.
Как настроить набор данных 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 = {Precise Detection in Densely Packed Scenes},
booktitle = {Proc. Conf. Comput. Vision Pattern Recognition (CVPR)},
year = {2019}
}Более подробную информацию о наборе данных можно найти в разделе Цитирование и благодарности.