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.
Origine
MoGe-2 par Microsoft, MIT. Article, source
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.

bash
pip install libreyolo

Pré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.

Python
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 float32
CLI
libreyolo predict model=LibreMoGe2s-normal.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

MoGe-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.

Python
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 pixels
CLI
libreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518

Exporter

TâcheONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
normalnormal to ONNX : pris en chargenormal to TorchScript : pris en chargenormal to ExecuTorch : pris en chargenormal to TensorRT : pris en chargenormal to OpenVINO : pris en chargenormal to Paddle : non pris en chargenormal to MNN : non pris en chargenormal to RKNN : non pris en chargenormal to ncnn : pris en chargenormal to TFLite : non pris en chargenormal to CoreML : non pris en chargenormal 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreMoGe2s-normal.pt")model.export(format="onnx", imgsz=518)model.export(format="tensorrt", imgsz=518, half=True)
CLI
libreyolo export model=LibreMoGe2s-normal.pt format=onnx imgsz=518libreyolo export model=LibreMoGe2s-normal.pt format=tensorrt imgsz=518 half=True
Utiliser le fichier exporté
from 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.

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.