Ultralytics YOLO27:

Conjunto de datos de profundidad DIODE#

DIODE (profundidad densa en interiores y exteriores) es un conjunto de datos del mundo real con datos de referencia de profundidad densa de gran calidad, capturados con un escáner láser FARO Focus de precisión topográfica. A diferencia de otros conjuntos, abarca escenas tanto interiores como exteriores con el mismo sensor, lo que lo convierte en un puente de alta precisión entre la profundidad a corta distancia en interiores y la profundidad a larga distancia en exteriores para la estimación monocular de profundidad.

Características principales#

  • Datos de referencia de profundidad densa de gran calidad, capturados con un escáner láser FARO Focus de precisión topográfica.
  • Abarca escenas tanto interiores como exteriores capturadas con el mismo sensor.
  • El rango de profundidad va desde distancias cortas en interiores hasta distancias largas en exteriores, de hasta aproximadamente 80 m en la mezcla de Ultralytics.
  • Datos de referencia densos y precisos por píxel, alineados con los fotogramas RGB.
  • Proporciona datos de referencia densos y de alta precisión que conectan los dominios interiores y exteriores.

Estructura del conjunto de datos#

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

  1. Train: 25.458 imágenes con mapas de profundidad emparejados para el entrenamiento.
  2. Val: 771 imágenes con mapas de profundidad emparejados para la validación durante el entrenamiento del modelo.

Cada muestra consta de una imagen RGB y un PNG de profundidad uint16 emparejado con 256 unidades por metro (depth_scale: 256), de acuerdo con el formato de conjunto de datos de profundidad de Ultralytics. Esto proporciona una resolución de 3,90625 mm y permite representar el rango exterior completo de 80 m. El YAML del conjunto de datos descarga los archivos oficiales de DIODE (~84 GB) y los convierte automáticamente a esta estructura la primera vez que se usa.

Papel de YOLO26-Depth#

DIODE es una fuente de entrenamiento en la mezcla de preentrenamiento de varios conjuntos de datos de Ultralytics YOLO26-Depth, que contiene aproximadamente 2,19 millones de pares de imagen y profundidad. Aporta datos de referencia densos y de alta precisión que conectan los dominios interiores y exteriores con un único sensor, lo que ayuda al modelo a generalizar tanto en escenas de corta como de larga distancia. Los modelos resultantes se evalúan con los benchmarks estándar NYU, 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 del conjunto.

ultralytics/cfg/datasets/depth-diode.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DIODE dataset for monocular depth estimation — real indoor + outdoor, FARO Focus survey-grade laser, depth up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/diode
# Example usage: yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── depth-diode  ← downloads here (84 GB archives, ~90 GB converted)
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)
# If an interrupted download leaves a partial dataset, delete the depth-diode dir and re-run to rebuild it.

path: depth-diode # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 25458 images
val: images/val # val images (relative to 'path') 771 images
max_depth: 80 # (m) maximum valid depth; GT beyond this is excluded from val metrics

nc: 1
names:
  0: depth

channels: 3
depth_scale: 256 # PNG value 256 = 1 meter; represents the 80 m outdoor range

# Download script/URL (optional)
download: |
  import shutil
  from pathlib import Path

  import numpy as np

  from ultralytics.data.utils import save_depth_png
  from ultralytics.utils import TQDM
  from ultralytics.utils.downloads import download

  # Download and extract the official archives (train ~81 GB, val ~2.6 GB), then convert:
  # flatten <split>/<scene>/<scan>/*.png into images/<split>/ and save the paired *_depth.npy
  # (masked invalid -> 0, clipped at 80 m) as depth/<split>/*.png
  dir = Path(yaml["path"])  # dataset root dir
  download([f"https://diode-dataset.s3.amazonaws.com/{s}.tar.gz" for s in ("train", "val")], dir=dir / "source", delete=True)
  for split in ("train", "val"):
      (dir / "images" / split).mkdir(parents=True, exist_ok=True)
      (dir / "depth" / split).mkdir(parents=True, exist_ok=True)
      for im in TQDM(sorted((dir / "source" / split).rglob("*.png")), desc=f"Converting {split}"):
          name = "_".join(im.relative_to(dir / "source").parts)  # train/indoors/scene/scan/x.png -> train_indoors_scene_scan_x.png
          depth = np.load(im.with_name(f"{im.stem}_depth.npy")).squeeze().astype(np.float32)
          depth[np.load(im.with_name(f"{im.stem}_depth_mask.npy")) == 0] = 0.0  # zero out invalid pixels
          save_depth_png(dir / "depth" / split / f"{name[:-4]}.png", depth.clip(max=80), scale=256)
          im.replace(dir / "images" / split / name)
  shutil.rmtree(dir / "source")

Uso#

Para entrenar un modelo YOLO26n-depth con el conjunto de datos DIODE 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 una lista completa de los argumentos disponibles.

Ejemplo de entrenamiento
from ultralytics import YOLO

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

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

Modelos preentrenados#

La familia de modelos YOLO26 de profundidad se entrena con una amplia mezcla de preentrenamiento de profundidad de varios conjuntos de datos, de la que forma parte DIODE. Estos modelos se descargan automáticamente la primera vez que se usan desde la versión de recursos v8.4.0 de Ultralytics; por ejemplo, YOLO26x-depth. Hay varios tamaños para adaptarse a distintos requisitos de precisión y recursos.

Citas y agradecimientos#

Si utilizas el conjunto de datos DIODE en tus investigaciones o trabajos de desarrollo, cita el siguiente artículo:

Cita
@article{vasiljevic2019diode,
      title={DIODE: A Dense Indoor and Outdoor DEpth Dataset},
      author={Vasiljevic, Igor and Kolkin, Nick and Zhang, Shanyi and Luo, Ruotian and Wang, Haochen and Dai, Falcon Z. and Daniele, Andrea F. and Mostajabi, Mohammadreza and Basart, Steven and Walter, Matthew R. and Shakhnarovich, Gregory},
      journal={arXiv preprint arXiv:1908.00463},
      year={2019}
}

Queremos agradecer a los autores la creación y el mantenimiento de este valioso recurso para la comunidad de visión artificial.

Preguntas frecuentes#

  • DIODE captura escenas tanto interiores como exteriores con el mismo escáner láser FARO Focus de precisión topográfica, lo que produce datos de referencia de profundidad muy densos y precisos en distancias cortas en interiores y largas en exteriores. Esta cobertura con un único sensor lo convierte en un puente de alta precisión entre los dominios interiores y exteriores en la mezcla de entrenamiento de YOLO26-Depth.

  • La configuración de Ultralytics proporciona 25.458 pares de imagen y profundidad para entrenamiento y 771 para validación. La profundidad se almacena en archivos PNG uint16 con 256 unidades por metro (depth_scale: 256), lo que mantiene una resolución de 3,9 mm y cubre el rango exterior completo de 80 m descrito en el formato de conjunto de datos de profundidad de Ultralytics.

  • Carga un punto de control de profundidad preentrenado y asigna a data el YAML incluido, por ejemplo, yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. Consulta la sección Uso para ver el equivalente en Python y la página de entrenamiento para consultar todos los argumentos.

Comentarios