Ultralytics YOLO27:

Stima della profondità monoculare con Ultralytics YOLO#

Monocular depth estimation examples

La stima della profondità monoculare predice una mappa di profondità per pixel a partire da una singola immagine RGB. Ogni pixel di output contiene un valore di profondità in metri che rappresenta la distanza stimata dalla fotocamera a quel punto della superficie.

L'output di un modello di profondità è una mappa float densa di forma (H, W), allineata all'immagine di input. Questa rappresentazione per pixel rende la stima della profondità monoculare adatta alla ricostruzione di scene 3D, alla navigazione dei robot, alla creazione di contenuti AR/VR e a qualsiasi applicazione che richieda la disposizione spaziale a partire da una singola fotocamera.

Suggerimento

Usa task=depth oppure l'attività CLI yolo depth per la stima della profondità monoculare. I file dei modelli di profondità YOLO26 usano il suffisso -depth, come yolo26n-depth.pt.



Watch: Monocular Depth Estimation with Ultralytics YOLO26 | Python Tutorial | Vision AI 🚀

Modelli#

Di seguito sono mostrati i modelli di profondità YOLO26 preaddestrati su un'ampia combinazione di dataset (interni + esterni, ~2,19 M di immagini). Le colonne delle metriche riportano i risultati sullo split di test Eigen di NYU Depth V2.

I modelli vengono scaricati automaticamente dall'ultima release di Ultralytics al primo utilizzo.

Modellodimensione
(pixel)
delta1NYUabs_relNYUrmseNYUVelocità
CPU ONNX
(ms)
Velocità
T4 TensorRT10
(ms)
parametri
(M)
FLOPs
(B)
YOLO26n-depth7680.8820.1090.414272.0 ± 27.22.7 ± 0.16.346.9
YOLO26s-depth7680.8960.1040.399393.7 ± 13.13.8 ± 0.013.268.0
YOLO26m-depth7680.9210.0890.364621.5 ± 49.76.0 ± 0.123.3130.4
YOLO26l-depth7680.9300.0830.351821.9 ± 50.77.7 ± 0.127.7157.0
YOLO26x-depth7680.9330.0800.3441240.9 ± 73.313.6 ± 0.257.0301.7
  • delta1NYU è la percentuale di pixel per i quali la profondità predetta rientra in un fattore di 1,25 rispetto al ground truth, sullo split di test Eigen di NYU Depth V2 (654 immagini), con TTA multi-scala + inversione orizzontale e allineamento ai minimi quadrati nel logaritmo.
  • La precisione a scala singola senza TTA è riproducibile con yolo depth val model=yolo26n-depth.pt data=nyu-depth.yaml imgsz=768 device=0 (sostituisci model= per ogni dimensione), che usa un allineamento mediano (solo scala) e ottiene punteggi inferiori: delta1 0,783 (n), 0,793 (s), 0,840 (m), 0,853 (l), 0,860 (x).
  • abs_rel è l'errore relativo assoluto medio tra i valori di profondità predetti e quelli del ground truth.
  • rmse è la radice dell'errore quadratico medio, espressa in metri.
  • Velocità è la latenza relativa esclusivamente all'inferenza (escludendo pre/post-processing) a imgsz=768, batch=1, riportata come media ± deviazione standard sulle esecuzioni cronometrate dopo il warmup. CPU ONNX è ONNX Runtime fp32 su un Intel Xeon a 32 core (Skylake); T4 TensorRT10 è TensorRT fp16 su una Tesla T4.
  • params e FLOPs sono misurati a 768×768, la risoluzione di training dei pesi rilasciati.

Consulta la anteprima non rilasciata di YOLO27 per i risultati preliminari su NYU Depth V2.

Velocità a confronto con Depth Anything V2#

Depth Anything V2 è una baseline open ampiamente utilizzata per la profondità monoculare. Il suo backbone DINOv2 vision transformer e il decoder DPT richiedono molte risorse di calcolo, quindi sulla stessa Tesla T4 con TensorRT fp16 il modello Depth Anything V2 rilasciato più piccolo è più lento di ogni modello di profondità YOLO26, incluso YOLO26x-depth, che ha più del doppio dei parametri.

