Lihe Yang 1 · Bingyi Kang 2† · Zilong Huang 2
Zhen Zhao · Xiaogang Xu · Jiashi Feng 2 · Hengshuang Zhao 1*
1 HKU 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]
더 큰 모델은 비디오의 시간적 일관성이 더 좋습니다.
그라디오 데모를 로컬에서 사용하려면:
python app.py
온라인 데모를 사용해 볼 수도 있습니다.
참고: V1과 비교하여 DINOv2-DPT 아키텍처를 약간 수정했습니다(이 문제에서 비롯됨). V1에서는 의도치 않게 DINOv2의 마지막 4개 계층의 기능을 디코딩에 사용했습니다. V2에서는 대신 중간 기능을 사용합니다. 이번 수정으로 세부사항이나 정확성이 향상되지는 않았지만 우리는 이 일반적인 관행을 따르기로 결정했습니다.
메트릭 깊이 추정을 참조하세요.
DA-2K 벤치마크를 참고해주세요.
Depth Anything 시리즈에 대한 모든 커뮤니티 지원에 진심으로 감사드립니다. 정말 감사합니다!
Transformers 및 Apple Core ML에서 우리 모델을 지원하는 데 엄청난 노력을 쏟은 Hugging Face 팀(@Pedro Cuenca, @Niels Rogge, @Merve Noyan, @Amy Roberts 등)에게 진심으로 감사드립니다.
또한 우리 커뮤니티에 이렇게 인상적인 모델을 제공해준 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 }
}