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.
pip install libreyoloPredizione
I pesi vengono scaricati da Hugging Face al primo utilizzo e restano in cache in locale.
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)libreyolo predict model=LibreDepthAnythingV2s-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom 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 visualizzazioneresult.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.
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"])libreyolo val model=LibreDepthAnythingV2s-depth.pt data=my-dataset.yamlEsportazione
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| depth | depth to ONNX: supportato | depth to TorchScript: supportato | depth to ExecuTorch: supportato | depth to TensorRT: supportato | depth to OpenVINO: supportato | depth to Paddle: non supportato | depth to MNN: non supportato | depth to RKNN: non supportato | depth to ncnn: non supportato | depth to TFLite: non supportato | depth to CoreML: non supportato | depth 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreDepthAnythingV2s-depth.pt format=onnxlibreyolo export model=LibreDepthAnythingV2s-depth.pt format=tensorrt half=Truefrom 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.
| File | Ingresso (px) | Licenza dei pesi |
|---|---|---|
| depth | ||
| LibreDepthAnythingV2s-depth.pt | apache-2.0 | |
| LibreDepthAnythingV2l-depth.pt | cc-by-nc-4.0 | |
| LibreDepthAnythingV2b-depth.pt | cc-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)
- Sorgente upstream
- github.com/DepthAnything/Depth-Anything-V2
- 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.