Depth Anything V2

Depth Anything V2 to enkoder DINOv2 sparowany z dekoderem DPT, który przewiduje gęstą względną mapę odwrotnej głębi z pojedynczego obrazu. LibreYOLO obsługuje go dla zadania głębi: predykcja i walidacja zero-shot, bez ścieżki uczenia.

Zadania
depth
Rozmiary
s, b, l, g at 518 px
Instalacja
pip install libreyolo
Poziom obsługi
Tylko inferencja, od wersji v. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
Projekt źródłowy
Depth Anything V2, autorzy: The University of Hong Kong and TikTok, licencja: Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Publikacja, kod źródłowy
Licencje
Kod: Apache-2.0, wagi: Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Użycie komercyjne

Instalacja

Depth Anything V2 nie potrzebuje żadnych dodatkowych opcji. Wszystko, co importuje, znajduje się w instalacji bazowej.

bash
pip install libreyolo

Predykcja

Wagi są pobierane z Hugging Face przy pierwszym użyciu i są przechowywane w pamięci lokalnej.

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
Odczytaj mapę głębi
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE) depth = result.depth_map    # DepthMap: gęste (H, W), wyższe = bliżejraw = depth.data                # tensor, brak jednostki miary lub skali między obrazaminormalized = depth.normalized() # przeskalowano do [0, 1] w celu wizualizacji

result.depth_map przenosi gęstą względną mapę odwrotnej głębokości: wyższe wartości oznaczają bliżej kamery, a wartości te nie mają jednostki metrycznej ani skali międzyobrazowej. save=True zapisuje wizualizację tej mapy z kolorami na dysk; Results.plot() nie obejmuje tej rodziny, ponieważ jest zdefiniowana tylko dla normalnych powierzchni i krawędzi. Rozdzielczość wejściowa musi dzielić się dokładnie przez 14, czyli przez siatkę patchy DINOv2, na której buduje się głowica DPT; LibreYOLO sprawdza to przed uruchomieniem i zgłasza błąd, jeśli tak nie jest. Zobacz predykcja dla źródeł, streaming i obsługi wyników.

Warianty

Cztery rozmiary enkodera, s/b/l/g, odpowiadające ViT-S/B/L/G. Poniższa tabela checkpointów wymienia tylko s, b i l; checkpoint Giant nie został opublikowany. Wszystkie cztery mają taką samą rozdzielczość wejściową, więc wybór rozmiaru dotyczy pojemności enkodera, a nie rozmiaru obrazu. Licencjonowanie również ma znaczenie: checkpoint Small to Apache-2.0, natomiast Base i Large to CC-BY-NC-4.0, zobacz poniżej w sekcji Licencjonowanie.

Trenowanie i dostrajanie nie są oferowane dla tej rodziny. LibreDepthAnythingV2.train() zgłasza NotImplementedError bezwarunkowo; zamiast tego skonwertuj zgodny checkpoint upstream, z weights/convert_depth_anything_v2_weights.py.

Walidacja

val() uruchamia wspólny walidator głębokości: dopasowuje każdą prognozę do jej prawdziwej wartości przy użyciu skalowania i przesunięcia najmniejszych kwadratów dla każdego obrazu, a następnie raportuje standardowe metryki względnej głębokości zero-shot, AbsRel, RMSE oraz trzy progi 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

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
depthdepth to ONNX: obsługiwanedepth to TorchScript: obsługiwanedepth to ExecuTorch: obsługiwanedepth to TensorRT: obsługiwanedepth to OpenVINO: obsługiwanedepth to Paddle: brak obsługidepth to MNN: brak obsługidepth to RKNN: brak obsługidepth to ncnn: brak obsługidepth to TFLite: brak obsługidepth to CoreML: brak obsługidepth to Core AI: obsługiwane

Eksportowany artefakt ładuje się ponownie przez LibreYOLO() na jego rozszerzeniu pliku, więc plik .onnx lub .engine zachowuje się jak checkpoint i zwraca ten sam Results, z depth_map zamiast skrzynek. Eksport wymienia argumenty, które akceptuje każdy format.

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
Użyj wyeksportowanego pliku
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Fabryka kieruje na podstawie rozszerzenia pliku, więc eksportowany artefakt się ładuje# jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreDepthAnythingV2s-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Checkpointy

Każdy opublikowany plik wag dla tej rodziny.

PlikWejście (px)Licencja wag
depth
LibreDepthAnythingV2s-depth.ptapache-2.0
LibreDepthAnythingV2l-depth.ptcc-by-nc-4.0
LibreDepthAnythingV2b-depth.ptcc-by-nc-4.0

Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.

Licencjonowanie

Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.

To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.

Oryginalna praca
Depth Anything V2, The University of Hong Kong and TikTok
Licencja projektu źródłowego
Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)
Kod LibreYOLO
MIT
Wagi
Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints), ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
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.

Cytowanie

@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}
}

Skopiowano z bloku cytowania autorów w github.com/DepthAnything/Depth-Anything-V2#citation.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.