Посмотреть как Markdown

Depth Anything V2

Depth Anything V2 — энкодер DINOv2 в паре с декодером DPT, который по одному изображению предсказывает плотную карту относительной обратной глубины. В LibreYOLO он поддержан для задачи depth: предсказание и zero-shot валидация, без пути обучения.

Задачи
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 не требует установки дополнительных extra-пакетов. Всё, что он импортирует, входит в базовую установку.

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; вместо этого сконвертируйте совместимый чекпойнт из upstream-проекта скриптом weights/convert_depth_anything_v2_weights.py.

Валидация

val() запускает общий валидатор глубины: он выравнивает каждое предсказание с эталонной разметкой (ground truth), подбирая по методу наименьших квадратов масштаб и сдвиг для каждого изображения, а затем выдаёт стандартные метрики относительной глубины в режиме zero-shot — 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. Таблицы поддержки, чекпойнты и результаты бенчмарков на этой странице сгенерированы из выпущенной библиотеки и опубликованных весов, а не написаны вручную.