Sicurezza pronta per le aziende: Conformità ISO 27001 + SOC 2 Type I.

Link to this sectionPanoramica 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 dell'addestramento è una mappa di profondità densa pixel per pixel salvata come array float32 .npy. Ogni valore rappresenta la distanza dalla fotocamera al punto corrispondente della scena.

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.

Link to this sectionFormato del dataset supportato#

Link to this sectionFormato mappa di profondità NPY#

Ogni campione di addestramento consiste in un'immagine RGB e un file di profondità .npy associato. Il file di profondità memorizza un array NumPy float32 2D con forma (H, W) dove i valori sono le 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 (stem) del file immagine corrispondente (ad esempio, scene_001.npy si abbina a scene_001.jpg).
  • Il caricatore del dataset trova i file di profondità sostituendo il componente della directory images con depth nel percorso del file e scambiando l'estensione dell'immagine con .npy.
  • I pixel con profondità ≤ 0 sono trattati come non validi ed esclusi dal calcolo della perdita 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 è accoppiata con una mappa di profondità in depth/train/scene_001.npy.

Link to this sectionFormato YAML del dataset#

I dataset di stima della profondità sono configurati con file YAML. I campi principali sono:

ChiaveDescrizione
pathDirectory radice del dataset.
trainPercorso delle immagini di addestramento relativo a path o percorso assoluto.
valPercorso delle immagini 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

Link to this sectionUtilizzo#

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)

Link to this sectionDataset 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 fonte reale più grande)
  • SUN RGB-D — interni reali, RGB-D multi-sensore
  • DIODE — interni + esterni reali, ground truth denso da scanner laser
  • Hypersim — interni fotorealistici sintetici
  • TartanAir — sintetico, ambienti diversificati
  • Virtual KITTI 2 — guida esterna sintetica
  • KITTI — guida esterna reale, Velodyne LiDAR (anche un benchmark di valutazione)
  • ImageNet (pseudo-labeled) — set di distillazione pseudo-etichettato, la più grande singola fonte

Benchmark di valutazione

  • NYU Depth V2 — benchmark principale per interni
  • KITTI Eigen — benchmark per guida esterna
  • ETH3D — interni + esterni ad alta precisione
  • Make3D — esterni, 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 dell'attività di stima della profondità. Un YAML del dataset il cui campo train elenca più directory di immagini combina queste fonti per un addestramento misto su larga scala.

Link to this sectionAggiungere il proprio dataset#

  1. Salva le immagini RGB in cartelle di 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 usando lo stesso nome 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 YAML del 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

Link to this sectionFAQ#

Link to this sectionQuale formato di file dovrebbero usare le mappe di profondità?#

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 usare formati PNG o interi a 16 bit: il caricatore si aspetta array float grezzi.

Link to this sectionCome vengono gestiti i pixel di profondità non validi?#

I pixel con valori di profondità ≤ 0 sono trattati come non validi e mascherati sia dal calcolo della perdita che dalla valutazione delle metriche. Questo copre il rumore del sensore, le regioni del cielo e le superfici riflettenti dove la profondità non può essere misurata in modo affidabile.

Link to this sectionQuali metriche vengono utilizzate per la valutazione?#

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. Valori più bassi sono migliori.
  • rmse — radice dell'errore quadratico medio in metri. Valori più bassi sono migliori.
  • silog — errore logaritmico invariante rispetto alla scala. Valori più bassi sono migliori.

Link to this sectionI nomi dei file di profondità devono corrispondere ai nomi dei file immagine?#

Sì. Ogni file .npy di profondità deve condividere lo stesso nome (stem) dell'immagine corrispondente. Il caricatore deriva il percorso della profondità sostituendo il componente della 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 (nella cache) del dataset con un avviso, esattamente come le immagini corrotte; se non viene trovata alcuna coppia immagine-profondità valida, viene generato un errore.

Contributori

Commenti