Descripción general de los conjuntos de datos de estimación de profundidad#
La estimación de profundidad monocular asigna un valor de profundidad en metros a cada píxel de una imagen. Los objetivos de profundidad utilizan PNGs en escala de grises de 16 bits escalados o matrices NPY de punto 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 de mapa de profundidad#
Cada muestra de entrenamiento consta de una imagen RGB y un archivo de profundidad emparejado. Los valores PNG se dividen por el depth_scale opcional a nivel de conjunto de datos para producir metros. El valor predeterminado es 1000, por lo que un valor de 1500 representa 1.5 metros. El código 0 significa no válido; los PNG no necesitan metadatos incrustados.
- Los archivos de profundidad utilizan
.png(preferido) o.npy. Los mapas PNG deben ser imágenes en escala de grises uint16 de 2D. Las matrices NPY deben ser 2D y de punto flotante, con valores en metros. - Configura
depth_scalesolo cuando los PNG no utilicen la convención predeterminada de milímetros. Por ejemplo, KITTI utiliza256y Virtual KITTI 2 utiliza100. - Cada archivo de profundidad debe tener el mismo nombre base que su archivo de imagen correspondiente (por ejemplo,
scene_001.pngse empareja conscene_001.jpg). - Los mapas de profundidad pueden ser más pequeños que sus imágenes RGB siempre que la relación de aspecto coincida; el entrenamiento los redimensiona en la memoria.
- El cargador de conjuntos de datos encuentra los archivos de profundidad reemplazando el componente de directorio
imagespordepth, prefiriendo.pngy recurriendo a.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.
Debido a que el código 0 está reservado para 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ón | depth_scale | Resolución | Profundidad máxima |
|---|---|---|---|
| Predeterminado / ARKitScenes | 1000 | 1 mm | 65.535 m |
| KITTI | 256 | 3.90625 mm | 255.99609375 m |
| Virtual KITTI 2 | 100 | 1 cm | 655.35 m |
Estos son límites de almacenamiento, no límites de entrenamiento recomendados. Un conjunto de datos puede establecer un max_depth más pequeño de forma independiente para la calibración de pérdidas o la evaluación.
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.png.
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}. |
depth_scale | Unidades PNG opcionales por metro; el valor predeterminado es 1000. |
# 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.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 un PNG o NPY de profundidad por imagen bajo las carpetas coincidentes
depth/trainydepth/valutilizando el mismo nombre base de archivo que la imagen. Utilizasave_depth_png()para convertir matrices de metros en PNGs de milímetros compactos. - Asegúrate de que los valores de profundidad decodificados estén en metros y de que los píxeles no vá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: depth
# Optional: PNG integer units per meter (default 1000)
depth_scale: 1000FAQ#
Utiliza PNGs en escala de grises de 16 bits escalados para conjuntos de datos compactos. De forma predeterminada, cada paso entero es un milímetro; establece
depth_scaleen el archivo YAML del conjunto de datos para otra escala.ultralytics.data.utils.save_depth_png()convierte matrices de metros al formato predeterminado. Los mapas NPY de punto flotante en metros también funcionan directamente.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
.pngo.npydebe compartir el mismo nombre base que la imagen correspondiente. El cargador deriva la ruta de profundidad reemplazando el componente de directorioimagespordepth, prefiriendo PNG y recurriendo a NPY. Las imágenes cuyo archivo de profundidad falte o no se pueda leer se descartarán durante el análisis del conjunto de datos en caché con una advertencia.