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 기반 모델에 비해 추론 속도가 더 빠르고 매개변수가 적으며 깊이 정확도가 더 높습니다.
2024-07-06: Depth Anything V2가 Transformers에서 지원됩니다. 편리한 사용을 위해 지침을 참조하세요.
2024-06-25: Depth Anything이 Apple Core ML 모델에 통합되었습니다. 사용법은 지침(V1, V2)을 참조하세요.
2024-06-22: Depth-Anything-V2-Small 및 Base를 기반으로 더 작은 미터법 깊이 모델을 출시합니다.
2024-06-20: 우리 저장소와 프로젝트 페이지가 GitHub에 의해 표시되고 6일 동안 공개되지 않습니다. 불편을 끼쳐드려 죄송합니다.
2024-06-14: 논문, 프로젝트 페이지, 코드, 모델, 데모, 벤치마크가 모두 출시되었습니다.
우리는 강력한 상대 깊이 추정을 위해 다양한 규모의 네 가지 모델을 제공합니다.
모델 | 매개변수 | 검문소 |
---|---|---|
깊이-모든 것-V2-소형 | 24.8M | 다운로드 |
깊이-모든 것-V2-베이스 | 97.5M | 다운로드 |
깊이-모든 것-V2-대형 | 335.3M | 다운로드 |
깊이-모든 것-V2-거인 | 1.3B | 곧 출시 예정 |
자식 클론 https://github.com/DepthAnything/Depth-Anything-V2cd Depth-Anything-V2 pip 설치 -r 요구사항.txt
여기에 나열된 체크포인트를 다운로드하여 checkpoints
디렉터리에 넣습니다.
import cv2import torchfrom deep_anything_v2.dpt import DepthAnythingV2DEVICE = 'cuda' if torch.cuda.is_available() else 'mps' if torch.backends.mps.is_available() else 'cpu'model_configs = {'vits': {'encoder': 'vits', '기능': 64, 'out_channels': [48, 96, 192, 384]},'vitb': {'인코더': 'vitb', '기능': 128, 'out_channels': [96, 192, 384, 768]},'vitl': { '인코더': 'vitl', '기능': 256, 'out_channels': [256, 512, 1024, 1024]},'vitg': {'인코더': 'vitg', 'features': 384, 'out_channels': [1536, 1536, 1536, 1536]} }encoder = 'vitl' # 또는 'vits', 'vitb', 'vitg'model = DepthAnythingV2(**model_configs[encoder])model.load_state_dict(torch.load(f'checkpoints/length_anything_v2_{encoder}.pth', map_location='cpu'))model = model.to(DEVICE).eval()raw_img = cv2.imread('your/image/path')length = model.infer_image(raw_img) # numpy의 HxW 원시 깊이 맵
이 저장소를 복제하지 않으려면 Transformers를 통해 모델을 로드할 수도 있습니다. 아래는 간단한 코드 조각입니다. 자세한 내용은 공식 페이지를 참고해주세요.
참고 1: Hugging Face에 연결할 수 있고 최신 Transformers를 설치했는지 확인하세요.
참고 2: OpenCV(사용됨)와 Pillow(HF 사용됨) 간의 업샘플링 차이로 인해 예측이 약간 다를 수 있습니다. 따라서 위에서 소개한 방법을 통해 당사 모델을 사용하는 것이 좋습니다.
변환기 가져오기 파이프라인에서 PIL 가져오기 Imagepipe = 파이프라인(task="깊이-추정", 모델="깊이-무엇이든/Depth-Anything-V2-Small-hf")image = Image.open('your/image/path') 깊이 = 파이프(이미지)["깊이"]
파이썬 run.py --encoder <비트 | 비트 | 활력 | Vitg> --img-path <경로> --outdir <outdir> [--input-size <크기>] [--pred-only] [--grayscale]
옵션:
--img-path
: 1) 관심 있는 모든 이미지를 저장하는 이미지 디렉터리를 가리키거나, 2) 단일 이미지를 가리키거나, 3) 모든 이미지 경로를 저장하는 텍스트 파일을 가리킬 수 있습니다.
--input-size
(선택 사항): 기본적으로 모델 추론에 입력 크기 518
사용합니다. 더욱 세밀한 결과를 얻으려면 크기를 늘릴 수 있습니다.
--pred-only
(선택 사항): 원시 이미지 없이 예측된 깊이 맵만 저장합니다.
--grayscale
(선택 사항): 색상 팔레트를 적용하지 않고 회색조 깊이 맵을 저장합니다.
예를 들어:
python run.py --encoder vitl --img-path 자산/예제 --outdir 깊이_vis
파이썬 run_video.py --encoder <비트 | 비트 | 활력 | Vitg> --비디오 경로 자산/예제_비디오 --outdir 비디오_깊이_vis [--input-size <크기>] [--pred-only] [--grayscale]
더 큰 모델은 비디오의 시간적 일관성이 더 좋습니다.
그라디오 데모를 로컬에서 사용하려면:
파이썬 app.py
온라인 데모를 사용해 볼 수도 있습니다.
참고: V1과 비교하여 DINOv2-DPT 아키텍처를 약간 수정했습니다(이 문제에서 비롯됨). V1에서는 의도치 않게 DINOv2의 마지막 4개 계층의 기능을 디코딩에 사용했습니다. V2에서는 대신 중간 기능을 사용합니다. 이번 수정으로 세부사항이나 정확성이 향상되지는 않았지만 우리는 이 일반적인 관행을 따르기로 결정했습니다.
메트릭 깊이 추정을 참조하세요.
DA-2K 벤치마크를 참고하세요.
Depth Anything 시리즈에 대한 모든 커뮤니티 지원에 진심으로 감사드립니다. 정말 감사합니다!
애플 코어 ML:
https://developer.apple.com/machine-learning/models
https://huggingface.co/apple/coreml-length-anything-v2-small
https://huggingface.co/apple/coreml-length-anything-small
변압기:
https://huggingface.co/docs/transformers/main/en/model_doc/깊이_anything_v2
https://huggingface.co/docs/transformers/main/en/model_doc/length_anything
텐서RT:
https://github.com/spacewalk01/length-anything-tensorrt
https://github.com/zhujiajian98/Depth-Anythingv2-TensorRT-python
ONNX: https://github.com/fabio-sim/Depth-Anything-ONNX
ComfyUI: https://github.com/kijai/ComfyUI-DepthAnythingV2
Transformers.js(웹의 실시간 깊이): https://huggingface.co/spaces/Xenova/webgpu-realtime-length-estimation
기계적 인조 인간:
https://github.com/shubham0204/Depth-Anything-Android
https://github.com/FeiGeChuanShu/ncnn-android-length_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{깊이_anything_v2, 제목={Depth Anything V2}, 작성자={Yang, Lihe 및 Kang, Bingyi 및 Huang, Zilong 및 Zhao, Zhen 및 Xu, Xiaogang 및 Feng, Jiashi 및 Zhao, Hengshuang}, 저널={arXiv: 2406.09414}, year={2024}}@inproceedings{length_anything_v1, title={Depth Anything: 라벨이 지정되지 않은 대규모 데이터의 힘 활용}, 저자={Yang, Lihe 및 Kang, Bingyi 및 Huang, Zilong 및 Xu, Xiaogang 및 Feng, Jiashi 및 Zhao, Hengshuang}, booktitle={CVPR}, 연도={2024}}