Перейти к содержанию

Набор данных SKU-110k

Набор данных SKU-110k - это коллекция плотно упакованных изображений торговых полок, созданная для поддержки исследований в задачах обнаружения объектов. Разработанный Эраном Голдманом и др. набор данных содержит более 110 000 уникальных категорий единиц хранения (SKU) с плотно упакованными объектами, часто похожими или даже идентичными, расположенными в непосредственной близости друг от друга.



Смотреть: Как обучить YOLOv10 на наборе данных SKU-110k с помощью Ultralytics | Retail Dataset.

Образец изображения из набора данных

Основные характеристики

  • SKU-110k содержит изображения полок магазинов со всего мира с плотно упакованными предметами, которые создают трудности для современных детекторов объектов.
  • Набор данных включает в себя более 110 000 уникальных категорий SKU, обеспечивающих разнообразный внешний вид объектов.
  • Аннотации включают ограничительные рамки для объектов и метки категорий SKU.

Структура набора данных

Набор данных SKU-110k состоит из трех основных подмножеств:

  1. Обучающий набор: Это подмножество содержит изображения и аннотации, используемые для обучения моделей обнаружения объектов.
  2. Набор для проверки: Это подмножество состоит из изображений и аннотаций, используемых для проверки модели во время обучения.
  3. Тестовый набор: Это подмножество предназначено для окончательной оценки обученных моделей обнаружения объектов.

Приложения

Набор данных SKU-110k широко используется для обучения и оценки моделей глубокого обучения в задачах обнаружения объектов, особенно в плотно упакованных сценах, таких как витрины розничных магазинов. Разнообразие категорий SKU и плотное расположение объектов в наборе данных делает его ценным ресурсом для исследователей и практиков в области компьютерного зрения.

Набор данных YAML

Для определения конфигурации набора данных используется файл YAML (Yet Another Markup Language). Он содержит информацию о путях, классах и другую необходимую информацию о наборе данных. В случае с набором данных SKU-110K файл SKU-110K.yaml файл хранится по адресу 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

Использование

Чтобы обучить модель YOLO11n на наборе данных SKU-110K в течение 100 эпох при размере изображения 640, можно использовать следующие фрагменты кода. Полный список доступных аргументов см. на странице "Обучение модели".

Пример поезда

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.pt 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 и его создателях посетите репозиторий SKU-110k dataset GitHub.

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Что такое набор данных SKU-110k и почему он важен для обнаружения объектов?

Набор данных SKU-110k состоит из плотно упакованных изображений полок розничных магазинов, предназначенных для исследования задач обнаружения объектов. Разработанный Эраном Голдманом и др., он включает более 110 000 уникальных категорий SKU. Его важность заключается в том, что он способен бросить вызов современным детекторам объектов с различным внешним видом и близким расположением объектов, что делает его бесценным ресурсом для исследователей и практиков в области компьютерного зрения. Подробнее о структуре и применении набора данных можно узнать в разделе SKU-110k Dataset.

Как обучить модель YOLO11 с помощью набора данных SKU-110k?

Обучение модели YOLO11 на наборе данных SKU-110k не представляет сложности. Вот пример обучения модели YOLO11n для 100 эпох с размером изображения 640:

Пример поезда

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.pt epochs=100 imgsz=640

Полный список доступных аргументов см. на странице обучения модели.

Каковы основные подмножества набора данных SKU-110k?

Набор данных SKU-110k состоит из трех основных подмножеств:

  1. Обучающий набор: Содержит изображения и аннотации, используемые для обучения моделей обнаружения объектов.
  2. Набор для проверки: Состоит из изображений и аннотаций, используемых для проверки модели во время обучения.
  3. Тестовый набор: Предназначен для окончательной оценки обученных моделей обнаружения объектов.

Более подробную информацию см. в разделе Структура набора данных.

Как настроить набор данных 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}
}

Более подробную информацию о наборе данных можно найти в разделе "Цитаты и благодарности".

📅 Создано 1 год назад ✏️ Обновлено 2 месяца назад

Комментарии