Переглянути як Markdown

Depth Anything V2

Depth Anything V2 є енкодером DINOv2 із декодером DPT, який передбачає щільну карту відносної оберненої глибини з одного зображення. LibreYOLO підтримує її для завдання глибини: передбачення та валідація без прикладів без шляху навчання.

Задачі
depth
Розміри
s, b, l, g at 518 px
Встановлення
pip install libreyolo
Рівень підтримки
Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
Depth Anything V2, автори: The University of Hong Kong and TikTok, ліцензія Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Стаття, джерело
Ліцензії
Код: Apache-2.0, ваги: Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Комерційне використання

Встановлення

Depth Anything V2 не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.

bash
pip install libreyolo

Передбачення

Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.

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
Читання карти глибини
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE) depth = result.depth_map    # DepthMap: щільна (H, W), більше означає ближчеraw = depth.data                # Тензор без метричної одиниці чи масштабу між зображеннямиnormalized = depth.normalized() # Масштабовано до [0, 1] для візуалізації

result.depth_map містить щільну карту відносної оберненої глибини: більші значення означають ближче до камери, а значення не мають метричної одиниці чи спільного масштабу між зображеннями. save=True записує на диск візуалізацію цієї карти з кольоровою шкалою; Results.plot() не охоплює це сімейство, оскільки визначений лише для нормалей поверхні та країв. Вхідна роздільна здатність має ділитися на 14, розмір сітки патчів DINOv2, на якій побудовано голову DPT. LibreYOLO перевіряє це до запуску й спричиняє помилку за невідповідності. Типи джерел, потокове передбачення та обробку результатів описано в розділі передбачення.

Варіанти

Доступні чотири розміри енкодера s/b/l/g, що відповідають ViT-S/B/L/G. У таблиці контрольних точок нижче наведено лише s, b і l; контрольну точку Giant не опубліковано. Усі чотири мають однакову вхідну роздільну здатність, тому вибір розміру змінює місткість енкодера, а не розмір зображення. Ліцензія також впливає на вибір: контрольна точка Small має Apache-2.0, а Base і Large мають CC-BY-NC-4.0, див. розділ «Ліцензування» нижче.

Навчання й донавчання для цього сімейства не пропонуються. LibreDepthAnythingV2.train() завжди спричиняє NotImplementedError; натомість перетворіть сумісну початкову контрольну точку за допомогою weights/convert_depth_anything_v2_weights.py.

Валідація

val() запускає спільний валідатор глибини: він вирівнює кожне передбачення з еталонними даними за масштабом і зсувом методом найменших квадратів для кожного зображення, а потім повідомляє стандартні метрики відносної глибини без навчальних прикладів AbsRel, RMSE і три пороги 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

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
depthdepth to ONNX: підтримуєтьсяdepth to TorchScript: підтримуєтьсяdepth to ExecuTorch: підтримуєтьсяdepth to TensorRT: підтримуєтьсяdepth to OpenVINO: підтримуєтьсяdepth to Paddle: не підтримуєтьсяdepth to MNN: не підтримуєтьсяdepth to RKNN: не підтримуєтьсяdepth to ncnn: не підтримуєтьсяdepth to TFLite: не підтримуєтьсяdepth to CoreML: не підтримуєтьсяdepth to Core AI: підтримується

Експортований артефакт знову завантажується через LibreYOLO() відповідно до суфікса файлу, тому файл .onnx або .engine поводиться як контрольна точка й повертає той самий об'єкт Results із depth_map замість рамок. У розділі експорту наведено аргументи, які приймає кожен формат.

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
Використання експортованого файлу
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreDepthAnythingV2s-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Контрольні точки

Усі опубліковані файли ваг цього сімейства.

ФайлВхід (пікс.)Ліцензія ваг
depth
LibreDepthAnythingV2s-depth.ptapache-2.0
LibreDepthAnythingV2l-depth.ptcc-by-nc-4.0
LibreDepthAnythingV2b-depth.ptcc-by-nc-4.0

Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
Depth Anything V2, The University of Hong Kong and TikTok
Ліцензія першоджерела
Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)
Джерело першоджерела
github.com/DepthAnything/Depth-Anything-V2
Код LibreYOLO
MIT
Ваги
Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints), повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
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.

Цитування

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

Скопійовано з блоку цитування авторів на сторінці github.com/DepthAnything/Depth-Anything-V2#citation.

Перевірено з LibreYOLO v1.5.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.