楊立和1 ·康丙一2† ·黃子龍2
趙震·徐曉剛·馮嘉世2 ·趙恆爽1*
1香港大學2抖音
†專案負責人*通訊作者
這項工作呈現了 Depth Anything V2。它在細粒度細節和魯棒性方面明顯優於 V1。與基於SD的模型相比,它具有更快的推理速度、更少的參數和更高的深度精度。
我們提供了四種不同尺度的模型,用於穩健的相對深度估計:
模型 | 參數 | 檢查站 |
---|---|---|
深度-任意-V2-小 | 24.8M | 下載 |
深度-任意-V2-基礎 | 97.5M | 下載 |
深度-任意-V2-大 | 335.3M | 下載 |
深度-任何-V2-巨人 | 1.3B | 即將推出 |
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
如果您不想複製此儲存庫,您也可以透過 Transformers 載入我們的模型。下面是一個簡單的程式碼片段。更多詳情請參閱官方頁面。
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 }
}