Als Markdown anzeigen

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.

bash
pip install libreyolo

Vorhersage

Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.

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
Tiefenkarte lesen
from 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] skaliert

result.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.

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

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
depthdepth to ONNX: unterstütztdepth to TorchScript: unterstütztdepth to ExecuTorch: unterstütztdepth to TensorRT: unterstütztdepth to OpenVINO: unterstütztdepth to Paddle: nicht unterstütztdepth to MNN: nicht unterstütztdepth to RKNN: nicht unterstütztdepth to ncnn: nicht unterstütztdepth to TFLite: nicht unterstütztdepth to CoreML: nicht unterstütztdepth 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.

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
Exportierte Datei verwenden
from 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.

DateiEingabe (px)Lizenz der Gewichte
depth
LibreDepthAnythingV2s-depth.ptapache-2.0
LibreDepthAnythingV2l-depth.ptcc-by-nc-4.0
LibreDepthAnythingV2b-depth.ptcc-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)
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.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.