Ultralytics YOLO27:

Dataset di profondità DIODE#

DIODE (profondità densa indoor/outdoor) è un dataset reale con ground truth di profondità densa e di altissima qualità, acquisita con uno scanner laser FARO Focus di livello topografico. In modo unico, copre sia scene indoor sia outdoor con lo stesso sensore, creando un ponte ad alta precisione tra la profondità indoor a corto raggio e quella outdoor a lungo raggio per la stima monoculare della profondità.

Funzionalità principali#

  • Ground truth di profondità densa e di altissima qualità, acquisita con uno scanner laser FARO Focus di livello topografico.
  • Copre scene sia indoor sia outdoor, acquisite con lo stesso sensore.
  • L'intervallo di profondità spazia dalle brevi distanze indoor alle lunghe distanze outdoor, fino a circa 80 m nel mix Ultralytics.
  • Ground truth densa e accurata per ogni pixel, allineata ai frame RGB.
  • Fornisce ground truth densa e ad alta precisione, creando un ponte tra i domini indoor e outdoor.

Struttura del dataset#

Il dataset di profondità DIODE è suddiviso in due sottoinsiemi:

  1. Train: 25.458 immagini con mappe di profondità abbinate per l'addestramento.
  2. Val: 771 immagini con mappe di profondità abbinate per la validazione durante l'addestramento del modello.

Ogni campione consiste in un'immagine RGB e una PNG di profondità uint16 abbinata, con 256 unità per metro (depth_scale: 256), secondo il formato dei dataset di profondità Ultralytics. Questo offre una risoluzione di 3,90625 mm e rappresenta l'intero intervallo outdoor di 80 m. Al primo utilizzo, lo YAML del dataset scarica gli archivi DIODE ufficiali (~84 GB) e li converte automaticamente in questo layout.

Ruolo in YOLO26-Depth#

DIODE è una fonte di addestramento nel mix di pretraining multi-dataset di Ultralytics YOLO26-Depth, composto da circa 2,19 milioni di coppie immagine–profondità. Contribuisce con ground truth densa e ad alta precisione, che collega i domini indoor e outdoor usando un unico sensore e aiuta il modello a generalizzare sia nelle scene a corto raggio sia in quelle a lungo raggio. I modelli risultanti vengono valutati sui benchmark standard NYU, KITTI, Make3D, ETH3D e iBims-1.

YAML del dataset#

Per definire la configurazione del dataset si usa un file YAML. Contiene informazioni sui percorsi del dataset, sulle classi e su altri dettagli pertinenti.

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")

Utilizzo#

Per addestrare un modello YOLO26n-depth sul dataset DIODE con una dimensione dell'immagine di 640, puoi usare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, consulta la pagina Addestramento del modello.

Esempio di addestramento
from ultralytics import YOLO

# Carica un modello
model = YOLO("yolo26n-depth.pt")  # carica un modello di profondità preaddestrato (consigliato per l'addestramento)

# Addestra il modello
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)

Modelli preaddestrati#

La famiglia YOLO26 depth viene addestrata sul vasto mix di pretraining multi-dataset per la profondità, di cui fa parte DIODE. Al primo utilizzo, questi modelli vengono scaricati automaticamente dalla versione degli asset v8.4.0 di Ultralytics, ad esempio YOLO26x-depth, e sono disponibili in diverse dimensioni per soddisfare requisiti differenti di accuratezza e risorse.

Citazioni e ringraziamenti#

Se usi il dataset DIODE nel tuo lavoro di ricerca o sviluppo, cita il seguente articolo:

Citazione
@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}
}

Desideriamo ringraziare gli autori per aver creato e mantenuto questa preziosa risorsa per la comunità della computer vision.

Domande frequenti#

  • DIODE acquisisce scene indoor e outdoor con lo stesso scanner laser FARO Focus di livello topografico, producendo ground truth di profondità molto dense e accurate, dalle brevi distanze indoor alle lunghe distanze outdoor. Questa copertura con un unico sensore crea un ponte ad alta precisione tra i domini indoor e outdoor nel mix di addestramento YOLO26-Depth.

  • La configurazione Ultralytics fornisce 25.458 coppie immagine-profondità per l'addestramento e 771 per la validazione. La profondità è memorizzata in PNG uint16 con 256 unità per metro (depth_scale: 256), mantenendo una risoluzione di 3,9 mm e coprendo l'intero intervallo outdoor di 80 m descritto nel formato dei dataset di profondità Ultralytics.

  • Carica un checkpoint di profondità preaddestrato e imposta data sullo YAML incluso, ad esempio yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. Consulta la sezione Utilizzo per l'equivalente in Python e la pagina Addestramento per tutti gli argomenti.

Commenti