MoGe-2
MoGe-2 est un modèle de géométrie monoculaire à une seule passe qui prédit un champ dense de normales de surface à partir d'une image RGB. LibreYOLO le prend en charge uniquement pour l'estimation des normales, au moyen des checkpoints officiels ViT-S, ViT-B et ViT-L.
- Tâches
- normal
- Tailles
- s, b, l 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.
- Licences
- Code MIT, poids MIT. Usage commercial
Installer
MoGe-2 ne nécessite aucun extra facultatif. Tous ses imports figurent dans l'installation de base.
pip install libreyoloPrédire
Les poids sont téléchargés automatiquement à la première utilisation : LibreYOLO récupère la taille correspondante directement depuis les checkpoints officiels et la met en cache localement.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMoGe2s-normal.pt")result = model(SAMPLE_IMAGE, save=True) normal = result.normal_mapprint(normal.array.shape) # (H, W, 3), vecteurs unitaires float32libreyolo predict model=LibreMoGe2s-normal.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueMoGe-2 renvoie un champ dense plutôt qu'un ensemble de détections.
result.boxes est donc vide, et conf, iou ainsi que max_det n'ont aucun
effet. result.normal_map contient le résultat : un tableau (H, W, 3) de
vecteurs unitaires dans le repère de la caméra OpenCV, où +x pointe vers la
droite, +y vers le bas, +z vers l'intérieur de la scène, et une surface face
à la caméra vaut (0, 0, -1). La prédiction d'une liste d'images exécute une
passe par image ; cette famille ne dispose d'aucun chemin rapide par batch
empilé. Consultez la prédiction pour les sources, le streaming
et le traitement des résultats.
Variantes
Trois tailles d'encodeur sont fournies sous forme de checkpoints distincts : ViT-S, ViT-B et ViT-L, toutes à la même résolution d'entrée. Le banc d'essai de LibreYOLO n'a pas mesuré cette famille, aucune valeur d'exactitude publiée ne permet donc de les comparer ; choisissez la taille en fonction de votre propre budget de calcul.
Valider
val() mesure l'erreur angulaire par rapport à un dataset de cartes de normales
appariées : les images se trouvent à côté de fichiers PNG de normales 16 bits
ayant le même radical, avec un masque de validité facultatif afin que les pixels
de remplissage et non valides ne soient jamais comptés. La méthode renvoie
l'erreur angulaire moyenne et médiane en degrés, ainsi que le pourcentage de
pixels situés à moins de 11.25, 22.5 et 30 degrés.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMoGe2s-normal.pt")metrics = model.val(data="my-dataset.yaml", imgsz=518) print(metrics["metrics/mean_angular_error"]) # degrésprint(metrics["metrics/median_angular_error"])print(metrics["metrics/within_11_25"]) # pourcentage de pixelslibreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518Exporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| normal | normal to ONNX : pris en charge | normal to TorchScript : pris en charge | normal to ExecuTorch : pris en charge | normal to TensorRT : pris en charge | normal to OpenVINO : pris en charge | normal to Paddle : non pris en charge | normal to MNN : non pris en charge | normal to RKNN : non pris en charge | normal to ncnn : pris en charge | normal to TFLite : non pris en charge | normal to CoreML : non pris en charge | normal to Core AI : non pris en charge |
L'export des normales utilise un contrat de runtime à résolution fixe et avec
un batch de 1 : dynamic et toute valeur de batch autre que 1 sont refusés,
et imgsz doit être divisible par la taille de patch de l'encodeur ViT, ce que
LibreYOLO vérifie avant le début de l'exécution. Un artefact exporté se recharge
par LibreYOLO() à partir de son suffixe de fichier. Un fichier .onnx se
comporte donc comme un checkpoint et renvoie le même objet Results.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMoGe2s-normal.pt")model.export(format="onnx", imgsz=518)model.export(format="tensorrt", imgsz=518, half=True)libreyolo export model=LibreMoGe2s-normal.pt format=onnx imgsz=518libreyolo export model=LibreMoGe2s-normal.pt format=tensorrt imgsz=518 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMoGe2s-normal.onnx")result = model(SAMPLE_IMAGE) print(result.normal_map.array.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
- MoGe-2, Microsoft
- Licence du projet d'origine
- MIT
- Source du projet d'origine
- github.com/microsoft/MoGe
- Code de LibreYOLO
- MIT
- Poids
- MIT, distribués par leurs auteurs. LibreYOLO ne les héberge pas et n'en fournit pas de miroir.
- Interprétation
- MIT is a permissive license: the code and the official ViT-S, ViT-B and ViT-L checkpoints can be used in commercial and closed-source products. It asks that you keep the license text and copyright notice with any copy you redistribute, and it places no obligation on your own application code. LibreYOLO downloads these checkpoints directly from the official Hugging Face repositories at a pinned revision rather than copying them into its own organization, and verifies each file against a recorded SHA-256 checksum before use. The DINOv2 encoder MoGe-2 builds on is separately licensed Apache-2.0 by Meta AI; LibreYOLO reuses the DINOv2 implementation already bundled for its Depth Anything V2 family rather than copying it again here.
LibreYOLO ne copie pas ces checkpoints dans sa propre organisation.
LibreYOLO("LibreMoGe2s-normal.pt") télécharge la taille correspondante
directement depuis les dépôts Hugging Face officiels à une révision figée et
vérifie le fichier par rapport à une somme de contrôle SHA-256 enregistrée avant
de l'utiliser.
Citation
@inproceedings{wang2025moge,
title={Moge: Unlocking accurate monocular geometry estimation for open-domain images with optimal training supervision},
author={Wang, Ruicheng and Xu, Sicheng and Dai, Cassie and Xiang, Jianfeng and Deng, Yu and Tong, Xin and Yang, Jiaolong},
booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
pages={5261--5271},
year={2025}
}
@misc{wang2025moge2,
title={MoGe-2: Accurate Monocular Geometry with Metric Scale and Sharp Details},
author={Ruicheng Wang and Sicheng Xu and Yue Dong and Yu Deng and Jianfeng Xiang and Zelong Lv and Guangzhong Sun and Xin Tong and Jiaolong Yang},
year={2025},
eprint={2507.02546},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2507.02546},
}Copié depuis le bloc de citation des auteurs sur github.com/microsoft/MoGe#-citation.