Ultralytics YOLO27:

Conjunto de datos de profundidad DIODE#

DIODE (profundidad densa en interiores/exteriores) es un conjunto de datos del mundo real con datos de referencia de profundidad densa de muy alta calidad, capturados por un escáner láser FARO Focus de nivel topográfico. De forma única, cubre escenas tanto de interiores como de exteriores con el mismo sensor, lo que lo convierte en un puente de alta precisión entre la profundidad de corto alcance en interiores y la de largo alcance en exteriores para la estimación monocular de profundidad.

Características principales#

  • Datos de referencia de profundidad densa de muy alta calidad procedentes de un escáner láser FARO Focus de nivel topográfico.
  • Cubre escenas tanto de interiores como de exteriores capturadas con el mismo sensor.
  • El rango de profundidad abarca desde distancias cortas en interiores hasta distancias largas en exteriores, de hasta aproximadamente 80 m en la combinación de datos de Ultralytics.
  • Datos de referencia densos y precisos para cada píxel, alineados con los fotogramas RGB.
  • Proporciona datos de referencia densos y de alta precisión que conectan los dominios de interiores y exteriores.

Estructura del dataset#

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), siguiendo el formato de conjunto de datos de profundidad de Ultralytics. Esto proporciona una resolución de 3,90625 mm y permite representar todo el rango exterior de 80 m.

Papel en YOLO26-Depth#

DIODE es una fuente de entrenamiento en la combinación de preentrenamiento multiconjunto de datos de Ultralytics YOLO26-Depth, compuesta por aproximadamente 2,19 millones de pares imagen-profundidad. Aporta datos de referencia densos y de alta precisión que conectan los dominios de interiores y exteriores dentro de un único sensor, lo que ayuda al modelo a generalizar entre escenas de corto y largo alcance. Los modelos resultantes se evalúan en los benchmarks estándar NYU, KITTI, Make3D, ETH3D e iBims-1.

YAML del dataset#

Se utiliza un archivo YAML para definir la configuración del conjunto de datos. Contiene información sobre las rutas, las clases y otra información relevante del conjunto de datos.

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 utilizar los siguientes fragmentos de código. Para consultar una lista completa de los argumentos disponibles, visita la página de entrenamiento del modelo.

Ejemplo de entrenamiento
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load a pretrained depth model (recommended for training)

# Train the model
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)

Modelos preentrenados#

La familia de modelos de profundidad YOLO26 se entrena con la amplia combinación de preentrenamiento de profundidad multiconjunto de datos de la que forma parte DIODE. Estos modelos se descargan automáticamente desde la versión más reciente de Ultralytics, por ejemplo YOLO26x-depth desde la versión v8.4.0, y abarcan distintos tamaños para satisfacer diferentes requisitos de precisión y recursos.

Citas y agradecimientos#

Si utilizas el conjunto de datos DIODE en tu trabajo de investigación o 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 por computador.

Preguntas frecuentes#

  • DIODE captura tanto escenas de interiores como de exteriores con el mismo escáner láser de grado topográfico FARO Focus, lo que produce una verdad de terreno de profundidad muy densa y precisa en rangos cortos de interiores y largos de exteriores. Esta cobertura de un solo sensor lo convierte en un puente de alta precisión entre los dominios de interiores y exteriores en la mezcla de entrenamiento de YOLO26-Depth.

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

  • Carga un punto de control de profundidad preentrenado y apunta data al 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 todos los argumentos.

Comentarios