Dataset di profondità Hypersim#
Hypersim è un dataset sintetico fotorealistico di scene interne progettato per una comprensione olistica delle scene interne. Le sue immagini sono ottenute tramite ray tracing da interni 3D Evermotion creati professionalmente, producendo rendering altamente realistici abbinati a ground truth di profondità densa e perfetta per ogni pixel.
Poiché Hypersim è completamente sintetico, ogni pixel ha un valore di profondità esatto, senza rumore del sensore, ritorni mancanti o artefatti di misurazione. Questo lo rende un'eccellente fonte di geometria interna pulita e densa per l'addestramento di modelli di stima della profondità monoculare.
Funzionalità principali#
- Scene interne sintetiche fotorealistiche, ottenute tramite ray tracing da interni 3D Evermotion professionali.
- Solo ambienti interni.
- Ground truth di profondità per ogni pixel densa e perfetta, senza rumore del sensore né valori mancanti.
- Intervallo di profondità principalmente ≤10 m (con alcune distanze maggiori).
- Apporta 74.619 immagini (68.242 per il training / 6.377 per la validazione) al mix di training della profondità di Ultralytics.
Struttura del dataset#
Il dataset di profondità Hypersim è suddiviso in due subset:
- Train: 68.242 immagini con mappe di profondità dense abbinate per il training.
- Val: 6.377 immagini con mappe di profondità dense abbinate per la validazione durante il training.
Ogni immagine RGB è abbinata a un PNG di profondità uint16 scalato, secondo il formato del dataset di profondità Ultralytics.
Ottenere i dati#
Hypersim non supporta il download automatico: il dataset (~1,9 TB di file ZIP per scena) è distribuito da Apple secondo la licenza CC BY-SA 3.0 e scaricato con lo script ufficiale dal repository ml-hypersim (è disponibile un downloader selettivo in 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 ./scenesI frame RGB sono le anteprime frame.*.tonemap.jpg e la profondità si trova in frame.*.depth_meters.hdf5. I valori memorizzati sono distanze lungo il raggio dal centro della fotocamera, non profondità planare: converti i valori prima del salvataggio e mappa a 0 i pixel NaN (finestre, cielo) (non validi). Usa la suddivisione delle scene ufficiale metadata_images_split_scene_v1.csv per assegnare train/val. Conversione di riferimento al formato del dataset di profondità 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")Ruolo in YOLO26-Depth#
Hypersim è una delle fonti di training nel vasto mix multi-dataset (~2,19 milioni di immagini) utilizzato per il pretraining dei modelli Ultralytics YOLO26-Depth. All'interno di questo mix, Hypersim fornisce geometria interna pulita e densa che integra dati più rumorosi provenienti da sensori del mondo reale.
In questa configurazione non esiste un benchmark Hypersim standalone con dati tenuti da parte. I modelli risultanti vengono invece valutati sui benchmark standard per la profondità monoculare: NYU Depth V2, KITTI, Make3D, ETH3D e iBims-1.
YAML del dataset#
Un file YAML viene utilizzato per definire la configurazione del dataset. Contiene informazioni sui percorsi del dataset, sulle classi e altre informazioni rilevanti. Per Hypersim, il file depth-hypersim.yaml definisce i percorsi e la singola classe 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: 3Utilizzo#
Per addestrare un modello YOLO26n-Depth sul dataset Hypersim con una dimensione delle immagini di 640, puoi utilizzare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, consulta la pagina di Training del modello.
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)Modelli pre-addestrati#
La famiglia di modelli di profondità YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) esegue il download automatico dalle release di Ultralytics ed è addestrata sul vasto mix multi-dataset di cui fa parte Hypersim. Esplora YOLO26x-depth su Ultralytics Platform.
Citazioni e ringraziamenti#
Se utilizzi il dataset Hypersim nelle tue attività di ricerca o sviluppo, cita il seguente articolo:
@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}
}Desideriamo ringraziare i creatori di Hypersim per aver reso disponibile alla comunità della computer vision questo dataset sintetico fotorealistico di ambienti interni.
FAQ#
Hypersim è un dataset di interni sintetico fotorealistico di Apple, tracciato a raggi da interni 3D professionali Evermotion. Poiché ogni pixel ha un valore di profondità esatto senza rumore del sensore o ritorni mancanti, le sue 74.619 immagini (68.242 di addestramento, 6.377 di convalida) forniscono una geometria di interni pulita e densa che integra i dati dei sensori del mondo reale più rumorosi nel mix di addestramento di YOLO26-Depth.
Hypersim non ha il download automatico. Recupera le scene (~1,9 TB) con lo script ufficiale dal repository ml-hypersim, quindi converti le distanze dei raggi di
depth_meters.hdf5in profondità planare e scrivi PNG in millimetri con lo script in Ottieni i dati. Mappa i pixel NaN come finestre e cielo su0in modo che vengano trattati come non validi.Esegui
yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt epochs=100 imgsz=640, oppure usa l'esempio Python nella sezione Utilizzo. La pagina Addestramento elenca ogni argomento disponibile.