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
surface normals
Tailles
s, b, l at 518 px
Installer
pip install libreyolo
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.
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 se téléchargent automatiquement au premier usage. Les tailles s et l utilisent les miroirs de LibreYOLO ; b continue d'utiliser le checkpoint d'amont.

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
Surface normalsSurface normals to ONNX : pris en chargeSurface normals to TorchScript : pris en chargeSurface normals to ExecuTorch : pris en chargeSurface normals to TensorRT : pris en chargeSurface normals to OpenVINO : pris en chargeSurface normals to Paddle : non pris en chargeSurface normals to MNN : non pris en chargeSurface normals to RKNN : non pris en chargeSurface normals to ncnn : pris en chargeSurface normals to TFLite : non pris en chargeSurface normals to CoreML : non pris en chargeSurface normals 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, republiés sur huggingface.co/LibreYOLO
Interprétation
The publisher declares MIT for the model and checkpoints. LibreYOLO mirrors s and l; b remains an upstream download. The DINOv2 encoder retains its separate Apache-2.0 attribution.

Les checkpoints s et l sont mis en miroir par LibreYOLO ; b reste en amont. Les artefacts téléchargés conservent la licence de leur éditeur.

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

Architecture de MoGe-2

Choisissez une variante ou la vue de la famille, puis un bloc pour les détails. Ouvrez le schéma complet pour zoomer ou télécharger SVG et PNG. Les schémas sont en anglais.