Meet YOLO26: next-gen vision AI.

Link to this sectionSKU-110k データセット#

SKU-110k データセットは、物体検出タスクの研究を支援するために設計された、高密度に配置された小売棚の画像のコレクションです。Eran Goldman氏らによって開発されたこのデータセットには、近接して配置され、外見が類似または同一に見えることが多い、11万種類以上のユニークなSKUカテゴリーが含まれています。



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

SKU-110K データセット 高密度小売棚検出

Link to this section主な特徴#

  • SKU-110kには世界中の店舗の棚の画像が含まれており、最先端の物体検出器にとっても課題となる高密度な物体配置が特徴です。
  • このデータセットには11万種類以上のユニークなSKUカテゴリーが含まれており、多様な物体外観を提供します。
  • アノテーションには、物体のバウンディングボックスとSKUカテゴリーラベルが含まれています。

Link to this sectionデータセットの構造#

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

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

Link to this sectionアプリケーション#

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

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

このデータセットの多様なSKUカテゴリーと高密度な物体配置は、コンピュータビジョン分野の研究者や実務家にとって貴重なリソースとなります。

Link to this sectionデータセット 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

Link to this section使用方法#

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)

Link to this sectionサンプルデータとアノテーション#

SKU-110k データセットには、物体検出タスクに豊富なコンテキストを提供する、高密度な物体が写った多様な小売棚の画像が含まれています。データセットからのデータ例と、それに対応するアノテーションの一部を以下に示します。

SKU-110K 店舗棚における小売製品の検出

  • 高密度小売棚の画像: この画像は、小売棚の設定における高密度な物体の例を示しています。物体はバウンディングボックスとSKUカテゴリーラベルでアノテーションされています。

この例は、SKU-110k データセットに含まれるデータの多様性と複雑さを示しており、物体検出タスクにおける高品質なデータの重要性を強調しています。製品の高密度な配置は検出アルゴリズムに特有の課題を突きつけるため、このデータセットは堅牢な小売向けコンピュータビジョンソリューションを開発する上で特に価値があります。

Link to this section引用と謝辞#

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 リポジトリをご覧ください。

Link to this sectionよくある質問 (FAQ)#

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

SKU-110k データセットは、物体検出タスクの研究を支援するために設計された、高密度な小売棚の画像で構成されています。Eran Goldman氏らによって開発され、11万種類以上のユニークなSKUカテゴリーが含まれています。その重要性は、多様な外観や近接した物体によって最先端の物体検出器に課題を突きつける点にあり、コンピュータビジョン分野の研究者や実務家にとってかけがえのないリソースとなっています。データセットの構成と応用については、SKU-110k データセットセクションで詳しく解説しています。

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

SKU-110k データセットで YOLO26 モデルをトレーニングするのは簡単です。以下は、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 ページを参照してください。

Link to this sectionSKU-110k データセットの主要なサブセットは何ですか?#

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

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

詳細については、データセット構造セクションを参照してください。

Link to this sectionトレーニング用にSKU-110k データセットを設定するにはどうすればよいですか?#

SKU-110k データセットの設定はYAMLファイルで定義されており、これにはデータセットのパス、クラス、その他の関連情報が含まれています。SKU-110K.yaml ファイルは SKU-110K.yaml に維持されています。例えば、使用方法セクションに示すように、この設定を使用してモデルをトレーニングできます。

Link to this sectionディープラーニングのコンテキストにおけるSKU-110k データセットの主な特徴は何ですか?#

SKU-110k データセットは、世界中の店舗の棚の画像を特徴としており、物体検出器にとって大きな課題となる高密度な物体配置を示しています。

  • 11万種類以上のユニークなSKUカテゴリー
  • 多様な物体外観
  • アノテーションにはバウンディングボックスとSKUカテゴリーラベルが含まれる

これらの特徴により、SKU-110k データセットは、物体検出タスクにおけるディープラーニングモデルのトレーニングや評価に非常に役立ちます。詳細については、主な特徴セクションをご覧ください。

Link to this section研究で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}
}

データセットの詳細については、引用と謝辞セクションを参照してください。

コメント