Ultralytics YOLO27:

Descripción general de los conjuntos de datos de estimación de profundidad#

La estimación monocular de profundidad asigna un valor de profundidad en metros a cada píxel de una imagen. Los valores objetivo de profundidad utilizan PNG en escala de grises de 16 bits escalados o matrices NPY de coma flotante en metros.

Esta guía explica el formato de conjunto de datos utilizado por los modelos de estimación de profundidad de Ultralytics YOLO y enumera las configuraciones de conjuntos de datos integradas disponibles para el entrenamiento y la validación.

Formato de conjunto de datos compatible#

Formato del mapa de profundidad#

Cada muestra de entrenamiento consta de una imagen RGB y un archivo de profundidad asociado. Los valores PNG se dividen entre el depth_scale opcional a nivel de conjunto de datos para obtener metros. El valor predeterminado es 1000, por lo que un valor de 1500 representa 1.5 metros. El código 0 indica que no es válido; los PNG no necesitan metadatos incrustados.

  • Los archivos de profundidad utilizan .png (preferido) o .npy. Los mapas PNG deben ser imágenes 2D en escala de grises uint16. Las matrices NPY deben ser 2D y de coma flotante, con valores en metros.
  • Establece depth_scale solo cuando los PNG no utilicen la convención predeterminada de milímetros. Por ejemplo, KITTI utiliza 256 y Virtual KITTI 2 utiliza 100.
  • Cada archivo de profundidad debe tener el mismo nombre base que su archivo de imagen correspondiente (por ejemplo, scene_001.png se empareja con scene_001.jpg).
  • Los mapas de profundidad pueden ser más pequeños que sus imágenes RGB siempre que coincida la relación de aspecto; el entrenamiento cambia su tamaño en memoria.
  • El cargador del conjunto de datos encuentra los archivos de profundidad sustituyendo el componente de directorio images por depth, dando preferencia a .png y recurriendo a .npy como alternativa.
  • Los píxeles con profundidad ≤ 0 se tratan como no válidos y se excluyen del cálculo de la pérdida y de las métricas.

Como el código 0 está reservado para los píxeles no válidos, un PNG uint16 proporciona 65.535 valores de profundidad positivos. La escala controla tanto la precisión como el rango:

Convencióndepth_scaleResoluciónProfundidad máxima
Predeterminada / ARKitScenes10001 mm65.535 m
KITTI2563.90625 mm255.99609375 m
Virtual KITTI 21001 cm655.35 m

Estos son límites de almacenamiento, no límites de entrenamiento recomendados. Un conjunto de datos puede establecer de forma independiente un max_depth menor para calibrar la pérdida o realizar la evaluación.

La estructura estándar mantiene las imágenes y los mapas de profundidad en carpetas paralelas:

dataset/
├── images/
│   ├── train/
│   └── val/
└── depth/
    ├── train/
    └── val/

Por ejemplo, una imagen en images/train/scene_001.jpg se empareja con un mapa de profundidad en depth/train/scene_001.png.

Formato YAML del conjunto de datos#

Los conjuntos de datos de estimación de profundidad se configuran con archivos YAML. Los campos principales son:

ClaveDescripción
pathDirectorio raíz del conjunto de datos.
trainRuta de las imágenes de entrenamiento relativa a path o una ruta absoluta.
valRuta de las imágenes de validación relativa a path o una ruta absoluta.
testRuta opcional de las imágenes de prueba.
ncNúmero de clases: siempre 1 para la estimación de profundidad.
namesAsignación de nombres de clase: siempre {0: depth}.
depth_scaleUnidades PNG opcionales por metro; el valor predeterminado es 1000.
ultralytics/cfg/datasets/nyu-depth.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~fergus/datasets/nyu_depth_v2.html
# 795 train + 654 val (Eigen test split) images, 480x640, indoor scenes, depth in meters
# Example usage: yolo depth train data=nyu-depth.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── nyu-depth-png  ← downloads here (≈1.5 GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: nyu-depth-png # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 795 images
val: images/val # val images (relative to 'path') 654 images

# Depth maps are paired uint16 millimeter PNGs under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.

# Classes
nc: 1
names:
  0: depth

channels: 3
depth_scale: 1000

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth-png.zip

Uso#

Entrena un modelo de estimación de profundidad YOLO26 con Python o la CLI:

Ejemplo
from ultralytics import YOLO

# Load a pretrained depth model
model = YOLO("yolo26n-depth.pt")

