Lihe Yang 1 · Bingyi Kang 2† · Zilong Huang 2
Zhen Zhao · Xiaogang Xu · Jiashi Feng 2 · Hengshuang Zhao 1*
1HKU 2TikTok
†líder do projeto *autor correspondente
Este trabalho apresenta o Depth Anything V2. Ele supera significativamente o V1 em detalhes refinados e robustez. Comparado com modelos baseados em SD, possui velocidade de inferência mais rápida, menos parâmetros e maior precisão de profundidade.
Fornecemos quatro modelos de escalas variadas para uma estimativa robusta de profundidade relativa:
Modelo | Parâmetros | Ponto de verificação |
---|---|---|
Profundidade-Qualquer coisa-V2-Pequena | 24,8 milhões | Download |
Profundidade-Qualquer coisa-V2-Base | 97,5 milhões | Download |
Profundidade-Qualquer coisa-V2-Grande | 335,3 milhões | Download |
Profundidade-Qualquer coisa-V2-Gigante | 1,3B | Em breve |
git clone https://github.com/DepthAnything/Depth-Anything-V2
cd Depth-Anything-V2
pip install -r requirements.txt
Baixe os pontos de verificação listados aqui e coloque-os no diretório 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
Caso não queira clonar este repositório, você também pode carregar nossos modelos através do Transformers. Abaixo está um trecho de código simples. Consulte a página oficial para mais detalhes.
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]
Opções:
--img-path
: Você pode 1) apontá-lo para um diretório de imagens que armazena todas as imagens interessadas, 2) apontá-lo para uma única imagem ou 3) apontá-lo para um arquivo de texto que armazena todos os caminhos de imagens.--input-size
(opcional): Por padrão, usamos o tamanho de entrada 518
para inferência do modelo. Você pode aumentar o tamanho para obter resultados ainda mais refinados.--pred-only
(opcional): salva apenas o mapa de profundidade previsto, sem imagem bruta.--grayscale
(opcional): Salva o mapa de profundidade em tons de cinza, sem aplicar paleta de cores.Por exemplo:
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]
Nosso modelo maior tem melhor consistência temporal nos vídeos.
Para usar nossa demonstração gradio localmente:
python app.py
Você também pode experimentar nossa demonstração online.
Nota: Em comparação com V1, fizemos uma pequena modificação na arquitetura DINOv2-DPT (decorrente deste problema). Na V1, usamos involuntariamente recursos das últimas quatro camadas do DINOv2 para decodificação. Na V2, usamos recursos intermediários. Embora esta modificação não tenha melhorado os detalhes ou a precisão, decidimos seguir esta prática comum.
Consulte a estimativa de profundidade métrica.
Consulte o benchmark DA-2K.
Agradecemos sinceramente todo o apoio da comunidade à nossa série Depth Anything. Muito obrigado!
Somos sinceramente gratos à incrível equipe do Hugging Face (@Pedro Cuenca, @Niels Rogge, @Merve Noyan, @Amy Roberts, et al.) por seus enormes esforços no suporte aos nossos modelos em Transformers e Apple Core ML.
Agradecemos também à equipe DINOv2 por contribuir com modelos tão impressionantes para a nossa comunidade.
O modelo Depth-Anything-V2-Small está sob a licença Apache-2.0. Os modelos Depth-Anything-V2-Base/Large/Giant estão sob a licença CC-BY-NC-4.0.
Se você achar este projeto útil, considere citar:
@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 }
}