Panoramica dei dataset di stima della profondità#
La stima della profondità monoculare assegna un valore di profondità in virgola mobile in metri a ogni pixel di un'immagine. L'obiettivo di addestramento è una mappa di profondità densa per pixel memorizzata come un array float32 .npy. Ogni valore rappresenta la distanza dalla telecamera al punto della scena corrispondente.
Questa guida spiega il formato del dataset utilizzato dai modelli di stima della profondità Ultralytics YOLO ed elenca le configurazioni di dataset integrate disponibili per l'addestramento e la validazione.
Formato del dataset supportato#
Formato mappa di profondità NPY#
Ogni campione di addestramento è costituito da un'immagine RGB e da un file di profondità associato .npy. Il file di profondità memorizza un array NumPy 2D float32 con forma (H, W) in cui i valori sono profondità in metri.
- I file di profondità devono utilizzare l'estensione
.npye contenere un array float32. - Ogni file di profondità deve avere lo stesso nome radice (stem) del file di immagine corrispondente (ad es.,
scene_001.npysi associa ascene_001.jpg). - Il caricatore di dataset trova i file di profondità sostituendo il componente di directory
imagescondepthnel percorso del file e scambiando l'estensione dell'immagine con.npy. - I pixel con profondità
≤ 0sono considerati non validi ed esclusi dal calcolo della loss e delle metriche.
Il layout standard mantiene le immagini e le mappe di profondità in cartelle parallele:
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/Ad esempio, un'immagine in images/train/scene_001.jpg è associata a una mappa di profondità in depth/train/scene_001.npy.
Formato YAML del dataset#
I dataset di stima della profondità sono configurati con file YAML. I campi principali sono:
| Chiave | Descrizione |
|---|---|
path | Directory radice del dataset. |
train | Percorso dell'immagine di addestramento relativo a path, o percorso assoluto. |
val | Percorso dell'immagine di validazione relativo a path, o percorso assoluto. |
test | Percorso opzionale delle immagini di test. |
nc | Numero di classi — sempre 1 per la stima della profondità. |
names | Mappatura dei nomi delle classi — sempre {0: depth}. |
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~silberman/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 ← 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 # 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 .npy files (float32, meters) under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.
# Classes
nc: 1
names:
0: depth
channels: 3
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth.zipUtilizzo#
Addestra un modello di stima della profondità YOLO26 con Python o 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)Dataset supportati#
I modelli di profondità YOLO26 sono preaddestrati su un ampio mix di dataset (~2,19M di immagini) che spaziano da intervalli interni (≤10 m) a esterni (~80 m), quindi valutati zero-shot su cinque benchmark. Ogni dataset ha una pagina dedicata:
Debug
- Depth8 — 8 immagini SUN RGB-D in un archivio da 1,3 MB con download automatico, per il test rapido della pipeline
Fonti di preaddestramento
- ARKitScenes — interni reali, Apple ARKit LiDAR (la più grande fonte reale)
- SUN RGB-D — interni reali, RGB-D a sensori multipli
- DIODE — interni ed esterni reali, ground truth densa con scanner laser
- Hypersim — interni fotorealistici sintetici
- TartanAir — ambienti sintetici e diversificati
- Virtual KITTI 2 — guida all'aperto sintetica
- KITTI — guida all'aperto reale, Velodyne LiDAR (anche un benchmark di valutazione)
- ImageNet (pseudo-labeled) — set di distillazione con pseudo-etichette, la singola fonte più grande
Benchmark di valutazione
- NYU Depth V2 — principale benchmark per interni
- KITTI Eigen — benchmark di guida all'aperto
- ETH3D — interni ed esterni ad alta precisione
- Make3D — all'aperto, fuori distribuzione (out-of-distribution)
- iBims-1 — interni di alta qualità (bordi e superfici planari)
L'accuratezza per modello su questi benchmark e i pesi preaddestrati scaricabili sono elencati nella pagina del task Depth Estimation. Un YAML di dataset il cui campo train elenca più directory di immagini combina queste fonti per un addestramento misto su larga scala.
Aggiungere il proprio dataset#
- Salva le immagini RGB sotto cartelle di suddivisione (split) come
images/traineimages/val. - Salva un array di profondità float32
.npyper immagine sotto le cartelle corrispondentidepth/trainedepth/valutilizzando lo stesso nome radice (stem) del file dell'immagine. - Assicurati che i valori di profondità siano in metri e che i pixel non validi o mancanti utilizzino
0o valori negativi. - Crea un file YAML per il dataset con
path,train,val,nc: 1enames: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val
nc: 1
names:
0: depthFAQ#
Le mappe di profondità devono essere salvate come file NumPy
.npycontenenti array float32 di forma(H, W). Ogni elemento memorizza la profondità in metri per il pixel dell'immagine corrispondente. Non utilizzare formati PNG o interi a 16 bit: il caricatore si aspetta array float grezzi.I pixel con valori di profondità
≤ 0sono trattati come non validi ed esclusi sia dal calcolo della loss che dalla valutazione delle metriche. Questo copre il rumore del sensore, le regioni del cielo e le superfici riflettenti in cui la profondità non può essere misurata in modo affidabile.La validazione della stima della profondità riporta il set di metriche standard Depth Anything:
- delta1 / delta2 / delta3 — percentuale di pixel entro soglie di 1,25×, 1,25²×, 1,25³×. Valori più alti sono migliori.
- abs_rel — errore relativo assoluto medio. Più basso è, meglio è.
- rmse — radice dell'errore quadratico medio in metri. Più basso è, meglio è.
- silog — errore logaritmico invariante alla scala. Più basso è, meglio è.
Sì. Ogni file di profondità
.npydeve condividere la stessa radice (stem) dell'immagine corrispondente. Il caricatore deriva il percorso della profondità sostituendo il componente di directoryimagescondepthe sostituendo l'estensione dell'immagine con.npy. Le immagini il cui file di profondità è mancante o illeggibile vengono scartate durante la scansione del dataset (memorizzata nella cache) con un avviso, esattamente come le immagini corrotte; se non viene trovata alcuna coppia immagine-profondità valida, viene generato un errore.