Depth Anything V2

Depth Anything V2 est un encodeur DINOv2 associé à un décodeur DPT qui prédit une carte dense de profondeur inverse relative à partir d'une seule image. LibreYOLO le prend en charge pour la tâche de profondeur : prédiction et validation zero-shot, sans voie d'entraînement.

Tâches
depth
Tailles
s, b, l, g at 518 px
Installer
pip install libreyolo
Niveau de support
Inférence uniquement, depuis v. Prédiction, validation et export uniquement. Les fonctionnalités d'entraînement ne s'appliquent pas.
Origine
Depth Anything V2 par The University of Hong Kong and TikTok, Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Article, source
Licences
Code Apache-2.0, poids Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints). Usage commercial

Installation

Depth Anything V2 ne demande aucun extra optionnel. Tout ce qu'il importe fait partie de l'installation de base.

bash
pip install libreyolo

Prédire

Les poids sont téléchargés depuis Hugging Face au premier usage, puis mis en cache localement.

Python
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)
CLI
libreyolo predict model=LibreDepthAnythingV2s-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Lire la carte de profondeur
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE) depth = result.depth_map    # DepthMap : dense (H, W), valeur haute = plus procheraw = depth.data                # tenseur, sans unité métrique ni échelle communenormalized = depth.normalized() # ramené à [0, 1] pour la visualisation

result.depth_map porte une carte dense de profondeur inverse relative : les valeurs élevées correspondent aux points les plus proches de la caméra, et ces valeurs n'ont ni unité métrique ni échelle commune d'une image à l'autre. save=True écrit sur le disque une visualisation colorisée de cette carte ; Results.plot() ne couvre pas cette famille, puisqu'il n'est défini que pour les normales de surface et les contours. La résolution d'entrée doit être divisible par 14, la grille de patchs DINOv2 sur laquelle s'appuie la tête DPT ; LibreYOLO le vérifie avant l'exécution et lève une erreur si ce n'est pas le cas. Voir la prédiction pour les sources, le streaming et le traitement des résultats.

Variantes

Quatre tailles d'encodeur, s/b/l/g, correspondant à ViT-S/B/L/G. Le tableau des checkpoints ci-dessous ne liste que s, b et l ; aucun checkpoint Giant n'est publié. Les quatre partagent la même résolution d'entrée, si bien que choisir une taille arbitre la capacité de l'encodeur, pas la taille d'image. La licence compte aussi : le checkpoint Small est sous Apache-2.0, tandis que Base et Large sont sous CC-BY-NC-4.0, voir Licence plus bas.

L'entraînement et le fine-tuning ne sont pas proposés pour cette famille. LibreDepthAnythingV2.train() lève NotImplementedError sans condition ; convertissez plutôt un checkpoint amont compatible, avec weights/convert_depth_anything_v2_weights.py.

Valider

val() exécute le validateur de profondeur commun : il aligne chaque prédiction sur sa vérité terrain avec une échelle et un décalage estimés aux moindres carrés, image par image, puis rapporte les métriques standard de profondeur relative en zero-shot, AbsRel, RMSE et les trois seuils delta.

Python
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"])
CLI
libreyolo val model=LibreDepthAnythingV2s-depth.pt data=my-dataset.yaml

Exporter

TâcheONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
depthdepth to ONNX : pris en chargedepth to TorchScript : pris en chargedepth to ExecuTorch : pris en chargedepth to TensorRT : pris en chargedepth to OpenVINO : pris en chargedepth to Paddle : non pris en chargedepth to MNN : non pris en chargedepth to RKNN : non pris en chargedepth to ncnn : non pris en chargedepth to TFLite : non pris en chargedepth to CoreML : non pris en chargedepth to Core AI : pris en charge

Un artefact exporté se recharge via LibreYOLO() selon son extension de fichier, si bien qu'un fichier .onnx ou .engine se comporte comme un checkpoint et renvoie le même Results, avec depth_map à la place des boîtes. L'export liste les arguments que chaque format accepte.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreDepthAnythingV2s-depth.pt format=onnxlibreyolo export model=LibreDepthAnythingV2s-depth.pt format=tensorrt half=True
Utiliser le fichier exporté
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory route selon l'extension du fichier : un artefact exporté# se charge comme un checkpoint et renvoie le même objet Results.model = LibreYOLO("LibreDepthAnythingV2s-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Checkpoints

Tous les fichiers de poids publiés de cette famille.

FichierEntrée (px)Licence des poids
depth
LibreDepthAnythingV2s-depth.ptapache-2.0
LibreDepthAnythingV2l-depth.ptcc-by-nc-4.0
LibreDepthAnythingV2b-depth.ptcc-by-nc-4.0

Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.

Licence

Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.

Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.

Travail d'origine
Depth Anything V2, The University of Hong Kong and TikTok
Licence du projet d'origine
Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)
Code de LibreYOLO
MIT
Poids
Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints), republiés sur huggingface.co/LibreYOLO
Interprétation
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.

Citation

@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}
}

Copié depuis le bloc de citation des auteurs sur github.com/DepthAnything/Depth-Anything-V2#citation.

Vérifié avec LibreYOLO v1.5.0. Les tableaux de support, les checkpoints et les chiffres de benchmark de cette page sont générés à partir de la bibliothèque publiée et des poids publiés, et non rédigés à la main.