A ~768 px — imgsz=768 per YOLO26, la risoluzione alla quale sono stati addestrati i pesi rilasciati, e 770 px per Depth Anything V2, il cui backbone DINOv2 richiede un multiplo della dimensione della patch pari a 14:

Modelloparametri (M)FLOPs (B)T4 TensorRT10 (ms)FPSAccelerazione rispetto a V2 SmallAccelerazione rispetto a V2 Base
Depth Anything V2 Base97.51025.555.4018.1
Depth Anything V2 Small24.8346.920.9947.6
YOLO26x-depth57.0301.713.5773.71.5×4.1×
YOLO26l-depth27.7157.07.68130.22.7×7.2×
YOLO26m-depth23.3130.46.00166.73.5×9.2×
YOLO26s-depth13.268.03.82261.65.5×14.5×
YOLO26n-depth6.346.92.73365.87.7×20.3×

A ~640 px — imgsz=640 e 644 px rispettivamente — l'ordine non cambia e YOLO26n-depth è 5,9× più veloce di Depth Anything V2 Small:

ModelloT4 TensorRT10 (ms)FPS
Depth Anything V2 Base35.1028.5
Depth Anything V2 Small13.6273.4
YOLO26x-depth10.2697.5
YOLO26l-depth6.14162.8
YOLO26m-depth4.71212.1
YOLO26s-depth3.08324.4
YOLO26n-depth2.29436.9
  • La latenza riguarda esclusivamente l'inferenza, batch=1, TensorRT fp16 su una Tesla T4 — lo stesso harness della tabella dei modelli sopra, mostrata qui con due cifre decimali; gli FPS sono il reciproco della latenza non arrotondata. Le colonne Accelerazione dividono la latenza di Depth Anything V2 Small (20,99 ms) e Base (55,40 ms) per la latenza di YOLO26.
  • Depth Anything V2 Small e Base sono i checkpoint ViT-S e ViT-B rilasciati.
  • Il confronto riguarda solo la latenza: qui le due famiglie di modelli non vengono valutate secondo un protocollo di accuratezza condiviso.

Intervallo di profondità e head log-depth#

La head di profondità predice exp(logit)senza limiti (~0,02–150 m) — e separa la forma della scena dalla scala assoluta: la rete predice un campo di log-depth relativo e i metri assoluti vengono impostati da una trasformazione separata a due parametri (exp(a·log d + b)), ricavata durante la valutazione, tramite una calibrazione leggera o mediante fine-tuning. L'alternativa comune, una head sigmoid × max_depth con intervallo limitato, incorpora invece nell'architettura un limite massimo fisso, quindi qualsiasi profondità oltre max_depth viene troncata, impedendo il training e la predizione di scene a maggiore distanza.

Perché la head non ha limiti: evidenze su diversi intervalli di profondità#

A/B controllato — stessi dati, stesso programma, cambia solo la head. Addestrando entrambe le head da zero su una combinazione identica di dati interni (≤10 m) ed esterni (≤80 m):

HeadIntervallo di outputδ1 di validazione su intervalli mistiComportamento durante il training
sigmoid × max_depth (10 m)limitato 0–10 m0.221si stabilizza all'epoca 1
log (senza limiti)0–~150 m0.367 (+66%)migliora per tutta la durata

La head con intervallo limitato non può rappresentare la maggior parte dei pixel esterni oltre i 10 m, quindi smette di migliorare quasi immediatamente; la head log apprende dall'intero intervallo.

Il problema che risolve — fine-tuning su un singolo dataset, stratificato per intervallo. Il fine-tuning di una head con limite (10 m) su singoli dataset funziona quando i dati rientrano nel limite e crolla quando lo superano:

