Depth Anything V2

Depth Anything V2 è un encoder DINOv2 abbinato a un decoder DPT che predice una mappa densa di profondità inversa relativa a partire da una sola immagine. LibreYOLO lo supporta per il task depth: predizione e validazione zero-shot, senza percorso di addestramento.

Task
depth
Dimensioni
s, b, l, g at 518 px
Installa
pip install libreyolo
Livello di supporto
Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
Origine
Depth Anything V2 di The University of Hong Kong and TikTok, Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Articolo, sorgente
Licenze
Codice Apache-2.0, pesi Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Uso commerciale

Installazione

Depth Anything V2 non richiede nessun extra opzionale. Tutto ciò che importa è già nell'installazione base.

bash
pip install libreyolo

Predizione

I pesi vengono scaricati da Hugging Face al primo utilizzo e restano in cache in locale.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE, save=True) depth = result.depth_mapprint(depth.min, depth.max, depth.mean)
CLI
libreyolo predict model=LibreDepthAnythingV2s-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Leggere la mappa di profondità
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE) depth = result.depth_map    # DepthMap: densa (H, W), più alto = più vicinoraw = depth.data                # tensore, senza unità metrica né scala fra immagininormalized = depth.normalized() # riscalata in [0, 1] per la visualizzazione

result.depth_map contiene una mappa densa di profondità inversa relativa: valori più alti indicano una maggiore vicinanza alla camera, e i valori non hanno unità metrica né scala confrontabile fra immagini. save=True scrive su disco una visualizzazione della mappa con una colormap; Results.plot() non copre questa famiglia, perché è definito solo per le normali di superficie e i contorni. La risoluzione di input deve essere divisibile per 14, la griglia di patch DINOv2 su cui si appoggia la testa DPT; LibreYOLO lo verifica prima di eseguire e solleva un errore se non lo è. Vedi predizione per sorgenti, streaming e gestione dei risultati.

Varianti

Quattro dimensioni di encoder, s/b/l/g, corrispondenti a ViT-S/B/L/G. La tabella dei checkpoint qui sotto elenca solo s, b e l; nessun checkpoint Giant è stato pubblicato. Tutte e quattro condividono la stessa risoluzione di input, quindi scegliere una dimensione significa scambiare capacità dell'encoder, non dimensione dell'immagine. Anche la licenza conta: il checkpoint Small è Apache-2.0, mentre Base e Large sono CC-BY-NC-4.0, vedi Licenze più sotto.

L'addestramento e il fine-tuning non sono offerti per questa famiglia. LibreDepthAnythingV2.train() solleva sempre NotImplementedError; converti invece un checkpoint upstream compatibile, con weights/convert_depth_anything_v2_weights.py.

Validazione

val() esegue il validatore depth condiviso: allinea ogni predizione al suo ground truth con una scala e uno shift ai minimi quadrati calcolati per immagine, poi riporta le metriche standard di profondità relativa zero-shot, AbsRel, RMSE e le tre soglie delta.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/abs_rel"])print(metrics["metrics/rmse"])print(metrics["metrics/delta1"])
CLI
libreyolo val model=LibreDepthAnythingV2s-depth.pt data=my-dataset.yaml

Esportazione

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
depthdepth to ONNX: supportatodepth to TorchScript: supportatodepth to ExecuTorch: supportatodepth to TensorRT: supportatodepth to OpenVINO: supportatodepth to Paddle: non supportatodepth to MNN: non supportatodepth to RKNN: non supportatodepth to ncnn: non supportatodepth to TFLite: non supportatodepth to CoreML: non supportatodepth to Core AI: supportato

Un artefatto esportato si ricarica con LibreYOLO() in base al suffisso del file, quindi un file .onnx o .engine si comporta come un checkpoint e restituisce lo stesso Results, con depth_map al posto dei box. Esportazione elenca gli argomenti che ogni formato accetta.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreDepthAnythingV2s-depth.pt format=onnxlibreyolo export model=LibreDepthAnythingV2s-depth.pt format=tensorrt half=True
Usare il file esportato
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory sceglie in base al suffisso del file, quindi un artefatto esportato# si carica come un qualsiasi checkpoint e restituisce lo stesso oggetto Results.model = LibreYOLO("LibreDepthAnythingV2s-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Checkpoint

Tutti i file di pesi pubblicati per questa famiglia.

FileIngresso (px)Licenza dei pesi
depth
LibreDepthAnythingV2s-depth.ptapache-2.0
LibreDepthAnythingV2l-depth.ptcc-by-nc-4.0
LibreDepthAnythingV2b-depth.ptcc-by-nc-4.0

Oggi tutti i file elencati sopra sono presenti nell<link>organizzazione LibreYOLO</link> e vengono scaricati al primo utilizzo.

Licenze

Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.

Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.

Lavoro originale
Depth Anything V2, The University of Hong Kong and TikTok
Licenza upstream
Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)
Codice LibreYOLO
MIT
Pesi
Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints), ripubblicati su huggingface.co/LibreYOLO
Interpretazione
The two licenses are not interchangeable. The Small checkpoint is Apache-2.0, a permissive license: it can be used in commercial and closed-source products, it asks you to keep its license text and attribution notices with any redistributed copy, and it grants a patent license. The Base and Large checkpoints are CC-BY-NC-4.0, which forbids commercial use outright and requires attribution on any redistribution, so treat them as research and evaluation weights unless you obtain separate terms from the authors. LibreYOLO's own code for this family is MIT throughout, and training is not offered for this family so there is no self-trained-weights exception to reach for.

Citazione

@article{depth_anything_v2,
  title={Depth Anything V2},
  author={Yang, Lihe and Kang, Bingyi and Huang, Zilong and Zhao, Zhen and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang},
  journal={arXiv:2406.09414},
  year={2024}
}

Copiato dal blocco di citazione degli autori disponibile su github.com/DepthAnything/Depth-Anything-V2#citation.

Verificato con LibreYOLO v1.5.0. Le tabelle di supporto, i checkpoint e i dati dei benchmark in questa pagina vengono generati dalla libreria rilasciata e dai pesi pubblicati, non scritti a mano.