Ultralytics YOLO27:

Conjunto de datos de profundidad Hypersim#

Hypersim es un conjunto de datos sintético fotorrealista de escenas de interior diseñado para la comprensión holística de escenas interiores. Sus imágenes se generan mediante trazado de rayos a partir de interiores 3D de Evermotion creados por profesionales, lo que produce representaciones muy realistas emparejadas con una verdad fundamental de profundidad densa y perfecta por píxel.

Como Hypersim es completamente sintético, cada píxel tiene un valor de profundidad exacto, sin ruido del sensor, retornos ausentes ni artefactos de medición. Esto lo convierte en una fuente excelente de geometría interior limpia y densa para entrenar modelos de estimación de profundidad monocular.

Características principales#

  • Escenas interiores sintéticas fotorrealistas, generadas mediante trazado de rayos a partir de interiores 3D profesionales de Evermotion.
  • Solo entornos de interior.
  • Verdad fundamental de profundidad densa y perfecta por píxel, sin ruido del sensor ni valores ausentes.
  • Rango de profundidad principalmente ≤10 m (con algunas distancias mayores).
  • Aporta 74,619 imágenes (68,242 de entrenamiento / 6,377 de validación) a la combinación de datos de entrenamiento de profundidad de Ultralytics.

Estructura del dataset#

El conjunto de datos de profundidad Hypersim se divide en dos subconjuntos:

  1. Entrenamiento: 68,242 imágenes con mapas de profundidad densos emparejados para el entrenamiento.
  2. Validación: 6,377 imágenes con mapas de profundidad densos emparejados para la validación durante el entrenamiento.

Cada imagen RGB se empareja con un PNG de profundidad uint16 escalado, siguiendo el formato de conjunto de datos de profundidad de Ultralytics.

Obtén los datos#

Hypersim no admite la descarga automática: el conjunto de datos (~1.9 TB de archivos ZIP por escena) lo distribuye Apple bajo la licencia CC BY-SA 3.0 y se descarga mediante el script oficial del repositorio ml-hypersim (hay disponible un descargador selectivo en 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

Los fotogramas RGB son las vistas previas de frame.*.tonemap.jpg y la profundidad se encuentra en frame.*.depth_meters.hdf5. Los valores almacenados son distancias de trazado de rayos hasta el centro de la cámara, no profundidad planar; conviértelos antes de guardarlos y asigna los píxeles NaN (ventanas, cielo) a 0 (no válidos). Usa la división de escenas oficial de metadata_images_split_scene_v1.csv para asignar entrenamiento/validación. Conversión de referencia al formato de conjunto de datos de profundidad de 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")

Papel en YOLO26-Depth#

Hypersim es una de las fuentes de entrenamiento de la amplia combinación de múltiples conjuntos de datos (~2.19M de imágenes) utilizada para preentrenar los modelos YOLO26-Depth de Ultralytics. En esta combinación, Hypersim aporta geometría interior limpia y densa que complementa los datos de sensores del mundo real, más ruidosos.

En esta configuración no existe ningún benchmark independiente de Hypersim con datos reservados. En su lugar, los modelos resultantes se evalúan en los benchmarks monoculares de profundidad estándar: NYU Depth V2, KITTI, Make3D, ETH3D e iBims-1.

YAML del dataset#

Se utiliza un archivo YAML para definir la configuración del conjunto de datos. Contiene información sobre las rutas, las clases y otra información relevante del conjunto de datos. Para Hypersim, el archivo depth-hypersim.yaml define las rutas y la única clase 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

Uso#

Para entrenar un modelo YOLO26n-Depth en el conjunto de datos Hypersim con un tamaño de imagen de 640, puedes utilizar los siguientes fragmentos de código. Para consultar una lista completa de los argumentos disponibles, visita la página de Entrenamiento del modelo.

Ejemplo de entrenamiento
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)

Modelos preentrenados#

La familia de profundidad YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) se descarga automáticamente desde las versiones de Ultralytics y se entrena con la amplia combinación de múltiples conjuntos de datos de la que forma parte Hypersim. Explora YOLO26x-depth en Ultralytics Platform.

Citas y agradecimientos#

Si utilizas el conjunto de datos Hypersim en tu trabajo de investigación o desarrollo, cita el siguiente artículo:

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

Queremos reconocer a los creadores de Hypersim por poner este conjunto de datos sintético fotorrealista de interiores a disposición de la comunidad de visión por computador.

Preguntas frecuentes#

  • Hypersim es un conjunto de datos sintético de interiores fotorrealista de Apple, trazado mediante rayos a partir de interiores 3D profesionales de Evermotion. Debido a que cada pixel tiene un valor de profundidad exacto sin ruido de sensor ni retornos perdidos, sus 74 619 imágenes (68 242 de entrenamiento, 6377 de validación) proporcionan una geometría interior limpia y densa que complementa los datos de sensores del mundo real más ruidosos en la mezcla de entrenamiento de YOLO26-Depth.

  • Hypersim no tiene una descarga automática. Obtén las escenas (~1.9 TB) con el script oficial del repositorio de ml-hypersim, luego convierte las distancias de rayos de depth_meters.hdf5 a profundidad planar y escribe PNGs en milímetros con el script en Obtener los datos. Asigna los pixeles NaN como ventanas y cielo a 0 para que se traten como no válidos.

  • Ejecuta yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt epochs=100 imgsz=640, o utiliza el ejemplo de Python en la sección Uso. La página Entrenamiento enumera todos los argumentos disponibles.

Comentarios