DatasetIntervallo di profonditàδ1 della head con limite
SUN RGB-D≤10 m0.78 ✅
Hypersimprincipalmente ≤10 m0.74 ✅
KITTI~80 m0,08 ❌ (abs_rel ≈ 7,0 — il disallineamento di scala 80/10)
vKITTI280 m0.04 ❌

Il crollo si verifica esattamente al confine del limite. La head log non presenta questo confine.

Modelli rilasciati — prestazioni su più intervalli. La famiglia rilasciata con head log, valutata su benchmark che vanno da 10 m (NYU, iBims-1) a 80 m (KITTI), con δ1 allineato alla scala:

BenchmarkIntervalloYOLO26x-depth (log)release precedente con limite
NYU Eigen10 m0.9330.934
iBims-110 m0.9610.945
ETH3D~60 m0.9590.931
Make3D~70 m0.3020.296
KITTI Eigen80 m0.9420.891
Media0.8190.799

Entrambe le colonne sono riportate come pubblicate. Le altre righe vengono valutate con il protocollo TTA e dei minimi quadrati nel logaritmo descritto nelle pagine dei rispettivi dataset, che il validator in questo repository non implementa; pertanto la riga KITTI non può essere nuovamente misurata alle stesse condizioni. La pagina KITTI riporta invece i valori misurati sullo split Eigen canonico da 652 frame.

I miglioramenti maggiori si osservano nei benchmark esterni a maggiore distanza (KITTI, ETH3D), esattamente dove un limite fisso di 10 m penalizza maggiormente, mentre le prestazioni negli ambienti interni vengono mantenute.

Addestramento#

Addestra YOLO26n-depth sul dataset Depth8 per 100 epoche con dimensione delle immagini pari a 640. Per un elenco completo degli argomenti disponibili, consulta la pagina Configurazione.

