SKU-110k データセット

SKU-110k データセットは、物体検出タスクの研究を支援するために設計された、高密度に配置された小売棚の画像のコレクションです。Eran Goldman氏らによって開発されたこのデータセットには、密集して配置された110,000以上のユニークなSKUカテゴリーが含まれており、それらはしばしば類似しているか、あるいは同一に見えるオブジェクトで構成されています。



Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset

SKU-110K データセットの密集した小売棚の検出

主な特徴

  • SKU-110k には世界中の小売棚の画像が含まれており、最先端の物体検出器にとっても課題となるような、密集したオブジェクトが特徴です。
  • このデータセットには110,000以上のユニークなSKUカテゴリーが含まれており、多様な外観のオブジェクトを提供します。
  • アノテーションには、オブジェクトのバウンディングボックスとSKUカテゴリーラベルが含まれます。

データセットの構造

SKU-110k データセットは、主に3つのサブセットで構成されています。

  1. トレーニングセット: このサブセットには、物体検出モデルのトレーニングに使用される8,219枚の画像とアノテーションが含まれています。
  2. 検証セット: このサブセットには、トレーニング中のモデル検証に使用される588枚の画像とアノテーションが含まれています。
  3. テストセット: このサブセットには、トレーニング済み物体検出モデルの最終評価用に設計された2,936枚の画像が含まれています。

アプリケーション

SKU-110k データセットは、物体検出タスクにおけるディープラーニングモデルのトレーニングおよび評価に広く使用されており、特に小売棚のディスプレイのような高密度なシーンで活用されています。その用途には以下が含まれます。

  • 小売店の在庫管理と自動化
  • ECプラットフォームでの製品認識
  • プラノグラム(棚割)のコンプライアンス検証
  • 店舗でのセルフレジシステム
  • 倉庫内でのロボットによるピッキングと仕分け

データセットの多様な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 🚀 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

使用方法

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)

サンプルデータとアノテーション

SKU-110k データセットには、高密度なオブジェクトが配置された多様な小売棚の画像が含まれており、物体検出タスクのための豊富なコンテキストを提供します。データセットからの画像と、それに対応するアノテーションの例をいくつか紹介します。

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 データセットを作成・維持している Eran Goldman 氏らに感謝の意を表します。SKU-110k データセットとその作成者の詳細については、SKU-110k データセット GitHub リポジトリをご覧ください。

FAQ

SKU-110k データセットとは何ですか?また、なぜ物体検出にとって重要なのでしょうか?

SKU-110k データセットは、物体検出タスクの研究を支援するために設計された、高密度な小売棚の画像で構成されています。Eran Goldman 氏らによって開発され、110,000以上のユニークなSKUカテゴリーが含まれています。その重要性は、多様な外観と近接したオブジェクトによって最先端の物体検出器に課題を突きつける能力にあり、コンピュータビジョンの研究者や実務家にとって非常に価値のあるリソースとなっています。データセットの構造や用途についての詳細は、SKU-110k データセットセクションをご覧ください。

SKU-110k データセットを使用して YOLO26 モデルをトレーニングするにはどうすればよいですか?

SKU-110k データセットでの YOLO26 モデルのトレーニングは簡単です。以下は、YOLO26n モデルを画像サイズ640で100エポックトレーニングする例です。

トレーニングの例
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-110k データセットは、主に3つのサブセットで構成されています。

  1. トレーニングセット: 物体検出モデルのトレーニングに使用される8,219枚の画像とアノテーションが含まれています。
  2. 検証セット: トレーニング中のモデル検証に使用される588枚の画像とアノテーションで構成されています。
  3. テストセット: トレーニング済み物体検出モデルの最終評価用に設計された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}
}

データセットに関する詳細は、引用と謝辞セクションに記載されています。

コメント