Hypersim深度データセット#
Hypersimは、包括的な屋内シーン理解を目的として設計された、フォトリアリスティックな屋内シーンの合成データセットです。画像は、専門家が作成したEvermotionの3Dインテリアをレイトレーシングして生成されており、非常にリアルなレンダリングと、完全かつ高密度なピクセル単位の深度グラウンドトゥルースが含まれています。
Hypersimは完全な合成データセットであるため、すべてのピクセルに正確な深度値があり、センサーノイズや欠損データ、測定アーティファクトはありません。そのため、単眼深度推定モデルの学習に適した、クリーンで高密度な屋内ジオメトリのデータソースです。
主な機能#
- プロが作成したEvermotionの3Dインテリアをレイトレーシングした、フォトリアリスティックな合成屋内シーンです。
- 屋内環境のみです。
- センサーノイズや欠損値のない、完全で高密度なピクセル単位の深度グラウンドトゥルースです。
- 深度範囲は主に≤10 mです(一部はこれより長距離です)。
- Ultralyticsの深度学習データに74,619枚の画像(学習用68,242枚/検証用6,377枚)を提供します。
データセットの構成#
Hypersim深度データセットは、次の2つのサブセットに分割されています。
- Train: 学習用の深度マップが対応付けられた68,242枚の画像です。
- 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 ./scenesRGBフレームは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モデルの事前学習に使用される大規模なマルチデータセット混合データ(~2.19M枚の画像)の学習ソースの1つです。この混合データでは、Hypersimがクリーンで高密度な屋内ジオメトリを提供し、ノイズの多い実世界のセンサーデータを補完します。
この構成には、独立した保留済みHypersimベンチマークはありません。代わりに、学習後のモデルは、標準的な単眼深度ベンチマークであるNYU Depth V2、KITTI、Make3D、ETH3D、iBims-1で評価されます。
データセットYAML#
データセット設定の定義にはYAMLファイルを使用します。このファイルには、データセットのパス、クラス、その他の関連情報が含まれます。Hypersimの場合、depth-hypersim.yamlファイルでパスと単一のdepthクラスを定義します。
# 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モデルを学習するには、以下のコードスニペットを使用します。使用可能な引数の一覧については、モデルのTrainingページを参照してください。
from ultralytics import YOLO
# モデルを読み込む
model = YOLO("yolo26n-depth.pt") # 事前トレーニング済みモデルを読み込みます(トレーニングにはこちらを推奨します)
# モデルをトレーニングする
results = model.train(data="depth-hypersim.yaml", epochs=100, imgsz=640)事前学習済みモデル#
YOLO26深度モデルファミリー(yolo26n-depth.pt、yolo26s-depth.pt、yolo26m-depth.pt、yolo26l-depth.pt、yolo26x-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の作成者に感謝します。
よくある質問#
HypersimはAppleが提供するフォトリアリスティックな合成屋内データセットで、プロが作成したEvermotionの3Dインテリアをレイトレーシングして生成されています。すべてのピクセルにセンサーノイズや欠損データのない正確な深度値があるため、74,619枚の画像(学習用68,242枚、検証用6,377枚)が、YOLO26-Depthの学習データに含まれるノイズの多い実世界のセンサーデータを補完する、クリーンで高密度な屋内ジオメトリを提供します。
Hypersimは自動ダウンロードに対応していません。ml-hypersimリポジトリの公式スクリプトでシーン(~1.9 TB)を取得し、データの取得にあるスクリプトを使って
depth_meters.hdf5のレイ距離を平面深度に変換し、ミリメートル単位のPNGとして保存してください。窓や空などのNaNピクセルは0に設定し、無効値として扱います。