Esempio
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.yaml")  # build a new model from YAML
model = YOLO("yolo26n-depth.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-depth.yaml").load("yolo26n-depth.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="depth8.yaml", epochs=100, imgsz=640)

Consulta i dettagli completi della modalità train nella pagina Train.

Fine-tuning sui tuoi dati#

Quando adatti un modello di profondità preaddestrato a un dataset personalizzato, riduci il learning rate e usa l'ottimizzatore AdamW. Le impostazioni predefinite dell'ottimizzatore sono ottimizzate per il training da zero (SGD con lr0=0.01); applicate a un modello di profondità già convergente, possono sovrascrivere le conoscenze preaddestrate e peggiorare i risultati, soprattutto durante il fine-tuning su un singolo dominio.

Procedura consigliata per il fine-tuning
from ultralytics import YOLO

model = YOLO("yolo26s-depth.pt")  # start from pretrained weights

model.train(
    data="path/to/your_dataset.yaml",
    epochs=20,
    imgsz=640,
    optimizer="AdamW",
    lr0=1e-4,  # ~100x below the from-scratch default
    warmup_bias_lr=1e-4,  # keep warmup gentle too
)

Suggerimenti aggiuntivi:

  • L'augmentation è controllata dagli args standard (degrees, translate, scale, shear, perspective, flipud, fliplr, hsv_h, hsv_s, hsv_v); la deformazione geometrica e i flip vengono applicati in modo identico alla mappa di profondità associata. Per vedere la procedura esatta usata per i pesi YOLO26-Depth rilasciati, esamina train_args, memorizzato nel checkpoint — consulta Ispezione degli argomenti di training del checkpoint YOLO26.
  • mosaic, mixup, cutmix e copy_paste non sono implementati per la profondità. Il data loader della profondità imposta automaticamente queste probabilità a 0, quindi passarle non ha alcun effetto. Queste augmentation non sono supportate perché combinano più immagini, producendo mappe di profondità associate non valide.
  • Qualsiasi intervallo di profondità funziona immediatamente. I modelli con head log predicono una profondità senza limiti, quindi si adattano a dati a corto raggio (macro) o a lungo raggio (esterni/guida) senza modifiche. L'impostazione di max_depth: nel file YAML del dataset (in metri) determina quali pixel GT contribuiscono alle metriche di validazione.
  • Mantieni le prestazioni generali. Se hai bisogno che il modello rimanga accurato su scene oltre quelle del training set, inserisci nei dati di training una piccola frazione (~5–10%) di immagini generiche diversificate; questo riduce sostanzialmente l'oblio durante il fine-tuning.
  • Addestra da zero (model=yolo26s-depth.yaml) solo se il tuo dominio è molto diverso e disponi di un dataset ampio; in questo caso l'SGD predefinito lr0=0.01 è appropriato, poiché non ci sono pesi preaddestrati da preservare.

Calibrazione della scala di profondità#

La head di profondità separa la forma (struttura relativa della scena) dalla scala (metri assoluti). Se un modello produce già una buona profondità relativa sulle tue scene, ma i valori assoluti non sono corretti per la tua fotocamera, puoi correggere la scala in pochi secondi con model.calibrate(): un fit in forma chiusa di un modello log-affine a due parametri su un piccolo set etichettato, senza training del gradiente e senza modificare i pesi della rete, quindi senza degradare la struttura relativa.

Calibrazione della scala
from ultralytics import YOLO

model = YOLO("yolo26s-depth.pt")

# Fit scale on a labeled split (~100+ images is enough), then persist it
model.calibrate(data="path/to/your_dataset.yaml")
model.save("yolo26s-depth-calibrated.pt")

La calibrazione richiede la profondità di riferimento con cui effettuare il fitting, quindi viene eseguita su uno split con annotazioni: non può avvenire durante un'inferenza alla cieca. Esegue il fitting e calcola i punteggi sugli stessi pixel valutati dalle metriche di validazione: i valori GT pari o superiori a max_depth del file YAML del dataset (100 m per impostazione predefinita) vengono esclusi. Usala quando la profondità relativa è già buona e il problema riguarda solo scala/intervallo; se invece per il tuo dominio deve cambiare anche la struttura relativa, esegui il fine-tuning.

L'addestramento lo fa automaticamente: dopo il completamento di model.train(...), i checkpoint migliore e più recente vengono calibrati sul set di validazione, così producono subito una profondità scalata metricamente.

I checkpoint yolo26*-depth.pt rilasciati includono già questa calibrazione, ottenuta sul mix di validazione del preaddestramento. Si tratta di un'unica scala globale per tutti i domini; per ottenere la massima accuratezza della profondità assoluta su una fotocamera o un tipo di scena specifico, esegui model.calibrate() su un piccolo split con annotazioni dei tuoi dati: sostituirà il fitting incluso nel modello.

Formato del dataset#

I dataset per la stima della profondità associano ogni immagine RGB a una mappa di profondità PNG uint16 scalata o a una mappa di profondità NPY in virgola mobile, espressa in metri. Per impostazione predefinita, i valori PNG usano i millimetri; i dataset con un'altra convenzione impostano depth_scale nel file YAML. Il loader ricava il percorso della profondità sostituendo il componente images con depth, preferendo .png e usando .npy come fallback.

dataset/
├── images/
│   ├── train/
│   └── val/
└── depth/
    ├── train/
    └── val/

Ad esempio, un'immagine in images/train/scene_001.jpg viene associata a una mappa di profondità in depth/train/scene_001.png. Consulta la Guida ai dataset per la stima della profondità per la specifica completa del formato.

Val#

Valuta l'accuratezza di un modello YOLO26n-depth addestrato su un dataset per la stima della profondità. Passa esplicitamente data in modo che la validazione utilizzi il file YAML del dataset previsto. I pesi rilasciati sono addestrati a imgsz=768, quindi per ottenere la massima accuratezza esegui validazione e predizione a quella dimensione.

Esempio
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="nyu-depth.yaml")
metrics.delta1  # percentage of pixels within threshold δ=1.25
metrics.abs_rel  # mean absolute relative error
metrics.rmse  # root mean squared error (meters)
metrics.silog  # scale-invariant logarithmic error

Predizione#

Usa un modello YOLO26n-depth addestrato per eseguire predizioni sulle immagini.

