Ultralytics YOLO27:
No license

SUN RGB-D深度データセット#

SUN RGB-Dは、4種類のRGB-Dセンサー(Intel RealSense、Asus Xtion、Microsoft Kinect v1およびv2)で撮影された、実環境の屋内シーン理解ベンチマークです。マルチセンサー設計により、単眼深度推定における実環境の深度データの多様性をもたらす貴重な情報源となっています。

Ultralytics Platform上のSUN RGB-DでRGBと深度のペアをプレビューし、データセットの統計を確認して、トレーニング用にクローンできます。

主な機能#

  • 4種類のRGB-Dセンサー(Intel RealSense、Asus Xtion、Microsoft Kinect v1およびv2)で撮影されており、実環境のマルチセンサーの多様性を備えています。
  • シーン理解の研究に向けて、幅広い実環境の屋内シーンをカバーしています。
  • 深度範囲は約10 mまでで、一般的な家庭用屋内RGB-D撮影に相当します。
  • センサー由来の深度グラウンドトゥルースがRGBフレームに位置合わせされています。
  • Ultralyticsの深度事前学習データの組み合わせに、実環境のマルチセンサーによる屋内データの多様性をもたらします。

データセットの構成#

SUN RGB-D深度データセットは、次の2つのサブセットに分かれています。

  1. Train:トレーニング用の深度マップ付き画像9,245枚。
  2. Val:モデルのトレーニング中の検証用に、深度マップがペアになった画像1,090枚。

各サンプルは、RGB画像1枚と、それに対応するスケーリング済みuint16深度PNG画像1枚で構成され、Ultralytics深度データセット形式に従っています。データセットのYAMLはソースアーカイブ(~6.5 GB)をダウンロードし、初回使用時に自動で変換して、深度をミリメートル単位で書き込みます。そのため、デフォルトのdepth_scale: 1000が適用されます。

YOLO26-Depthにおける役割#

SUN RGB-Dは、約2.19M組の画像と深度ペアからなるUltralytics YOLO26-Depthの複数データセット事前学習用データのトレーニングソースです。実環境のマルチセンサーによる屋内データの多様性をもたらし、複数の異なる民生用RGB-Dデバイスで撮影された深度データをモデルに学習させます。学習後のモデルは、標準的なNYU、KITTI、Make3D、ETH3D、iBims-1の各ベンチマークで評価されます。

データセットYAML#

データセット設定の定義にはYAMLファイルを使用します。このファイルには、データセットのパス、クラス、その他の関連情報が含まれます。

ultralytics/cfg/datasets/depth-sunrgbd.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# SUN RGB-D dataset for monocular depth estimation — real indoor, multi-sensor RGB-D (RealSense/Xtion/Kinect), up to ~10 m
# Documentation: https://docs.ultralytics.com/datasets/depth/sunrgbd
# Example usage: yolo depth train data=depth-sunrgbd.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── depth-sunrgbd  ← downloads here (6.5 GB archive, ~14 GB converted)
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)
# If an interrupted download leaves a partial dataset, delete the depth-sunrgbd dir and re-run to rebuild it.

path: depth-sunrgbd # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 9245 images
val: images/val # val images (relative to 'path') 1090 images

nc: 1
names:
  0: depth

channels: 3

# Download script/URL (optional)
download: |
  import random
  import shutil
  from pathlib import Path

  import cv2
  import numpy as np

  from ultralytics.data.utils import save_depth_png
  from ultralytics.utils import TQDM
  from ultralytics.utils.downloads import download

  # Download and extract the official archive (~6.5 GB), then convert each of the 10335 scenes:
  # refined depth_bfx PNGs decode via the SUN RGB-D bit-rotation (d>>3 | d<<13) to millimeters,
  # clipped at 10 m; a deterministic random 1090-scene subset (seed 0) forms the val split
  dir = Path(yaml["path"])  # dataset root dir
  download(["https://rgbd.cs.princeton.edu/data/SUNRGBD.zip"], dir=dir / "source", delete=True, exist_ok=True)
  for split in ("train", "val"):
      (dir / "images" / split).mkdir(parents=True, exist_ok=True)
      (dir / "depth" / split).mkdir(parents=True, exist_ok=True)
  scenes = sorted(p.parent for p in (dir / "source" / "SUNRGBD").rglob("depth_bfx"))
  names = ["_".join(s.relative_to(dir / "source" / "SUNRGBD").parts) for s in scenes]
  val = set(random.Random(0).sample(names, k=1090))
  for scene, name in TQDM(zip(scenes, names), total=len(scenes), desc="Converting"):
      split = "val" if name in val else "train"
      d = cv2.imread(str(next((scene / "depth_bfx").glob("*.png"))), cv2.IMREAD_ANYDEPTH)
      d = (((d >> 3) | (d << 13)) / 1000.0).clip(max=10).astype(np.float32)  # bit-rotated mm -> m
      save_depth_png(dir / "depth" / split / f"{name}.png", d)
      next((scene / "image").glob("*.jpg")).replace(dir / "images" / split / f"{name}.jpg")
  shutil.rmtree(dir / "source")

使用方法#

画像サイズ640でSUN RGB-Dデータセットを使用してYOLO26n-depthモデルをトレーニングするには、次のコードスニペットを使用できます。利用可能な引数の一覧については、モデルのTrainingページをご覧ください。

トレーニング例
from ultralytics import YOLO

# モデルを読み込む
model = YOLO("yolo26n-depth.pt")  # 事前学習済みの深度モデルを読み込む(トレーニングに推奨)

# モデルをトレーニングする
results = model.train(data="depth-sunrgbd.yaml", epochs=100, imgsz=640)

事前学習済みモデル#

YOLO26の深度モデルファミリーは、SUN RGB-Dが含まれる幅広い複数データセットの深度事前学習用データでトレーニングされています。これらのモデルは初回使用時にUltralyticsのv8.4.0 assets releaseから自動ダウンロードされます。たとえばYOLO26x-depthなどがあり、精度やリソース要件に応じてさまざまなサイズが用意されています。

引用と謝辞#

研究または開発でSUN RGB-Dデータセットを使用する場合は、以下の論文を引用してください。

引用
@inproceedings{song2015sunrgbd,
      title={SUN RGB-D: A RGB-D Scene Understanding Benchmark Suite},
      author={Song, Shuran and Lichtenberg, Samuel P. and Xiao, Jianxiong},
      booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
      year={2015}
}

コンピュータビジョンコミュニティにとって価値あるこのリソースを作成し、維持している著者の皆様に感謝いたします。

よくある質問#

  • SUN RGB-Dは、4種類のRGB-Dセンサー(Intel RealSense、Asus Xtion、Microsoft Kinect v1およびv2)で撮影された、実環境の屋内シーン理解ベンチマークです。Ultralyticsの設定では、深度が約10 mまでの画像と深度のペアを、トレーニング用に9,245組、検証用に1,090組提供しています。

  • 各RGB画像にはミリメートル単位のuint16 PNG画像がペアになっているため、Ultralytics深度データセット形式に従い、デフォルトのdepth_scale: 1000が適用されます。コンパクトなDepth8テストデータセットはSUN RGB-Dからサンプリングされ、同じ形式を使用します。

  • yolo depth train data=depth-sunrgbd.yaml model=yolo26n-depth.pt epochs=100 imgsz=640を実行するか、UsageセクションのPythonサンプルを使用してください。Ultralytics Platformでデータセットを閲覧し、クローンすることもできます。

コントリビューター

コメント