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.
pip install libreyoloVorhersage
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.
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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| normal | normal to ONNX: unterstützt | normal to TorchScript: unterstützt | normal to ExecuTorch: unterstützt | normal to TensorRT: unterstützt | normal to OpenVINO: unterstützt | normal to Paddle: nicht unterstützt | normal to MNN: nicht unterstützt | normal to RKNN: nicht unterstützt | normal to ncnn: unterstützt | normal to TFLite: nicht unterstützt | normal to CoreML: nicht unterstützt | normal 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, 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.