Link to this sectionDataset di profondità DIODE#
DIODE (Dense Indoor/Outdoor DEpth) è un dataset del mondo reale con ground truth di profondità densa di altissima qualità, acquisito tramite uno scanner laser di precisione FARO Focus. Caratteristica unica è la copertura di scene sia indoor che outdoor con lo stesso sensore, rendendolo un ponte ad alta precisione tra la profondità a corto raggio indoor e a lungo raggio outdoor per la stima della profondità monoculare.
Link to this sectionCaratteristiche principali#
- Ground truth di profondità densa di altissima qualità proveniente da uno scanner laser di precisione FARO Focus.
- Copre scene sia indoor che outdoor acquisite con lo stesso sensore.
- L'intervallo di profondità spazia da brevi distanze indoor a lunghe distanze outdoor, fino a circa 80 m nel mix Ultralytics.
- Ground truth densa e accurata per pixel allineata ai frame RGB.
- Fornisce ground truth densa ad alta precisione che funge da ponte tra domini indoor e outdoor.
Link to this sectionStruttura del dataset#
Il dataset di profondità DIODE è suddiviso in due subset:
- Train: 25.458 immagini con mappe di profondità associate per l'addestramento.
- Val: 771 immagini con mappe di profondità associate per la validazione durante l'addestramento del modello.
Ogni campione consiste in un'immagine RGB e una mappa di profondità .npy float32 associata che memorizza le distanze per pixel in metri, seguendo il formato dataset di profondità Ultralytics.
Link to this sectionRuolo in YOLO26-Depth#
DIODE è una fonte di addestramento nel mix di pre-addestramento multi-dataset Ultralytics YOLO26-Depth di circa 2,19 milioni di coppie immagine-profondità. Contribuisce con ground truth densa ad alta precisione che unisce i domini indoor e outdoor all'interno di un unico sensore, aiutando il modello a generalizzare sia su scene a corto raggio che a lungo raggio. I modelli risultanti vengono valutati sui benchmark standard NYU, KITTI, Make3D, ETH3D e iBims-1.
Link to this sectionDataset YAML#
Un file YAML (Yet Another Markup Language) viene utilizzato per definire la configurazione del dataset. Contiene informazioni sui percorsi del dataset, le classi e altre informazioni rilevanti.
# 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 *.npy, float32 meters (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
# Download script/URL (optional)
download: |
import shutil
from pathlib import Path
import numpy as np
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>/*.npy
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
np.save(dir / "depth" / split / f"{name[:-4]}.npy", depth.clip(max=80))
im.replace(dir / "images" / split / name)
shutil.rmtree(dir / "source")Link to this sectionUtilizzo#
Per addestrare un modello YOLO26n-depth sul dataset DIODE con una dimensione dell'immagine di 640, puoi utilizzare i seguenti snippet di codice. Per un elenco completo degli argomenti disponibili, fai riferimento alla pagina Training del modello.
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)Link to this sectionModelli pre-addestrati#
La famiglia YOLO26 depth è addestrata sull'ampio mix di pre-addestramento multi-dataset di profondità di cui DIODE fa parte. Questi modelli vengono scaricati automaticamente dall'ultima release Ultralytics, ad esempio YOLO26x-depth dalla v8.4.0, e coprono una gamma di dimensioni per diverse esigenze di accuratezza e risorse.
Link to this sectionCitazioni e riconoscimenti#
Se utilizzi il dataset DIODE nel tuo lavoro di ricerca o sviluppo, ti preghiamo di citare il seguente documento:
@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.