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
- surface normals
- Größen
- s, b, l at 518 px
- Installation
pip install libreyolo- Supportstufe
- Nur Inferenz, seit v1.5.0. 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.
pip install libreyoloVorhersage
Gewichte werden bei der ersten Verwendung automatisch heruntergeladen. Die Größen s und l verwenden LibreYOLO-Mirrors; b verwendet weiterhin den Upstream-Checkpoint.
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-Einheitsvektorenlibreyolo predict model=LibreMoGe2s-normal.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueMoGe-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.
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 Pixellibreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518Export
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Surface normals | Surface normals to ONNX: unterstützt | Surface normals to TorchScript: unterstützt | Surface normals to ExecuTorch: unterstützt | Surface normals to TensorRT: unterstützt | Surface normals to OpenVINO: unterstützt | Surface normals to Paddle: nicht unterstützt | Surface normals to MNN: nicht unterstützt | Surface normals to RKNN: nicht unterstützt | Surface normals to ncnn: unterstützt | Surface normals to TFLite: nicht unterstützt | Surface normals to CoreML: nicht unterstützt | Surface normals 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.
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)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
- Upstream-Quelle
- github.com/microsoft/MoGe
- LibreYOLO-Code
- MIT
- Gewichte
- MIT, erneut unter huggingface.co/LibreYOLO veröffentlicht
- Einordnung
- 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.
LibreYOLO spiegelt die Checkpoints s und l; b bleibt bei Upstream. Heruntergeladene Artefakte behalten die Lizenz ihres Herausgebers.
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.