Hypersim-Tiefendatensatz#
Hypersim ist ein fotorealistischer synthetischer Datensatz mit Innenraumszenen, der für ein ganzheitliches Verständnis von Innenraumszenen entwickelt wurde. Die Bilder werden aus professionell erstellten 3D-Innenräumen von Evermotion per Raytracing erzeugt und liefern äußerst realistische Renderings mit perfekten, dichten Tiefenreferenzwerten für jedes Pixel.
Da Hypersim vollständig synthetisch ist, besitzt jedes Pixel einen exakten Tiefenwert – ohne Sensorrauschen, fehlende Rückgabewerte oder Messartefakte. Dadurch eignet sich der Datensatz hervorragend als Quelle für saubere, dichte Geometriedaten von Innenräumen zum Trainieren monokularer Modelle zur Tiefenschätzung.
Wichtige Funktionen#
- Fotorealistische synthetische Innenraumszenen, per Raytracing aus professionellen 3D-Innenräumen von Evermotion erzeugt.
- Ausschließlich Innenräume.
- Dichte, perfekte Tiefenreferenzwerte für jedes Pixel ohne Sensorrauschen oder fehlende Werte.
- Tiefenbereich überwiegend ≤10 m (teilweise größere Entfernungen).
- Trägt 74.619 Bilder (68.242 Training / 6.377 Validierung) zum Tiefentrainingsmix von Ultralytics bei.
Datensatzstruktur#
Der Hypersim-Tiefendatensatz ist in zwei Teilmengen unterteilt:
- Training: 68.242 Bilder mit zugehörigen dichten Tiefenkarten zum Trainieren.
- 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 Format der Ultralytics-Tiefendatensätze.
Daten abrufen#
Hypersim wird nicht automatisch heruntergeladen – der Datensatz (~1,9 TB an ZIP-Dateien pro Szene) 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 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-Bilder sind die frame.*.tonemap.jpg-Vorschaubilder, und die Tiefendaten befinden sich in frame.*.depth_meters.hdf5. Die gespeicherten Werte sind Strahlentfernungen zum Kameramittelpunkt, keine ebene Tiefe – wandle sie vor dem Speichern um und setze die NaN-Pixel (Fenster, Himmel) auf 0 (ungültig). Verwende die offizielle Szenenaufteilung metadata_images_split_scene_v1.csv für die Zuordnung zu Training und Validierung. Eine Referenzumwandlung in das Format der Ultralytics-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 im umfangreichen Mix aus mehreren Datensätzen (~2,19 Mio. Bilder), der zum Vortrainieren der Ultralytics YOLO26-Depth-Modelle verwendet wird. In diesem Mix liefert Hypersim saubere, dichte Geometriedaten von Innenräumen, die die verrauschteren Sensordaten aus der realen Welt ergänzen.
In dieser Konfiguration gibt es keinen eigenständigen zurückgehaltenen Hypersim-Benchmark. Stattdessen werden die resultierenden Modelle anhand der Standardbenchmarks für monokulare Tiefenschätzung evaluiert: NYU Depth V2, KITTI, Make3D, ETH3D und iBims-1.
Dataset-YAML#
Eine YAML-Datei wird verwendet, um die Datensatzkonfiguration zu definieren. Sie enthält Informationen zu den Pfaden, Klassen und weiteren relevanten Informationen des Datensatzes. 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 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 Codeausschnitte verwenden. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite Training 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-Depth-Modellfamilie (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) wird automatisch aus den Ultralytics-Releases heruntergeladen und auf dem umfangreichen Mix aus mehreren Datensätzen trainiert, zu dem Hypersim gehört. Entdecke YOLO26x-depth auf der Ultralytics Platform.
Zitate und Danksagungen#
Wenn du den Hypersim-Datensatz für deine Forschungs- 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 Entwicklern von Hypersim dafür danken, dass sie diesen fotorealistischen synthetischen Datensatz mit Innenraumszenen der Computer-Vision-Community zur Verfügung stellen.
FAQ#
Hypersim ist ein fotorealistischer, synthetischer Innendatensatz von Apple, der mittels Raytracing aus professionellen Evermotion-3D-Innenräumen gerendert wurde. Da jedes Pixel einen exakten Tiefenwert ohne Sensorrauschen oder fehlende Rückgabewerte aufweist, liefern die 74.619 Bilder (68.242 für das Training, 6.377 für die Validierung) eine saubere, dichte Raumgeometrie, die die rauschenbehafteteren realen Sensordaten im Trainingsmix von YOLO26-Depth ergänzt.
Hypersim verfügt über keinen automatischen Download. Rufe die Szenen (~1,9 TB) mit dem offiziellen Skript aus dem ml-hypersim repository ab, konvertiere dann die
depth_meters.hdf5-Strahlentfernungen in planare Tiefen und schreibe Millimeter-PNGs mit dem Skript unter Obtain the Data. Mappe NaN-Pixel wie Fenster und Himmel auf0, damit sie als ungültig behandelt werden.