Esempio
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    depth_map = result.depth.data.cpu().numpy()  # torch.Tensor -> NumPy float32, shape (H, W), meters

Consulta la pagina Predict per tutti i dettagli sulla modalità predict.

Output dei risultati#

La stima della profondità YOLO restituisce un oggetto Results per ogni immagine. Ogni risultato contiene una mappa di profondità densa in virgola mobile per l'intera immagine.

AttributoTipoFormaDescrizione
result.depthDepthMap(H,W)Mappa di profondità densa per pixel.
result.depth.datatorch.Tensor(H,W)Valori di profondità in metri; chiama .cpu().numpy() per ottenere un array NumPy.
result.boxes--Nessun riquadro di istanza.
result.masks--Nessuna maschera di istanza.

Per i campi Results specifici dell'attività in tutte le attività, consulta la sezione Risultati delle predizioni per attività.

Colorazione della mappa di profondità#

La mappa di profondità grezza è un array float a canale singolo in metri: utile per i calcoli, ma difficile da leggere direttamente. Per trasformarla in un'immagine a colori, usa l'helper colorize_depth in ultralytics.utils.plotting, che mappa l'array di profondità (H, W) in un'immagine BGR (H, W, 3) uint8 (i pixel non validi <= 0 vengono visualizzati in nero).

result.plot() applica già questa colorazione sull'immagine di input usando i valori predefiniti (cmap="jet", mode="disparity"); chiama direttamente colorize_depth quando vuoi un'immagine di profondità colorata autonoma oppure una mappa di colori o una normalizzazione diversi.

Colorazione di una mappa di profondità predetta
import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import colorize_depth

model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg")[0]

depth = result.depth.data.cpu().numpy()  # (H, W) float32, meters

# Colorize with near = warm and save
cv2.imwrite("depth_colored.png", colorize_depth(depth, cmap="spectral"))  # (H, W, 3) BGR uint8

# Fix the range to 0-20 m so the same color means the same distance across frames
cv2.imwrite("depth_metric.png", colorize_depth(depth, vmin=0.0, vmax=20.0, cmap="inferno", mode="metric"))

# Blended overlay straight from the Results object (uses cmap="jet", mode="disparity")
result.save("depth_overlay.png")

Ogni mappa di colori va da freddo/scuro a caldo/chiaro. mode decide quale estremità rappresenta il vicino, mentre vmin/vmax fissano l'intervallo tra i frame, così un colore indica sempre la stessa distanza.

ArgomentoValoreDescrizione
cmapjet (predefinito)Blu ad alto contrasto → verde → rosso, la palette usata da result.plot().
cmapinfernoNero → viola → arancione → giallo. Uniforme dal punto di vista percettivo, adatta alle persone daltoniche e leggibile in scala di grigi.
cmapspectralRosso → giallo → verde → blu (matplotlib Spectral_r).
modedisparity (predefinito)Normalizza la profondità inversa (1/d) tra il 2° e il 98° percentile; i valori anomali vicini e lontani indicati dai colori caldi vengono assorbiti.
modemetricNormalizza linearmente la profondità in metri tra vmin e vmax; i colori caldi indicano le distanze maggiori, quindi i colori seguono la distanza reale.

Esportazione#

Esporta un modello YOLO26n-depth in un formato diverso, come ONNX, CoreML e così via.

Esempio
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Export the model
model.export(format="onnx")

I formati di esportazione disponibili per la stima della profondità con YOLO26 sono riportati nella tabella seguente. Puoi esportare in qualsiasi formato usando l'argomento format, ad esempio format='onnx' o format='engine'. Puoi eseguire predizioni o validazioni direttamente sui modelli esportati, ad esempio yolo predict model=yolo26n-depth.onnx. Al termine dell'esportazione vengono mostrati esempi di utilizzo per il tuo modello.

