Лихэ Ян 1 · Биньи Кан 2† · Цзилун Хуан 2
Чжэнь Чжао · Сяоган Сюй · Цзяши Фэн 2 · Хэншуан Чжао 1*
1 HKU 2 TikTok
†руководитель проекта *соответствующий автор
Эта работа представляет Depth Anything V2. Он значительно превосходит V1 по детализации и надежности. По сравнению с моделями на основе SD, он имеет более высокую скорость вывода, меньшее количество параметров и более высокую точность глубины.
Мы предоставляем четыре модели различного масштаба для надежной оценки относительной глубины:
Модель | Параметры | Контрольно-пропускной пункт |
---|---|---|
Глубина-Что угодно-V2-Маленькая | 24,8 млн. | Скачать |
Глубина-Что-нибудь-V2-База | 97,5 млн. | Скачать |
Глубина-Что угодно-V2-Большая | 335,3 млн. | Скачать |
Глубина-Что-нибудь-V2-Гигант | 1,3Б | Вскоре |
git clone https://github.com/DepthAnything/Depth-Anything-V2
cd Depth-Anything-V2
pip install -r requirements.txt
Загрузите перечисленные здесь контрольные точки и поместите их в каталог checkpoints
.
import cv2
import torch
from depth_anything_v2 . dpt import DepthAnythingV2
DEVICE = 'cuda' if torch . cuda . is_available () else 'mps' if torch . backends . mps . is_available () else 'cpu'
model_configs = {
'vits' : { 'encoder' : 'vits' , 'features' : 64 , 'out_channels' : [ 48 , 96 , 192 , 384 ]},
'vitb' : { 'encoder' : 'vitb' , 'features' : 128 , 'out_channels' : [ 96 , 192 , 384 , 768 ]},
'vitl' : { 'encoder' : 'vitl' , 'features' : 256 , 'out_channels' : [ 256 , 512 , 1024 , 1024 ]},
'vitg' : { 'encoder' : 'vitg' , 'features' : 384 , 'out_channels' : [ 1536 , 1536 , 1536 , 1536 ]}
}
encoder = 'vitl' # or 'vits', 'vitb', 'vitg'
model = DepthAnythingV2 ( ** model_configs [ encoder ])
model . load_state_dict ( torch . load ( f'checkpoints/depth_anything_v2_ { encoder } .pth' , map_location = 'cpu' ))
model = model . to ( DEVICE ). eval ()
raw_img = cv2 . imread ( 'your/image/path' )
depth = model . infer_image ( raw_img ) # HxW raw depth map in numpy
Если вы не хотите клонировать этот репозиторий, вы также можете загрузить наши модели через Трансформеры. Ниже приведен простой фрагмент кода. Пожалуйста, обратитесь к официальной странице для более подробной информации.
from transformers import pipeline
from PIL import Image
pipe = pipeline ( task = "depth-estimation" , model = "depth-anything/Depth-Anything-V2-Small-hf" )
image = Image . open ( 'your/image/path' )
depth = pipe ( image )[ "depth" ]
python run.py
--encoder < vits | vitb | vitl | vitg >
--img-path < path > --outdir < outdir >
[--input-size < size > ] [--pred-only] [--grayscale]
Параметры:
--img-path
: вы можете либо 1) указать на каталог изображений, в котором хранятся все интересующие вас изображения, 2) указать на одно изображение или 3) указать на текстовый файл, в котором хранятся все пути к изображениям.--input-size
(необязательно): по умолчанию мы используем входной размер 518
для вывода модели. Вы можете увеличить размер для получения еще более точных результатов.--pred-only
(необязательно): сохраните только прогнозируемую карту глубины без необработанного изображения.--grayscale
(необязательно): сохранить карту глубины в оттенках серого без применения цветовой палитры.Например:
python run.py --encoder vitl --img-path assets/examples --outdir depth_vis
python run_video.py
--encoder < vits | vitb | vitl | vitg >
--video-path assets/examples_video --outdir video_depth_vis
[--input-size < size > ] [--pred-only] [--grayscale]
Наша более крупная модель имеет лучшую временную согласованность на видео.
Чтобы использовать нашу демонстрационную версию Gradio локально:
python app.py
Вы также можете попробовать нашу онлайн-демо.
Примечание. По сравнению с версией V1 мы внесли незначительные изменения в архитектуру DINOv2-DPT (исходя из этой проблемы). В V1 мы непреднамеренно использовали для декодирования функции последних четырех уровней DINOv2. В V2 вместо этого мы используем промежуточные функции. Хотя эта модификация не улучшила детализацию или точность, мы решили последовать этой общепринятой практике.
Пожалуйста, обратитесь к метрической оценке глубины.
Пожалуйста, обратитесь к тесту DA-2K.
Мы искренне ценим поддержку сообщества нашей серии Depth Anything. Большое спасибо!
Мы искренне благодарны замечательной команде Hugging Face (@Pedro Cuenca, @Niels Rogge, @Merve Noyan, @Amy Roberts и др.) за их огромные усилия по поддержке наших моделей в Transformers и Apple Core ML.
Мы также благодарим команду DINOv2 за предоставление нашему сообществу таких впечатляющих моделей.
Модель Depth-Anything-V2-Small находится под лицензией Apache-2.0. Модели Depth-Anything-V2-Base/Large/Giant находятся под лицензией CC-BY-NC-4.0.
Если вы считаете этот проект полезным, пожалуйста, процитируйте:
@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 }
}
@inproceedings { depth_anything_v1 ,
title = { Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data } ,
author = { Yang, Lihe and Kang, Bingyi and Huang, Zilong and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang } ,
booktitle = { CVPR } ,
year = { 2024 }
}