YOLO Vision 2026:

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 .npy e contenere un array float32.
  • Ogni file di profondità deve avere lo stesso nome radice (stem) del file di immagine corrispondente (ad es., scene_001.npy si associa a scene_001.jpg).
  • Il caricatore di dataset trova i file di profondità sostituendo il componente di directory images con depth nel percorso del file e scambiando l'estensione dell'immagine con .npy.
  • I pixel con profondità ≤ 0 sono 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:

ChiaveDescrizione
pathDirectory radice del dataset.
trainPercorso dell'immagine di addestramento relativo a path, o percorso assoluto.
valPercorso dell'immagine di validazione relativo a path, o percorso assoluto.
testPercorso opzionale delle immagini di test.
ncNumero di classi — sempre 1 per la stima della profondità.
namesMappatura dei nomi delle classi — sempre {0: depth}.
ultralytics/cfg/datasets/nyu-depth.yaml
# 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.zip

Utilizzo#

Addestra un modello di stima della profondità YOLO26 con Python o CLI:

Esempio
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#

  1. Salva le immagini RGB sotto cartelle di suddivisione (split) come images/train e images/val.
  2. Salva un array di profondità float32 .npy per immagine sotto le cartelle corrispondenti depth/train e depth/val utilizzando lo stesso nome radice (stem) del file dell'immagine.
  3. Assicurati che i valori di profondità siano in metri e che i pixel non validi o mancanti utilizzino 0 o valori negativi.
  4. Crea un file YAML per il dataset con path, train, val, nc: 1 e names: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val

nc: 1
names:
    0: depth

FAQ#

  • Le mappe di profondità devono essere salvate come file NumPy .npy contenenti 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à ≤ 0 sono 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à .npy deve condividere la stessa radice (stem) dell'immagine corrispondente. Il caricatore deriva il percorso della profondità sostituendo il componente di directory images con depth e 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.

Collaboratori

Commenti