FormatoArgomento formatModelloMetadatiArgomenti
PyTorch-yolo26n-depth.pt-
TorchScripttorchscriptyolo26n-depth.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-depth.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-depth_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-depth.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-depth.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-depth_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-depth.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-depth_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-depth_paddle_model/imgsz, batch, device
MNNmnnyolo26n-depth.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-depth_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-depth_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-depth_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-depth_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-depth_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-depth_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-depth_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-depth.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-depth_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-depth_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-depth.aimodelimgsz, batch, quantize

nms=None utilizza i valori predefiniti per gli output grezzi per la NMS esterna. Imposta nms=False per selezionare una testa senza NMS disponibile; i formati non supportati ricorrono al loro percorso di output nativo. Le voci nms sopra indicano i formati che possono incorporare la NMS con nms=True.

Consulta la pagina Export per tutti i dettagli su export.

FAQ#

  • Prepara immagini RGB associate a PNG di profondità a 16 bit o mappe di profondità NPY in virgola mobile espresse in metri, quindi crea un file YAML del dataset che punti alla directory images/. Il loader trova automaticamente i file di profondità sostituendo images con depth nel percorso, preferendo .png e usando .npy come fallback.

    Parti da pesi preaddestrati e usa un learning rate basso con AdamW, così il fine-tuning conserva ciò che il modello già sa (per sapere perché, consulta Fine-tuning sui tuoi dati):

    Esempio
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26 depth model
    model = YOLO("yolo26s-depth.pt")
    
    # Fine-tune on a custom depth dataset
    results = model.train(
        data="path/to/your_dataset.yaml",
        epochs=20,
        imgsz=640,
        optimizer="AdamW",
        lr0=1e-4,
        warmup_bias_lr=1e-4,
    )

    Consulta la pagina Configurazione per altri argomenti disponibili.

  • La validazione della stima della profondità restituisce l'insieme di metriche usato da Depth Anything e dai relativi lavori sulla profondità monoculare:

    • delta1 / delta2 / delta3 — percentuale di pixel in cui il rapporto tra la profondità predetta e quella di riferimento (o il suo inverso) è inferiore a 1.25, 1.25² e 1.25³, rispettivamente. 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 alla scala. Valori più bassi sono migliori.

    Ogni predizione viene allineata alla mediana della relativa annotazione per immagine, ogni metrica viene finalizzata su quell'immagine e i risultati per immagine vengono mediati sul set di validazione; in questo modo ogni immagine pesa allo stesso modo, indipendentemente dal numero di pixel di profondità validi che contiene. Le immagini con meno di 10 pixel di riferimento validi vengono ignorate e non contribuiscono alla media, poiché allineare la mediana di pochi pixel non è significativo; le predizioni non finite vengono invece valutate ai limiti di profondità. Questo corrisponde alla media per campione e alla soglia minima di 10 pixel usate da Depth Anything V2.

  • La mappa di profondità viene memorizzata come torch.Tensor di forma (H, W), dove ogni valore rappresenta la profondità predetta in metri (usa result.depth.data.cpu().numpy() per ottenere un array NumPy float32). Accedi alla mappa tramite result.depth.data dopo aver eseguito la predizione. La mappa è allineata alla risoluzione dell'immagine di input.

  • Ultralytics YOLO26 fornisce configurazioni YAML integrate per diversi dataset di stima della profondità, tra cui NYU Depth V2, KITTI, Hypersim, SUN RGB-D e ARKitScenes. Consulta la Guida ai dataset per la stima della profondità per l'elenco completo e i dettagli sul formato.

  • Valida un modello YOLO26 preaddestrato per la profondità fornendo il file YAML del dataset usato per la valutazione:

    Esempio
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-depth.pt")
    
    # Validate the model
    metrics = model.val(data="nyu-depth.yaml")
    print("delta1:", metrics.delta1)
    print("abs_rel:", metrics.abs_rel)
    print("rmse:", metrics.rmse)
  • Esporta un modello YOLO26 per la profondità in ONNX con Python o CLI:

    Esempio
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-depth.pt")
    
    # Export the model to ONNX format
    model.export(format="onnx")

    Per maggiori dettagli sull'esportazione in vari formati, consulta la pagina Export.

Commenti