Hypersim Depth Dataset#
Hypersim ist ein fotorealistischer synthetischer Datensatz von Innenszenen, der für das ganzheitliche Verständnis von Innenszenen entwickelt wurde. Seine Bilder werden mittels Raytracing aus professionell erstellten Evermotion 3D-Inneneinrichtungen gerendert, wodurch hochrealistische Renderings gepaart mit perfekten, dichten Ground-Truth-Tiefenwerten pro Pixel entstehen.
Da Hypersim vollständig synthetisch ist, besitzt jedes Pixel einen exakten Tiefenwert ohne Sensorrauschen, fehlende Messwerte oder Messartefakte. Dies macht es zu einer hervorragenden Quelle für saubere, dichte Innendurchmessergeometrie zum Trainieren monokularer Tiefenschätzungsmodelle.
Hauptfunktionen#
- Fotorealistische synthetische Innenraumszenen, mittels Raytracing aus professionellen Evermotion 3D-Innenräumen erstellt.
- Nur Innenraum-Umgebungen.
- Dichte, perfekte Per-Pixel-Tiefen-Ground-Truth ohne Sensorrauschen oder fehlende Werte.
- Tiefenbereich größtenteils ≤10 m (mit einigen größeren Distanzen).
- Trägt 74.619 Bilder (68.242 Train / 6.377 Val) zur Ultralytics Tiefentrainingsmischung bei.
Datensatzstruktur#
Der Hypersim-Tiefendatensatz ist in zwei Teilmengen unterteilt:
- Train: 68.242 Bilder mit zugehörigen dichten Tiefenkarten für das Training.
- Val: 6.377 Bilder mit zugehörigen dichten Tiefenkarten für die Validierung während des Trainings.
Jedes RGB-Bild ist mit einer .npy float32 Tiefenkarte gekoppelt, die die Entfernungen pro Pixel in Metern speichert, gemäß dem Ultralytics depth dataset format.
Daten abrufen#
Hypersim verfügt über keinen automatischen Download – der Datensatz (~1.9 TB an SZ-Zips pro Szene) wird von Apple unter der CC BY-SA 3.0-Lizenz vertrieben und mit dem offiziellen Skript aus dem ml-hypersim-Repository heruntergeladen (ein selektiver Downloader ist in contrib/99991 verfügbar):
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-Frames sind die frame.*.tonemap.jpg-Vorschaubilder und die Tiefe befindet sich in frame.*.depth_meters.hdf5. Die gespeicherten Werte sind Strahlentfernungen zum Kamerazentrum, nicht planare Tiefe – konvertiere diese vor dem Speichern und bilde die NaN-Pixel (Fenster, Himmel) auf 0 (ungültig) ab. Verwende den offiziellen metadata_images_split_scene_v1.csv-Szenensplit für die Trainings-/Validierungszuweisung. Referenzkonvertierung in das Ultralytics depth dataset format:
import shutil
from pathlib import Path
import h5py
import numpy as np
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}"
np.save(dst / f"depth/{out}/{name}.npy", depth)
shutil.copy(rgb, dst / f"images/{out}/{name}.jpg")Rolle bei YOLO26-Depth#
Hypersim ist eine der Trainingsquellen in der breiten Multi-Datensatz-Mischung (~2,19 Mio. Bilder), die zum Vortrainieren der Ultralytics YOLO26-Depth-Modelle verwendet wird. Innerhalb dieser Mischung liefert Hypersim saubere, dichte Innenraumgeometrie, die rauschigere Sensordaten aus der realen Welt ergänzt.
Es gibt in diesem Setup keinen eigenständigen, unabhängigen Hypersim-Benchmark. Stattdessen werden die resultierenden Modelle anhand der Standard-Benchmarks für monokulare Tiefe evaluiert: NYU Depth V2, KITTI, Make3D, ETH3D und iBims-1.
Datensatz-YAML#
Eine YAML (Yet Another Markup Language)-Datei wird verwendet, um die Datensatzkonfiguration zu definieren. Sie enthält Informationen über die Pfade des Datensatzes, Klassen und andere relevante Informationen. Für Hypersim definiert die depth-hypersim.yaml-Datei die Pfade und die einzelne depth-Klasse.
# 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 *.npy, float32 meters (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: 3Verwendung#
Um ein YOLO26n-Depth-Modell auf dem Hypersim-Datensatz mit einer Bildgröße von 640 zu trainieren, kannst du die folgenden Code-Snippets verwenden. Eine umfassende Liste der verfügbaren Argumente findest du auf der Training-Seite des Modells.
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)Vortrainierte Modelle#
Die YOLO26-Tiefenfamilie (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) wird automatisch von den Ultralytics-Releases heruntergeladen und auf dem breiten Multi-Dataset-Mix trainiert, zu dem auch Hypersim gehört. Entdecke YOLO26x-depth auf der Ultralytics Platform.
Zitate und Danksagungen#
Wenn du den Hypersim-Datensatz in deiner Forschung oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Paper:
@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}
}Wir möchten den Entwicklern von Hypersim dafür danken, dass sie diesen fotorealistischen synthetischen Innenraumdatensatz der Computer-Vision-Community zur Verfügung gestellt haben.