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.
06/07/2024: Profundidade Qualquer coisa V2 é compatível com Transformers. Consulte as instruções para uso conveniente.
25/06/2024: Profundidade Qualquer coisa é integrada aos modelos Apple Core ML. Consulte as instruções (V1, V2) para uso.
22/06/2024: Lançamos modelos de profundidade métrica menores baseados em Depth-Anything-V2-Small e Base.
20/06/2024: Nosso repositório e página do projeto são sinalizados pelo GitHub e removidos do público por 6 dias. Desculpe pela inconveniência.
14/06/2024: Artigo, página do projeto, código, modelos, demonstração e benchmark são todos lançados.
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 |
clone git https://github.com/DepthAnything/Depth-Anything-V2cd Depth-Anything-V2 pip instalar -r requisitos.txt
Baixe os pontos de verificação listados aqui e coloque-os no diretório 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', 'recursos': 64, 'out_channels': [48, 96, 192, 384]},'vitb': {'encoder': 'vitb', 'features': 128, 'out_channels': [96, 192, 384, 768]},'vitl': {'encoder': ' vitl', 'recursos': 256, 'out_channels': [256, 512, 1024, 1024]},'vitg': {'codificador': 'vitg', 'recursos': 384, 'out_channels': [1536, 1536, 1536, 1536]} }encoder = 'vitl' # ou 'vits', 'vitb', 'vitg'model = DepthAnythingV2(**model_configs[encoder])model.load_state_dict(torch.load(f'checkpoints/profundidade_anything_v2_{encoder}.pth', map_location='cpu'))model = model.to(DEVICE).eval()raw_img = cv2.imread('your/image/path')profundidade = model.infer_image(raw_img) # Mapa de profundidade bruta HxW em 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.
Nota 1: Certifique-se de que você pode se conectar ao Hugging Face e ter instalado os Transformers mais recentes.
Nota 2: Devido à diferença de upsampling entre OpenCV (usamos) e Pillow (HF usado), as previsões podem diferir ligeiramente. Portanto, é mais recomendável usar nossos modelos da forma apresentada acima.
de transformadores import pipelinefrom PIL import Imagepipe = pipeline(task="profundidade-estimativa", model="profundidade-qualquer coisa/Depth-Anything-V2-Small-hf")image = Image.open('sua/imagem/caminho') profundidade = tubo(imagem)["profundidade"]
python run.py --encoder <vits | vitb | vitl | vital> --img-path <caminho> --outdir <outdir> [--input-size <tamanho>] [--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 das 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 ativos/exemplos --outdir profundidade_vis
python run_video.py --encoder <vits | vitb | vitl | vital> --video-path assets/examples_video --outdir video_profundidade_vis [--input-size <tamanho>] [--pred-only] [--grayscale]
Nosso modelo maior tem melhor consistência temporal nos vídeos.
Para usar nossa demonstração gradio localmente:
aplicativo python.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!
Apple Core ML:
https://developer.apple.com/machine-learning/models
https://huggingface.co/apple/coreml-profundidade-anything-v2-small
https://huggingface.co/apple/coreml-profundidade-anything-small
Transformadores:
https://huggingface.co/docs/transformers/main/en/model_doc/profundidade_anything_v2
https://huggingface.co/docs/transformers/main/en/model_doc/profundidade_anything
TensorRT:
https://github.com/spacewalk01/profundidade-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 (profundidade em tempo real na web): https://huggingface.co/spaces/Xenova/webgpu-realtime-profundidade-estimation
Android:
https://github.com/shubham0204/Depth-Anything-Android
https://github.com/FeiGeChuanShu/ncnn-android-profundidade_anything
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:
@artigo{profundidade_anything_v2, título={Profundidade Qualquer Coisa V2}, autor={Yang, Lihe e Kang, Bingyi e Huang, Zilong e Zhao, Zhen e Xu, Xiaogang e Feng, Jiashi e Zhao, Hengshuang}, diário={arXiv: 2406.09414}, ano={2024}}@inproceedings{profundidade_anything_v1, title={Profundidade em qualquer coisa: liberando o poder dos dados não rotulados em grande escala}, autor={Yang, Lihe e Kang, Bingyi e Huang, Zilong e Xu, Xiaogang e Feng, Jiashi e Zhao, Hengshuang}, título do livro={CVPR}, ano={2024}}