Depth Pro - базовая модель для метрической монокулярной оценки глубины по по одному изображению в режиме zero-shot. Она позволяет синтезировать Hi-Res карты глубины с высокой точностью определения границ объектов, воспроизводя их форму, расположение и абсолютный масштаб без использования метаданных камеры.
Архитектура модели основана на применении энкодеров ViT к фрагментам изображения, извлеченным в нескольких масштабах.
Используются два кодировщика ViT: фрагментный энкодер, обрабатывающий блоки изображения для изучения масштабно-инвариантных представлений и энкодер изображения, фиксирующий предсказания в глобальном контексте.
Модель работает с фиксированным разрешением 1536x1536 пикселей, а каждый из модулей ViT - 384x384 пикселей.
Для обучения используются 5 целевых функций (LMAE, LMSE, LMAGE, LMALE и LMSGE ) на основе канонической обратной глубины и применяется двухэтапный план обучения. Набор данных состоит из 43 датасетов.
Первый этап учит обобщающим признакам, основанным на смеси реальных и синтетических данных, а второй — повышению резкости границ на синтетических данных с точной информацией о глубине.
Модель показала высокую точность на различных наборах данных (Booster, ETH3D, Middlebury, nuScenes, Sintel и Sun-RGBD91011) .
Depth Pro превзошла другие методы по точности оценки фокусного расстояния на наборах данных DDDP, FiveK, PPR10K, RAISE, SPAQ и ZOOM.
Скорость инференса, замеренная в тестировании - 0,3 секунды на генерацию карты глубины 2,25-мегапиксельного изображения.
# setting up a venv:
conda create -n depth-pro -y python=3.9
conda activate depth-pro
pip install -e .
# Download pretrained checkpoints:
source get_pretrained_models.sh
# Run the inference from CLI on a single image:
depth-pro-run -i ./data/example.jpg
# Running from python
from PIL import Image
import depth_pro
model, transform = depth_pro.create_model_and_transforms()
model.eval()
image, _, f_px = depth_pro.load_rgb(image_path)
image = transform(image)
prediction = model.infer(image, f_px=f_px)
depth = prediction["depth"] # Depth in [m].
focallength_px = prediction["focallength_px"] # Focal length in pixels.
@ai_machinelearning_big_data
#AI #ML #ViT #Depth #Apple
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39👍18❤7🥰1
Distill-Any-Depth - метод обучения моделей монокулярной оценки глубины, который сочетает кросс-контекстную дистилляцию и мульти-учительский подход для точного определения расстояния до объектов на RGB-изображении. Он предназначен для обучения моделей (например, DPT, MiDaS или DepthAnythingv2), которые учатся на псевдо-метках, сгенерированных учительскими моделями (Genpercept, DepthAnythingv2).
Метод не просто улучшает существующие алгоритмы, но и задает новый стандарт в области определения глубины. Методика может применяться в сфере автономного транспорта и AR-решений. Она может ускорить создание точных 3D-карт для навигации и улучшить реалистичность виртуальных миров за счет детализированного анализа пространства. При этом, обучение CV-моделей с Distill-Any-Depth довольно энергоэффективно — достаточно одной NVIDIA V100.
Основа Distill-Any-Depth - кросс-контекстная дистилляция, объединяющая 2 сценария:
Shared-Context Distillation
— модель-учитель и модель-ученик обучаются на одинаковых фрагментах изображения.Local-Global Distillation
— модель-учитель анализирует локальные фрагменты, а модель-ученик предсказывает глубину для всего изображения, отвечая за глобальную согласованность сцены.Экспериментальная модель обучалась на 50 тыс. изображений из SA-1B с разрешением 560×560. Использовались псевдо-метки от Genpercept (диффузионная модель) и DepthAnythingv2 (DINOv2). В рамках мульти-учительского подхода на каждой итерации случайно выбирался один учитель.
На тестах DIODE и ETH3D метод сократил значение AbsRel на 9.6–20% по сравнению с базовой дистилляцией. Например, при обучении модели-ученика DPT с учителями Genpercept и DepthAnythingv2 AbsRel на ETH3D составил 0.065 против 0.096 у Genpercept.
На бенчмарках NYUv2, KITTI, ScanNet модель достигла SOTA: AbsRel 0.043 (NYUv2), 0.070 (KITTI), 0.042 (ScanNet). В сравнении с DepthAnything v2 (AbsRel: 0.045 на NYUv2) и Marigold (0.055) Distill-Any-Depth показал более высокую детализацию и точность относительной глубины.
# Create Conda env
conda create -n distill-any-depth -y python=3.10
conda activate distill-any-depth
# Clone Repo
git clone https://github.com/rmurai0610/MASt3R-SLAM.git --recursive
cd MASt3R-SLAM/
# Install dependencies
pip install -r requirements.txt
pip install -e .
# If use hf_hub_download, you can use the following code
checkpoint_path = hf_hub_download(repo_id=f"xingyang1/Distill-Any-Depth", filename=f"large/model.safetensors", repo_type="model")
# Launch Gradio demo
python app.py
@ai_machinelearning_big_data
#AI #ML #Depth #DIstillAnyDepth
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥21❤18🥰2