# Train on the NYU Depth V2 dataset
results = model.train(data="nyu-depth.yaml", epochs=100, imgsz=640)

Conjuntos de datos compatibles#

Los modelos de profundidad de YOLO26 están preentrenados en una amplia combinación de múltiples conjuntos de datos (~2.19M de imágenes) que abarcan rangos de interiores (≤10 m) a exteriores (~80 m), y luego se evalúan en cinco puntos de referencia, de forma zero-shot en todos excepto en KITTI Eigen. Cada conjunto de datos tiene una página dedicada, y varios están alojados en Ultralytics Platform para su exploración y entrenamiento en la nube.

Depuración

  • Depth8 — 8 imágenes SUN RGB-D en un archivo de 1,3 MB que se descarga automáticamente, para probar rápidamente la canalización

Fuentes de preentrenamiento

  • ARKitScenes — interior real, LiDAR de Apple ARKit (la mayor fuente real)
  • SUN RGB-D — interior real, RGB-D multisensor
  • DIODE — interior y exterior reales, datos de referencia densos de escáner láser
  • Hypersim — interior sintético fotorrealista
  • TartanAir — sintético, entornos diversos
  • Virtual KITTI 2 — conducción exterior sintética
  • KITTI — conducción exterior real, LiDAR de Velodyne (también un benchmark de evaluación)
  • ImageNet (con etiquetas pseudoanotadas) — conjunto de destilación con etiquetas pseudoanotadas, la mayor fuente individual

Benchmarks de evaluación

  • NYU Depth V2 — benchmark principal de interiores
  • KITTI Eigen — benchmark de conducción exterior
  • ETH3D — interior y exterior de alta precisión
  • Make3D — exterior, fuera de distribución
  • iBims-1 — interior de alta calidad (bordes y superficies planas)

La precisión de cada modelo en estos benchmarks y los pesos preentrenados descargables se indican en la página de la tarea de estimación de profundidad. Un YAML de conjunto de datos cuyo campo train enumera varios directorios de imágenes combina estas fuentes para realizar un entrenamiento mixto a gran escala.

Añadir tu propio conjunto de datos#

  1. Guarda las imágenes RGB en carpetas de partición como images/train y images/val.
  2. Guarda un PNG o NPY de profundidad por imagen en las carpetas depth/train y depth/val correspondientes, utilizando el mismo nombre base que la imagen. Usa save_depth_png() para convertir matrices en metros en PNG compactos en milímetros.
  3. Asegúrate de que los valores de profundidad decodificados estén en metros y de que los píxeles no válidos o ausentes utilicen 0 o valores negativos.
  4. Crea un YAML del conjunto de datos con path, train, val, nc: 1 y names: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val

nc: 1
names:
    0: depth

# Optional: PNG integer units per meter (default 1000)
depth_scale: 1000

Preguntas frecuentes#

  • Utiliza PNG en escala de grises de 16 bits escalados para conjuntos de datos compactos. De forma predeterminada, cada paso entero equivale a un milímetro; establece depth_scale en el YAML del conjunto de datos para utilizar otra escala. ultralytics.data.utils.save_depth_png() convierte las matrices en metros al formato predeterminado. Los mapas NPY de coma flotante en metros también funcionan directamente.

  • Los píxeles con valores de profundidad ≤ 0 se tratan como no válidos y se enmascaran tanto en el cálculo de la pérdida como en la evaluación de las métricas. Esto incluye el ruido de los sensores, las regiones del cielo y las superficies reflectantes en las que la profundidad no se puede medir de forma fiable.

  • La validación de la estimación de profundidad informa del conjunto de métricas estándar de Depth Anything:

    • delta1 / delta2 / delta3 — porcentaje de píxeles dentro de los umbrales 1,25×, 1,25²× y 1,25³×. Cuanto mayor, mejor.
    • abs_rel — error relativo absoluto medio. Cuanto menor, mejor.
    • rmse — raíz del error cuadrático medio en metros. Cuanto menor, mejor.
    • silog — error logarítmico invariante a la escala. Cuanto menor, mejor.
  • Sí. Cada archivo de profundidad .png o .npy debe compartir el mismo nombre base que la imagen correspondiente. El cargador deriva la ruta de profundidad sustituyendo el componente de directorio images por depth, dando preferencia a PNG y recurriendo a NPY como alternativa. Las imágenes cuyo archivo de profundidad falta o no se puede leer se descartan durante el análisis del conjunto de datos almacenado en caché y se muestra una advertencia.

Comentarios