Depth Anything V2
Depth Anything V2 kombiniert einen DINOv2-Encoder mit einem DPT-Decoder und sagt aus einem einzelnen Bild eine dichte Karte der relativen inversen Tiefe vorher. LibreYOLO unterstützt das Modell für die Tiefenaufgabe: Vorhersage und Zero-Shot-Validierung ohne Trainingspfad.
- Aufgaben
- depth
- Größen
- s, b, l, g at 518 px
- Installation
pip install libreyolo- Supportstufe
- Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
- Upstream
- Depth Anything V2 von The University of Hong Kong and TikTok, Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Publikation, Quelle
- Lizenzen
- Code Apache-2.0, Gewichte Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Kommerzielle Nutzung
Installation
Depth Anything V2 benötigt kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten.
pip install libreyoloVorhersage
Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.
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: dicht (H, W), größer = näherraw = depth.data # Tensor ohne metrische Einheit oder bildübergreifende Skalanormalized = depth.normalized() # für die Visualisierung auf [0, 1] skaliertresult.depth_map enthält eine dichte Karte der relativen inversen Tiefe: Höhere
Werte bedeuten eine geringere Entfernung zur Kamera. Die Werte haben weder eine
metrische Einheit noch eine bildübergreifende Skala. save=True schreibt eine
farbkodierte Visualisierung dieser Karte auf den Datenträger. Results.plot()
unterstützt diese Familie nicht, weil es nur für Oberflächennormalen und Kanten
definiert ist. Die Eingabeauflösung muss ohne Rest durch 14 teilbar sein. Dies
entspricht dem DINOv2-Patch-Raster, auf dem der DPT-Head aufbaut. LibreYOLO prüft
das vor der Ausführung und löst andernfalls einen Fehler aus. Unter
Vorhersage findest du Quellen, Streaming und die Verarbeitung
von Ergebnissen.
Varianten
Es gibt vier Encoder-Größen s/b/l/g, die ViT-S/B/L/G entsprechen. Die folgende Checkpoint-Tabelle führt nur s, b und l auf, weil kein Giant-Checkpoint veröffentlicht ist. Alle vier verwenden dieselbe Eingabeauflösung. Mit der Wahl einer Größe änderst du daher die Kapazität des Encoders, nicht die Bildgröße. Auch die Lizenz spielt eine Rolle: Der Small-Checkpoint steht unter Apache-2.0, Base und Large dagegen unter CC-BY-NC-4.0. Weitere Informationen findest du unten unter Lizenzierung.
Für diese Familie werden weder Training noch Fine-Tuning angeboten.
LibreDepthAnythingV2.train() löst immer NotImplementedError aus. Konvertiere
stattdessen einen kompatiblen Upstream-Checkpoint mit
weights/convert_depth_anything_v2_weights.py.
Validierung
val() führt den gemeinsamen Tiefenvalidator aus: Er richtet jede Vorhersage
mit einer bildweisen Least-Squares-Skalierung und -Verschiebung an ihrer Ground
Truth aus und meldet anschließend die üblichen relativen Zero-Shot-Tiefenmetriken
AbsRel, RMSE und die drei Delta-Schwellenwerte.
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.yamlExport
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| depth | depth to ONNX: unterstützt | depth to TorchScript: unterstützt | depth to ExecuTorch: unterstützt | depth to TensorRT: unterstützt | depth to OpenVINO: unterstützt | depth to Paddle: nicht unterstützt | depth to MNN: nicht unterstützt | depth to RKNN: nicht unterstützt | depth to ncnn: nicht unterstützt | depth to TFLite: nicht unterstützt | depth to CoreML: nicht unterstützt | depth to Core AI: unterstützt |
Ein exportiertes Artefakt wird anhand seiner Dateiendung wieder über LibreYOLO()
geladen. Eine .onnx- oder .engine-Datei verhält sich daher wie ein Checkpoint,
gibt dasselbe Results-Objekt zurück und enthält depth_map anstelle von Boxen.
Export führt die Argumente auf, die von den einzelnen Formaten
akzeptiert werden.
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 # Die Factory entscheidet anhand der Dateiendung, daher wird ein Exportartefakt# wie jeder Checkpoint geladen und gibt dasselbe Results-Objekt zurück.model = LibreYOLO("LibreDepthAnythingV2s-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)Checkpoints
Alle veröffentlichten Gewichtsdateien dieser Familie.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| depth | ||
| LibreDepthAnythingV2s-depth.pt | apache-2.0 | |
| LibreDepthAnythingV2l-depth.pt | cc-by-nc-4.0 | |
| LibreDepthAnythingV2b-depth.pt | cc-by-nc-4.0 | |
Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.
Lizenzierung
Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.
Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.
- Originalarbeit
- Depth Anything V2, The University of Hong Kong and TikTok
- Upstream-Lizenz
- Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)
- Upstream-Quelle
- github.com/DepthAnything/Depth-Anything-V2
- LibreYOLO-Code
- MIT
- Gewichte
- Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints), erneut unter huggingface.co/LibreYOLO veröffentlicht
- Einordnung
- 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.
Zitieren
@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}
}Aus dem Zitierblock der Autoren unter github.com/DepthAnything/Depth-Anything-V2#citation kopiert.