Hypersim-Tiefendatensatz#
Hypersim ist ein fotorealistischer synthetischer Datensatz mit Innenraumszenen, der für ein umfassendes Verständnis von Innenraumszenen entwickelt wurde. Die Bilder werden per Raytracing aus professionell erstellten 3D-Innenräumen von Evermotion erzeugt. So entstehen hochrealistische Renderings mit perfekten, dichten Tiefen-Ground-Truth-Daten für jedes Pixel.
Da Hypersim vollständig synthetisch ist, hat jedes Pixel einen exakten Tiefenwert ohne Sensorrauschen, fehlende Messwerte oder Messartefakte. Damit ist der Datensatz eine hervorragende Quelle sauberer, dichter Innenraumgeometrie für das Training monokularer Tiefenschätzungsmodelle.
Wichtige Funktionen#
- Fotorealistische synthetische Innenraumszenen, per Raytracing aus professionellen 3D-Innenräumen von Evermotion erzeugt.
- Ausschließlich Innenräume.
- Dichte, perfekte Tiefen-Ground-Truth-Daten für jedes Pixel, ohne Sensorrauschen oder fehlende Werte.
- Der Tiefenbereich liegt überwiegend bei ≤10 m (mit einigen größeren Entfernungen).
- Liefert 74.619 Bilder (68.242 Training / 6.377 Validierung) für die Tiefen-Trainingsmischung von Ultralytics.
Datensatzstruktur#
Der Hypersim-Tiefendatensatz ist in zwei Teilmengen unterteilt:
- Training: 68.242 Bilder mit zugehörigen dichten Tiefenkarten für das Training.
- Validierung: 6.377 Bilder mit zugehörigen dichten Tiefenkarten zur Validierung während des Trainings.
Jedem RGB-Bild ist eine skalierte uint16-Tiefen-PNG-Datei zugeordnet, entsprechend dem Ultralytics-Format für Tiefendatensätze.
Daten beschaffen#
Hypersim kann nicht automatisch heruntergeladen werden – der Datensatz (~1,9 TB an ZIP-Dateien für einzelne Szenen) wird von Apple unter der CC-BY-SA-3.0-Lizenz bereitgestellt und mit dem offiziellen Skript aus dem ml-hypersim-Repository heruntergeladen (ein selektiver Downloader ist unter 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-Bilder liegen in den Vorschauen frame.*.tonemap.jpg und Tiefendaten unter frame.*.depth_meters.hdf5. Bei den gespeicherten Werten handelt es sich um Entfernungen entlang des Sehstrahls zum Kamerazentrum, nicht um die planare Tiefe – wandle sie vor dem Speichern um und setze NaN-Pixel (Fenster, Himmel) auf 0 (ungültig). Verwende für die Zuweisung zu Training und Validierung die offizielle Szenenaufteilung metadata_images_split_scene_v1.csv. Referenzkonvertierung in das Ultralytics-Format für Tiefendatensätze:
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")Rolle in YOLO26-Depth#
Hypersim ist eine der Trainingsquellen in der umfangreichen Mischung aus mehreren Datensätzen (~2,19 Mio. Bilder), mit der die Ultralytics-YOLO26-Depth-Modelle vortrainiert werden. In dieser Mischung steuert Hypersim saubere, dichte Innenraumgeometrie bei, die die verrauschteren Sensordaten aus der realen Welt ergänzt.
In diesem Setup gibt es keinen eigenständigen Hypersim-Benchmark mit zurückgehaltenen Daten. Stattdessen werden die resultierenden Modelle anhand der standardmäßigen Benchmarks für monokulare Tiefenschätzung evaluiert: NYU Depth V2, KITTI, Make3D, ETH3D und iBims-1.
YAML-Datei des Datensatzes#
Zur Definition der Datensatzkonfiguration wird eine YAML-Datei verwendet. Sie enthält Informationen zu den Pfaden, Klassen und weiteren relevanten Aspekten des Datensatzes. Für Hypersim legt die Datei depth-hypersim.yaml die Pfade und die einzelne Klasse depth fest.
# 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: 3Verwendung#
Um ein YOLO26n-Depth-Modell mit einer Bildgröße von 640 auf dem Hypersim-Datensatz zu trainieren, kannst du die folgenden Codebeispiele verwenden. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite zum Modell-Training.
from ultralytics import YOLO
# Ein Modell laden
model = YOLO("yolo26n-depth.pt") # ein vortrainiertes Modell laden (für das Training empfohlen)
# Das Modell trainieren
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 aus den Ultralytics-Releases heruntergeladen und mit der umfangreichen Mischung aus mehreren Datensätzen trainiert, zu der 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 die folgende Veröffentlichung:
@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 Erstellern von Hypersim dafür danken, dass sie diesen fotorealistischen synthetischen Innenraumdatensatz der Computer-Vision-Community zur Verfügung stellen.
Häufig gestellte Fragen#
Hypersim ist ein fotorealistischer synthetischer Innenraumdatensatz von Apple, der per Raytracing aus professionellen 3D-Innenräumen von Evermotion erzeugt wurde. Da jedes Pixel einen exakten Tiefenwert ohne Sensorrauschen oder fehlende Messwerte hat, liefern die 74.619 Bilder (68.242 Training, 6.377 Validierung) saubere, dichte Innenraumgeometrie, die die verrauschteren Sensordaten aus der realen Welt in der YOLO26-Depth-Trainingsmischung ergänzt.
Hypersim kann nicht automatisch heruntergeladen werden. Lade die Szenen (~1,9 TB) mit dem offiziellen Skript aus dem ml-hypersim-Repository herunter und konvertiere dann die Entfernungen entlang des Sehstrahls in
depth_meters.hdf5in planare Tiefe. Speichere mit dem Skript unter Daten abrufen PNG-Dateien in Millimetern. Setze NaN-Pixel wie Fenster und Himmel auf0, damit sie als ungültig behandelt werden.Führe
yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt epochs=100 imgsz=640aus oder verwende das Python-Beispiel im Abschnitt Verwendung. Auf der Seite zum Training findest du alle verfügbaren Argumente.