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.
pip install libreyoloPredykcja
Wagi są pobierane z Hugging Face przy pierwszym użyciu i są przechowywane w pamięci lokalnej.
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: 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 wizualizacjiresult.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.
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.yamlEksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| depth | depth to ONNX: obsługiwane | depth to TorchScript: obsługiwane | depth to ExecuTorch: obsługiwane | depth to TensorRT: obsługiwane | depth to OpenVINO: obsługiwane | depth to Paddle: brak obsługi | depth to MNN: brak obsługi | depth to RKNN: brak obsługi | depth to ncnn: brak obsługi | depth to TFLite: brak obsługi | depth to CoreML: brak obsługi | depth 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.
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 # 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.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| depth | ||
| LibreDepthAnythingV2s-depth.pt | apache-2.0 | |
| LibreDepthAnythingV2l-depth.pt | cc-by-nc-4.0 | |
| LibreDepthAnythingV2b-depth.pt | cc-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 źródłowy projektu
- github.com/DepthAnything/Depth-Anything-V2
- 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.