Ultralytics YOLO27:

Hypersim深度データセット#

Hypersimは、屋内シーンの包括的な理解を目的に設計された、フォトリアリスティックな屋内シーンの合成データセットです。画像は、専門家が作成したEvermotionの3Dインテリアからレイトレーシングで生成されており、非常にリアルなレンダリングと、完全で高密度なピクセル単位の深度グラウンドトゥルースが組み合わされています。

Hypersimは完全に合成されたデータセットであるため、すべてのピクセルにセンサーノイズ、欠落した戻り値、測定アーティファクトのない正確な深度値があります。そのため、単眼深度推定モデルのトレーニングに適した、クリーンで高密度な屋内ジオメトリの優れたソースとなります。

主な特徴#

  • プロフェッショナルなEvermotionの3Dインテリアからレイトレーシングで生成された、フォトリアリスティックな合成屋内シーンです。
  • 屋内環境のみです。
  • センサーノイズや欠落値のない、完全で高密度なピクセル単位の深度グラウンドトゥルースです。
  • 深度範囲は主に**≤10 m**です(一部、これより大きい距離もあります)。
  • Ultralyticsの深度トレーニング用データ混合に、74,619枚の画像(トレーニング68,242枚/検証6,377枚)を提供します。

データセットの構成#

Hypersim深度データセットは、次の2つのサブセットに分割されています。

  1. Train: トレーニング用のペアになった高密度深度マップ付き画像68,242枚です。
  2. Val: トレーニング中の検証用のペアになった高密度深度マップ付き画像6,377枚です。

各RGB画像には、Ultralytics深度データセット形式に従った、スケーリング済みのuint16深度PNGが対応しています。

データの取得#

Hypersimには自動ダウンロード機能がありません。データセット(シーンごとのZIPファイルで~1.9 TB)はAppleによってCC BY-SA 3.0ライセンスの下で配布されており、ml-hypersimリポジトリの公式スクリプトでダウンロードします(選択的ダウンローダーはcontrib/99991で利用できます)。

git clone https://github.com/apple/ml-hypersim && cd ml-hypersim
python code/python/tools/dataset_download_images.py --downloads_dir ./downloads --decompress_dir ./scenes

RGBフレームはframe.*.tonemap.jpgのプレビューで、深度データはframe.*.depth_meters.hdf5にあります。保存されている値は平面深度ではなく、カメラ中心までのレイ距離です。保存前に変換し、NaNピクセル(窓、空)は0(無効)にマッピングしてください。トレーニング/検証の割り当てには、公式のmetadata_images_split_scene_v1.csvシーン分割を使用してください。Ultralytics深度データセット形式への変換例:

import shutil
from pathlib import Path

import h5py
import numpy as np

from ultralytics.data.utils import save_depth_png

W, H, FOCAL = 1024, 768, 886.81  # Hypersim camera intrinsics
x, y = np.meshgrid(np.linspace(-W / 2, W / 2, W), np.linspace(-H / 2, H / 2, H))
ray2plane = (FOCAL / np.sqrt(x**2 + y**2 + FOCAL**2)).astype(np.float32)  # distance → planar depth

src, dst = Path("scenes"), Path("datasets/depth-hypersim")
out = "train"  # assign per scene from metadata_images_split_scene_v1.csv
(dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
(dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
for h5 in sorted(src.rglob("*.depth_meters.hdf5")):
    scene, cam, frame = h5.parts[-4], h5.parent.name.split("_geometry")[0], h5.name.split(".")[1]
    rgb = h5.parents[1] / f"{cam}_final_preview" / f"frame.{frame}.tonemap.jpg"
    dist = np.asarray(h5py.File(h5)["dataset"], np.float32)
    depth = np.nan_to_num(dist * ray2plane, nan=0.0)  # NaN (sky, glass) → 0 = invalid
    name = f"{scene}_{cam}_{frame}"
    save_depth_png(dst / f"depth/{out}/{name}.png", depth)
    shutil.copy(rgb, dst / f"images/{out}/{name}.jpg")

YOLO26-Depthにおける役割#

Hypersimは、Ultralytics YOLO26-Depthモデルの事前トレーニングに使用される、幅広いマルチデータセット混合(~219万枚の画像)におけるトレーニングソースの1つです。この混合データセット内で、Hypersimはクリーンで高密度な屋内ジオメトリを提供し、ノイズの多い実世界のセンサーデータを補完します。

この構成には、Hypersim専用の独立したホールドアウトベンチマークはありません。代わりに、生成されたモデルは、標準的な単眼深度ベンチマークであるNYU Depth V2、KITTI、Make3D、ETH3D、iBims-1で評価されます。

データセット YAML#

YAMLファイルはデータセット設定の定義に使用されます。YAMLファイルにはデータセットのパス、クラス、およびその他の関連情報が含まれます。Hypersimの場合、depth-hypersim.yamlファイルがパスと単一のdepthクラスを定義します。

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

# Hypersim dataset for monocular depth estimation — photorealistic synthetic indoor (ray-traced), dense depth up to ~10 m
# Documentation: https://docs.ultralytics.com/datasets/depth/hypersim
# Example usage: yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
#     └── depth-hypersim
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)

path: depth-hypersim # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 68242 images
val: images/val # val images (relative to 'path') 6377 images

nc: 1
names:
  0: depth

channels: 3

使用方法#

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

トレーニング例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="depth-hypersim.yaml", epochs=100, imgsz=640)

事前トレーニング済みモデル#

YOLO26深度ファミリー(yolo26n-depth.ptyolo26s-depth.ptyolo26m-depth.ptyolo26l-depth.ptyolo26x-depth.pt)はUltralyticsのリリースから自動ダウンロードされ、Hypersimが含まれる幅広いマルチデータセット混合でトレーニングされています。Ultralytics PlatformでYOLO26x-depthをご覧ください。

引用と謝辞#

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

引用
@inproceedings{roberts2021hypersim,
      title={Hypersim: A Photorealistic Synthetic Dataset for Holistic Indoor Scene Understanding},
      author={Mike Roberts and Jason Ramapuram and Anurag Ranjan and Atulit Kumar and Miguel Angel Bautista and Nathan Paczan and Russ Webb and Joshua M. Susskind},
      booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
      year={2021}
}

このフォトリアリスティックな合成屋内データセットをコンピュータビジョンコミュニティに提供してくださったHypersimの制作者に感謝します。

FAQ#

  • Hypersimは、プロ仕様のEvermotion 3Dインテリアからレイトレーシングで生成されたAppleの写真現実的な合成屋内データセットです。すべてのピクセルがセンサーノイズや欠損のない正確な深度値を持っているため、その74,619枚の画像(訓練用68,242枚、検証用6,377枚)は、YOLO26-Depthの訓練ミックスにおけるノイズの多い現実世界のセンサーデータを補完する、クリーンで高密度な屋内の幾何学情報を提供します。

  • Hypersimには自動ダウンロード機能がありません。ml-hypersim repositoryの公式スクリプトを使用してシーン(約1.9 TB)を取得し、Obtain the Dataのスクリプトを使用してdepth_meters.hdf5の光線距離を平面深度に変換し、ミリメートル単位のPNGを書き込みます。窓や空などのNaNピクセルを0にマッピングして、無効なピクセルとして処理されるようにします。

  • yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt epochs=100 imgsz=640を実行するか、UsageセクションのPythonの例を使用してください。Trainingページには、利用可能なすべての引数がリストされています。

コメント