MoGe-2

MoGe-2 ist ein monokulares Geometriemodell mit einem einzelnen Vorwärtslauf, das aus einem RGB-Bild ein dichtes Feld von Oberflächennormalen vorhersagt. LibreYOLO unterstützt ausschließlich die Normalenschätzung mit den offiziellen Checkpoints ViT-S, ViT-B und ViT-L.

Aufgaben
normal
Größen
s, b, l at 518 px
Installation
pip install libreyolo
Supportstufe
Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
Upstream
MoGe-2 von Microsoft, MIT. Publikation, Quelle
Lizenzen
Code MIT, Gewichte MIT. Kommerzielle Nutzung

Installation

MoGe-2 benötigt kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten.

bash
pip install libreyolo

Vorhersage

Die Gewichte werden bei der ersten Verwendung automatisch heruntergeladen. LibreYOLO ruft die passende Größe direkt aus den offiziellen Checkpoints ab und speichert sie lokal zwischen.

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

MoGe-2 gibt ein dichtes Feld statt einer Menge von Erkennungen zurück. result.boxes ist daher leer, und conf, iou sowie max_det haben keine Wirkung. result.normal_map enthält das Ergebnis: ein Array der Form (H, W, 3) mit Einheitsvektoren im OpenCV-Kamerakoordinatensystem. +x zeigt nach rechts, +y nach unten und +z in die Szene. Eine zur Kamera gerichtete Oberfläche hat den Wert (0, 0, -1). Bei einer Bildliste wird pro Bild ein Vorwärtslauf ausgeführt. Diese Familie besitzt keinen schnellen Pfad für gestapelte Batches. Unter Vorhersage findest du Quellen, Streaming und die Verarbeitung von Ergebnissen.

Varianten

Drei Encoder-Größen werden als getrennte Checkpoints angeboten: ViT-S, ViT-B und ViT-L, alle mit derselben Eingabeauflösung. Der Benchmark-Testaufbau von LibreYOLO hat diese Familie nicht gemessen. Es gibt daher keine veröffentlichten Accuracy-Werte für einen Vergleich. Wähle die Größe passend zu deinem Rechenbudget.

Validierung

val() misst den Winkelfehler auf einem gepaarten Normalenkarten-Datensatz: Bilder liegen neben gleichnamigen 16-Bit-Normalen-PNGs. Eine optionale Gültigkeitsmaske verhindert, dass aufgefüllte und ungültige Pixel gezählt werden. Die Methode gibt den mittleren und medianen Winkelfehler in Grad sowie den Prozentsatz der Pixel innerhalb von 11.25, 22.5 und 30 Grad zurück.

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"])   # Gradprint(metrics["metrics/median_angular_error"])print(metrics["metrics/within_11_25"])          # Prozent der Pixel
CLI
libreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
normalnormal to ONNX: unterstütztnormal to TorchScript: unterstütztnormal to ExecuTorch: unterstütztnormal to TensorRT: unterstütztnormal to OpenVINO: unterstütztnormal to Paddle: nicht unterstütztnormal to MNN: nicht unterstütztnormal to RKNN: nicht unterstütztnormal to ncnn: unterstütztnormal to TFLite: nicht unterstütztnormal to CoreML: nicht unterstütztnormal to Core AI: nicht unterstützt

Der Normalenexport nutzt einen Runtime-Vertrag mit fester Auflösung und Batch 1: dynamic und ein anderer batch-Wert als 1 werden abgelehnt. imgsz muss außerdem durch die Patch-Größe des ViT-Encoders teilbar sein. LibreYOLO prüft das vor Beginn des Laufs. Ein exportiertes Artefakt wird anhand seiner Dateiendung wieder über LibreYOLO() geladen. Eine .onnx-Datei verhält sich daher wie ein Checkpoint und gibt dasselbe Results-Objekt zurück.

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
Exportierte Datei verwenden
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMoGe2s-normal.onnx")result = model(SAMPLE_IMAGE) print(result.normal_map.array.shape)

Lizenzierung

Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.

Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.

Originalarbeit
MoGe-2, Microsoft
Upstream-Lizenz
MIT
LibreYOLO-Code
MIT
Gewichte
MIT, von den Autoren verbreitet. LibreYOLO hostet oder spiegelt sie nicht.
Einordnung
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 kopiert diese Checkpoints nicht in seine eigene Organisation. LibreYOLO("LibreMoGe2s-normal.pt") lädt die passende Größe bei einer festgeschriebenen Revision direkt aus den offiziellen Hugging-Face-Repositorys und prüft die Datei vor der Verwendung anhand einer aufgezeichneten SHA-256-Prüfsumme.

Zitieren

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

Aus dem Zitierblock der Autoren unter github.com/microsoft/MoGe#-citation kopiert.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.