MiDaS
MiDaS est un modèle d'estimation de profondeur relative monoculaire entraîné avec une loss invariante à l'échelle et au décalage sur des datasets mélangés, la lignée de travaux qui a établi le protocole de transfert de profondeur zero-shot que les familles suivantes réutilisent. 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, l at 256 to 384 px
- Installer
pip install "libreyolo[midas]"- Niveau de support
- Inférence uniquement, depuis v1.5.0. Prédiction, validation et export uniquement. Les fonctionnalités d'entraînement ne s'appliquent pas.
- Licences
- Code MIT, poids MIT. Usage commercial
Installation
MiDaS nécessite l'extra midas pour ses encodeurs timm.
pip install "libreyolo[midas]"Prédire
Les checkpoints s et l se téléchargent depuis les miroirs de LibreYOLO sous la licence MIT de l'éditeur et sont mis en cache localement.
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Télécharge le checkpoint en miroir au premier usage.model = LibreYOLO("LibreMiDaSl-depth.pt")result = model(SAMPLE_IMAGE, save=True) depth = result.depth_mapprint(depth.min, depth.max, depth.mean)libreyolo predict model=LibreMiDaSl-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Encodeur EfficientNet-Lite3, plus petit et plus rapide que le l DPT-Large.model = LibreYOLO("LibreMiDaSs-depth.pt")result = model(SAMPLE_IMAGE, save=True)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() affiche la carte de profondeur. Voir la prédiction
pour les sources, le streaming et le traitement des résultats.
Variantes
Deux variantes avec des encodeurs différents, pas seulement deux échelles du
même encodeur. s est MiDaS v2.1 Small, un encodeur EfficientNet-Lite3. l est
DPT-Large, un encodeur ViT-L/16 doté du décodeur DPT que MiDaS a introduit pour
la prédiction dense. Leur prétraitement diffère aussi : s utilise un
redimensionnement à rapport d'aspect de type upper-bound avec une normalisation
mean/std ImageNet, l utilise un redimensionnement à rapport d'aspect minimal
avec une moyenne et un écart-type de 0.5. Prenez s pour un CNN plus léger, l
pour l'exactitude du décodeur transformer.
L'entraînement n'est pas proposé pour cette famille. LibreMiDaS.train() lève
NotImplementedError sans condition.
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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMiDaSl-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=LibreMiDaSl-depth.pt data=my-dataset.yamlExporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Depth | Depth to ONNX : pris en charge | Depth to TorchScript : pris en charge | Depth to ExecuTorch : pris en charge | Depth to TensorRT : pris en charge | Depth to OpenVINO : pris en charge | Depth to Paddle : non pris en charge | Depth to MNN : non pris en charge | Depth to RKNN : non pris en charge | Depth to ncnn : pris en charge | Depth to TFLite : non pris en charge | Depth to CoreML : non pris en charge | Depth to Core AI : non 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMiDaSl-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreMiDaSl-depth.pt format=onnxlibreyolo export model=LibreMiDaSl-depth.pt format=tensorrt half=Truefrom 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("LibreMiDaSl-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)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
- MiDaS, Intel Intelligent Systems Lab (Intel ISL)
- Licence du projet d'origine
- MIT
- Source du projet d'origine
- github.com/isl-org/MiDaS
- Code de LibreYOLO
- MIT
- Poids
- MIT, republiés sur huggingface.co/LibreYOLO
- Interprétation
- The upstream repository and released weights declare MIT. LibreYOLO mirrors the s and l checkpoints under that publisher grant.
Citation
@ARTICLE {Ranftl2022,
author = "Ren\'{e} Ranftl and Katrin Lasinger and David Hafner and Konrad Schindler and Vladlen Koltun",
title = "Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-Shot Cross-Dataset Transfer",
journal = "IEEE Transactions on Pattern Analysis and Machine Intelligence",
year = "2022",
volume = "44",
number = "3"
}
@article{Ranftl2021,
author = {Ren\'{e} Ranftl and Alexey Bochkovskiy and Vladlen Koltun},
title = {Vision Transformers for Dense Prediction},
journal = {ICCV},
year = {2021},
}Copié depuis le bloc de citation des auteurs sur github.com/isl-org/MiDaS#citation.