Descripción general de los conjuntos de datos de estimación de profundidad#
La estimación de profundidad monocular asigna un valor de profundidad de punto flotante en metros a cada píxel de una imagen. El objetivo de entrenamiento es un mapa de profundidad denso por píxel almacenado como una matriz float32 .npy. Cada valor representa la distancia desde la cámara hasta el punto de la escena correspondiente.
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 de mapa de profundidad NPY#
Cada muestra de entrenamiento consta de una imagen RGB y un archivo de profundidad .npy emparejado. El archivo de profundidad almacena una matriz NumPy float32 en 2D con forma (H, W) donde los valores son profundidades en metros.
- Los archivos de profundidad deben usar la extensión
.npyy contener una matriz float32. - Cada archivo de profundidad debe tener el mismo nombre base que su archivo de imagen correspondiente (por ejemplo,
scene_001.npyse empareja conscene_001.jpg). - El cargador de conjuntos de datos busca los archivos de profundidad reemplazando el componente de directorio
imagescondepthen la ruta del archivo e intercambiando la extensión de la imagen por.npy. - Los píxeles con profundidad
≤ 0se tratan como inválidos y se excluyen del cálculo de la pérdida y de las métricas.
El diseño 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.npy.
Formato YAML del dataset#
Los conjuntos de datos de estimación de profundidad se configuran con archivos YAML. Los campos principales son:
| Clave | Descripción |
|---|---|
path | Directorio raíz del dataset. |
train | Ruta de la imagen de entrenamiento relativa a path, o una ruta absoluta. |
val | Ruta de la imagen de validación relativa a path, o una ruta absoluta. |
test | Ruta de la imagen de prueba opcional. |
nc | Número de clases: siempre 1 para la estimación de profundidad. |
names | Mapeo de nombres de clases: siempre {0: depth}. |
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~silberman/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 ← 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 # 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 .npy files (float32, meters) under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.
# Classes
nc: 1
names:
0: depth
channels: 3
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth.zipUso#
Entrena un modelo de estimación de profundidad YOLO26 con Python o la CLI:
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 YOLO26 están preentrenados en una amplia combinación de múltiples conjuntos de datos (~2,19 millones de imágenes) que abarcan rangos desde interiores (≤10 m) hasta exteriores (~80 m), y luego se evalúan de forma zero-shot en cinco benchmarks. Cada conjunto de datos tiene una página dedicada:
Depuración
- Depth8 — 8 imágenes SUN RGB-D en un archivo comprimido de descarga automática de 1.3 MB, para pruebas rápidas de canalizaciones
Fuentes de preentrenamiento
- ARKitScenes — interiores reales, Apple ARKit LiDAR (la fuente real más grande)
- SUN RGB-D — interiores reales, RGB-D multisensor
- DIODE — interiores y exteriores reales, datos de verdad terrestre densos de escáner láser
- Hypersim — interiores sintéticos fotorrealistas
- TartanAir — entornos sintéticos y diversos
- Virtual KITTI 2 — conducción sintética en exteriores
- KITTI — conducción real en exteriores, Velodyne LiDAR (también un punto de referencia de evaluación)
- ImageNet (con etiquetas pseudo) — conjunto de destilación con etiquetas pseudo, la fuente individual más grande
Benchmarks de evaluación
- NYU Depth V2 — principal punto de referencia para interiores
- KITTI Eigen — punto de referencia de conducción en exteriores
- ETH3D — interiores y exteriores de alta precisión
- Make3D — exteriores, fuera de distribución
- iBims-1 — interiores de alta calidad (bordes y superficies planares)
La precisión por modelo en estos puntos de referencia y los pesos preentrenados descargables se enumeran en la página de tareas de Depth Estimation. Un archivo YAML de conjunto de datos cuyo campo train enumera múltiples directorios de imágenes combina estas fuentes para el entrenamiento mixto a gran escala.
Añadir tu propio dataset#
- Guarda las imágenes RGB en carpetas de división como
images/trainyimages/val. - Guarda una matriz de profundidad float32
.npypor imagen en las carpetas coincidentesdepth/trainydepth/valutilizando el mismo nombre base de archivo que la imagen. - Asegúrate de que los valores de profundidad estén en metros y de que los píxeles inválidos o faltantes utilicen
0o valores negativos. - Crea un YAML de dataset con
path,train,val,nc: 1ynames: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val
nc: 1
names:
0: depthFAQ#
Los mapas de profundidad deben guardarse como archivos NumPy
.npyque contengan matrices float32 de forma(H, W). Cada elemento almacena la profundidad en metros para el píxel de imagen correspondiente. No utilices formatos PNG o enteros de 16 bits; el cargador espera matrices de números flotantes sin procesar.Los píxeles con valores de profundidad
≤ 0se tratan como inválidos y se enmascaran tanto en el cálculo de la pérdida como en la evaluación de métricas. Esto cubre el ruido del sensor, las regiones del cielo y las superficies reflectantes donde la profundidad no se puede medir de forma fiable.La validación de la estimación de profundidad informa sobre el conjunto estándar de métricas de Depth Anything:
- delta1 / delta2 / delta3 — porcentaje de píxeles dentro de los umbrales de 1,25×, 1,25²×, 1,25³×. Cuanto más alto, mejor.
- abs_rel — error absoluto medio relativo. Cuanto más bajo, mejor.
- rmse — error cuadrático medio en metros. Cuanto más bajo, mejor.
- silog — error logarítmico invariante a la escala. Cuanto más bajo, mejor.
Sí. Cada archivo de profundidad
.npydebe compartir el mismo nombre base que la imagen correspondiente. El cargador deriva la ruta de profundidad reemplazando el componente de directorioimagescondepthy sustituyendo la extensión de la imagen por.npy. Las imágenes cuyo archivo de profundidad falte o no se pueda leer se descartan durante el escaneo (en caché) del conjunto de datos con una advertencia, exactamente igual que las imágenes corruptas; si no se encuentra ningún par válido de imagen-profundidad en absoluto, se genera un error.