Ultralytics YOLO27:

Conjunto de datos de profundidad Hypersim#

Hypersim es un conjunto de datos sintético fotorrealista de escenas interiores, diseñado para la comprensión integral de escenas de interior. Sus imágenes se generan mediante trazado de rayos a partir de interiores 3D de Evermotion creados por profesionales, lo que produce renderizados muy realistas junto con datos de referencia de profundidad densos y perfectos en cada píxel.

Como Hypersim es totalmente 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.
  • Datos de referencia densos y perfectos de profundidad en cada 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 para entrenamiento y 6,377 para validación) a la mezcla de entrenamiento de profundidad de Ultralytics.

Estructura del conjunto de datos#

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

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

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

Obtén los datos#

Hypersim no se descarga automáticamente: Apple distribuye el conjunto de datos (~1.9 TB de archivos ZIP por escena) con la licencia CC BY-SA 3.0, y se descarga mediante el script oficial del repositorio ml-hypersim (hay un descargador selectivo disponible 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 frame.*.tonemap.jpg y la profundidad está en frame.*.depth_meters.hdf5. Los valores almacenados son distancias de rayos al centro de la cámara, no profundidades planas: conviértelos antes de guardarlos y asigna 0 a los píxeles NaN (ventanas, cielo) para marcarlos como no válidos. Usa la partición oficial de escenas metadata_images_split_scene_v1.csv para asignar los datos a entrenamiento y 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 de YOLO26-Depth#

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

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

YAML del conjunto de datos#

Se utiliza un archivo YAML para definir la configuración del conjunto de datos. Contiene información sobre las rutas, las clases y otros datos relevantes. En 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 con el conjunto de datos Hypersim y un tamaño de imagen de 640, puedes usar los siguientes fragmentos de código. Consulta la página de Entrenamiento del modelo para ver la lista completa de argumentos disponibles.

Ejemplo de entrenamiento
from ultralytics import YOLO

# Cargar un modelo
model = YOLO("yolo26n-depth.pt")  # Carga un modelo preentrenado (recomendado para el entrenamiento)

# Entrenar el modelo
results = model.train(data="depth-hypersim.yaml", epochs=100, imgsz=640)

Modelos preentrenados#

La familia de modelos 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 mezcla de varios 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 investigación o trabajo de 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 agradecer a los creadores de Hypersim que hayan puesto este conjunto de datos sintético fotorrealista de interiores a disposición de la comunidad de visión artificial.

Preguntas frecuentes#

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

  • Hypersim no se descarga automáticamente. Descarga las escenas (~1.9 TB) con el script oficial del repositorio ml-hypersim y, después, convierte las distancias de rayos depth_meters.hdf5 en profundidad plana y genera PNG en milímetros con el script de Obtención de los datos. Asigna 0 a los píxeles NaN, como los de las ventanas y el cielo, 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 usa el ejemplo de Python de la sección Uso. La página de Entrenamiento enumera todos los argumentos disponibles.

Comentarios