Ultralytics YOLO27:

Dataset di profondità Hypersim#

Hypersim è un dataset sintetico fotorealistico di ambienti interni, progettato per la comprensione olistica delle scene indoor. Le sue immagini sono generate con ray tracing a partire da interni 3D Evermotion creati da professionisti, producendo rendering estremamente realistici associati a etichette di verità fondamentale della profondità perfette e dense per ogni pixel.

Essendo completamente sintetico, Hypersim assegna a ogni pixel un valore di profondità esatto, senza rumore del sensore, misurazioni mancanti o artefatti di rilevamento. Questo lo rende un'ottima fonte di geometria indoor pulita e densa per addestrare modelli di stima della profondità monoculare.

Funzionalità principali#

  • Scene indoor sintetiche fotorealistiche, generate con ray tracing a partire da interni 3D Evermotion professionali.
  • Solo ambienti interni.
  • Etichette di verità fondamentale della profondità per ogni pixel dense e perfette, senza rumore del sensore né valori mancanti.
  • Intervallo di profondità prevalentemente ≤10 m (con alcune distanze maggiori).
  • Aggiunge 74,619 immagini (68,242 per l'addestramento / 6,377 per la convalida) alla miscela di addestramento della profondità di Ultralytics.

Struttura del dataset#

Il dataset di profondità Hypersim è suddiviso in due sottoinsiemi:

  1. Train: 68,242 immagini associate a mappe di profondità dense per l'addestramento.
  2. Val: 6,377 immagini associate a mappe di profondità dense per la convalida durante l'addestramento.

Ogni immagine RGB è associata a un PNG di profondità uint16 con valori scalati, secondo il formato dei dataset di profondità di Ultralytics.

Recuperare i dati#

Hypersim non prevede il download automatico: il dataset (~1.9 TB di archivi ZIP per scena) è distribuito da Apple con licenza CC BY-SA 3.0 e si scarica tramite lo script ufficiale del 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 ./scenes

I frame RGB sono le anteprime frame.*.tonemap.jpg, mentre la profondità si trova in frame.*.depth_meters.hdf5. I valori memorizzati sono distanze con ray tracing dal centro della fotocamera, non profondità planare: convertile prima di salvarle e imposta a 0 i pixel NaN (finestre, cielo), indicandoli come non validi. Usa la suddivisione ufficiale delle scene metadata_images_split_scene_v1.csv per assegnare i dati ai set train/val. Conversione di riferimento al formato dei dataset di profondità di 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 addestramento della vasta miscela multi-dataset (~2.19M immagini) utilizzata per preaddestrare i modelli Ultralytics YOLO26-Depth. All'interno di questa miscela, Hypersim fornisce geometria indoor pulita e densa, complementare ai dati più rumorosi dei sensori del mondo reale.

In questa configurazione non esiste un benchmark Hypersim separato con dati esclusi dall'addestramento. 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#

Per definire la configurazione del dataset si utilizza un file YAML. Il file contiene informazioni sui percorsi del dataset, sulle classi e su altri dettagli pertinenti. Per Hypersim, il file depth-hypersim.yaml definisce i percorsi e l'unica classe depth.

ultralytics/cfg/datasets/depth-hypersim.yaml
# 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

Utilizzo#

Per addestrare un modello YOLO26n-Depth sul dataset Hypersim con una dimensione dell'immagine di 640, puoi usare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, consulta la pagina Addestramento del modello.

Esempio di addestramento
from ultralytics import YOLO

# Carica un modello
model = YOLO("yolo26n-depth.pt")  # carica un modello preaddestrato (consigliato per l'addestramento)

# Addestra il modello
results = model.train(data="depth-hypersim.yaml", epochs=100, imgsz=640)

Modelli preaddestrati#

La famiglia YOLO26 depth (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) viene scaricata automaticamente dalle release di Ultralytics ed è addestrata sulla vasta miscela multi-dataset di cui Hypersim fa parte. Esplora YOLO26x-depth sulla Ultralytics Platform.

Citazioni e ringraziamenti#

Se utilizzi il dataset Hypersim nelle tue attività di ricerca o sviluppo, cita il seguente articolo:

Citazione
@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}
}

Ringraziamo i creatori di Hypersim per aver messo questo dataset sintetico fotorealistico di ambienti interni a disposizione della comunità della visione artificiale.

Domande frequenti#

  • Hypersim è un dataset sintetico fotorealistico di ambienti interni di Apple, generato con ray tracing a partire da interni 3D Evermotion professionali. Poiché ogni pixel ha un valore di profondità esatto, senza rumore del sensore né misurazioni mancanti, le sue 74,619 immagini (68,242 per l'addestramento, 6,377 per la convalida) forniscono geometria indoor pulita e densa, complementare ai dati più rumorosi dei sensori del mondo reale nella miscela di addestramento di YOLO26-Depth.

  • Hypersim non prevede il download automatico. Scarica le scene (~1.9 TB) con lo script ufficiale del repository ml-hypersim, poi converti le distanze con ray tracing depth_meters.hdf5 in profondità planare e genera PNG in millimetri con lo script in Ottieni i dati. Imposta a 0 i pixel NaN, ad esempio quelli di finestre e cielo, in 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 tutti gli argomenti disponibili.

Commenti