Depth Anything V2
O Depth Anything V2 é um encoder DINOv2 combinado com um decoder DPT que prediz um mapa denso de profundidade inversa relativa a partir de uma única imagem. O LibreYOLO oferece suporte a ele na tarefa de profundidade: predição e validação zero-shot, sem caminho de treinamento.
- Tarefas
- depth
- Tamanhos
- s, b, l, g at 518 px
- Instalação
pip install libreyolo- Nível de suporte
- Somente inferência, desde a v. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
- Origem
- Depth Anything V2 por The University of Hong Kong and TikTok, Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Artigo, código-fonte
- Licenças
- Código Apache-2.0, pesos Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Uso comercial
Instalação
O Depth Anything V2 não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base.
pip install libreyoloPredição
Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache local.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE, save=True) depth = result.depth_mapprint(depth.min, depth.max, depth.mean)libreyolo predict model=LibreDepthAnythingV2s-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE) depth = result.depth_map # DepthMap: denso (H, W), maior = mais pertoraw = depth.data # tensor, sem unidade métrica nem escala entre imagensnormalized = depth.normalized() # reescalado para [0, 1] para visualizaçãoresult.depth_map carrega um mapa denso de profundidade inversa relativa:
valores maiores significam mais perto da câmera, e os valores não têm unidade
métrica nem escala entre imagens. save=True grava em disco uma visualização
desse mapa com mapa de cores; Results.plot() não cobre esta família, já que
está definido apenas para normais de superfície e bordas. A resolução de
entrada precisa ser divisível por 14, a grade de patches do DINOv2 sobre a qual
a cabeça DPT é construída; o LibreYOLO confere isso antes de rodar e levanta um
erro se não for. Veja predição para fontes, streaming e
tratamento de resultados.
Variantes
Quatro tamanhos de encoder, s/b/l/g, correspondendo a ViT-S/B/L/G. A tabela de checkpoints abaixo lista apenas s, b e l; nenhum checkpoint Giant foi publicado. Os quatro compartilham a mesma resolução de entrada, então escolher um tamanho troca capacidade do encoder, não tamanho de imagem. O licenciamento também pesa: o checkpoint Small é Apache-2.0, enquanto Base e Large são CC-BY-NC-4.0, veja Licenciamento abaixo.
Treinamento e fine-tuning não são oferecidos para esta família.
LibreDepthAnythingV2.train() levanta NotImplementedError
incondicionalmente; em vez disso, converta um checkpoint upstream compatível
com weights/convert_depth_anything_v2_weights.py.
Validação
val() roda o validador de profundidade compartilhado: ele alinha cada
predição ao seu ground truth com uma escala e um deslocamento de mínimos
quadrados por imagem, e depois reporta as métricas padrão de profundidade
relativa zero-shot, AbsRel, RMSE e os três limiares delta.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/abs_rel"])print(metrics["metrics/rmse"])print(metrics["metrics/delta1"])libreyolo val model=LibreDepthAnythingV2s-depth.pt data=my-dataset.yamlExportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| depth | depth to ONNX: compatível | depth to TorchScript: compatível | depth to ExecuTorch: compatível | depth to TensorRT: compatível | depth to OpenVINO: compatível | depth to Paddle: incompatível | depth to MNN: incompatível | depth to RKNN: incompatível | depth to ncnn: incompatível | depth to TFLite: incompatível | depth to CoreML: incompatível | depth to Core AI: compatível |
Um artefato exportado é carregado de volta por LibreYOLO() pelo sufixo do
arquivo, então um arquivo .onnx ou .engine se comporta como um checkpoint e
devolve o mesmo Results, com depth_map no lugar dos boxes.
Exportação lista os argumentos que todo formato aceita.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreDepthAnythingV2s-depth.pt format=onnxlibreyolo export model=LibreDepthAnythingV2s-depth.pt format=tensorrt half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # A factory roteia pelo sufixo do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreDepthAnythingV2s-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)Checkpoints
Todos os arquivos de pesos publicados desta família.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| depth | ||
| LibreDepthAnythingV2s-depth.pt | apache-2.0 | |
| LibreDepthAnythingV2l-depth.pt | cc-by-nc-4.0 | |
| LibreDepthAnythingV2b-depth.pt | cc-by-nc-4.0 | |
Todos os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.
Licenciamento
Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.
Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.
- Trabalho original
- Depth Anything V2, The University of Hong Kong and TikTok
- Licença original
- Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)
- Código-fonte original
- github.com/DepthAnything/Depth-Anything-V2
- Código do LibreYOLO
- MIT
- Pesos
- Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints), republicado em huggingface.co/LibreYOLO
- Interpretação
- The two licenses are not interchangeable. The Small checkpoint is Apache-2.0, a permissive license: it can be used in commercial and closed-source products, it asks you to keep its license text and attribution notices with any redistributed copy, and it grants a patent license. The Base and Large checkpoints are CC-BY-NC-4.0, which forbids commercial use outright and requires attribution on any redistribution, so treat them as research and evaluation weights unless you obtain separate terms from the authors. LibreYOLO's own code for this family is MIT throughout, and training is not offered for this family so there is no self-trained-weights exception to reach for.
Citação
@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}
}Copiado do bloco de citação dos autores em github.com/DepthAnything/Depth-Anything-V2#citation.