MoGe-2
MoGe-2 to monokularny model geometrii działający w jednym przebiegu w przód, który przewiduje gęste pole normalnych powierzchni na podstawie jednego obrazu RGB. LibreYOLO obsługuje go wyłącznie do estymacji normalnych przez oficjalne checkpointy ViT-S, ViT-B i ViT-L.
- Zadania
- surface normals
- Rozmiary
- s, b, l at 518 px
- Instalacja
pip install libreyolo- Poziom obsługi
- Tylko inferencja, od wersji v1.5.0. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
- Projekt źródłowy
- MoGe-2, autorzy: Microsoft, licencja: MIT. Publikacja, kod źródłowy
- Licencje
- Kod: MIT, wagi: MIT. Użycie komercyjne
Instalacja
MoGe-2 nie wymaga żadnego opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji podstawowej.
pip install libreyoloPredykcja
Wagi są pobierane automatycznie przy pierwszym użyciu. Rozmiary s i l używają kopii w repozytoriach LibreYOLO; b nadal używa checkpointu projektu źródłowego.
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), wektory jednostkowe float32libreyolo predict model=LibreMoGe2s-normal.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueMoGe-2 zwraca gęste pole zamiast zbioru detekcji, dlatego result.boxes jest
puste, a conf, iou i max_det nie mają wpływu na wynik.
result.normal_map zawiera tablicę wektorów jednostkowych (H, W, 3) w układzie
kamery OpenCV, gdzie +x wskazuje w prawo, +y w dół, +z w głąb sceny, a
powierzchnia skierowana do kamery ma wartość (0, 0, -1). Predykcja listy
obrazów wykonuje jeden przebieg w przód na obraz. Ta rodzina nie ma szybkiej
ścieżki ze złożonym batchem. Więcej informacji o źródłach, streamingu i obsłudze
wyników zawiera strona predykcji.
Warianty
Trzy rozmiary enkodera są dostępne jako osobne checkpointy: ViT-S, ViT-B i ViT-L, wszystkie przy tej samej rozdzielczości wejściowej. Zestaw testowy LibreYOLO nie wykonał pomiarów tej rodziny, dlatego nie ma opublikowanych wyników dokładności do ich porównania. Rozmiar należy dobrać do własnego budżetu obliczeniowego.
Walidacja
val() mierzy błąd kątowy względem sparowanego zbioru map normalnych. Obrazy
znajdują się obok 16-bitowych plików PNG normalnych o tej samej nazwie bazowej,
a opcjonalna maska poprawności sprawia, że dopełnione i nieprawidłowe piksele nie
są uwzględniane. Zwracany jest średni i medianowy błąd kątowy w stopniach oraz
procent pikseli mieszczących się w zakresie 11.25, 22.5 i 30 stopni.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMoGe2s-normal.pt")metrics = model.val(data="my-dataset.yaml", imgsz=518) print(metrics["metrics/mean_angular_error"]) # stopnieprint(metrics["metrics/median_angular_error"])print(metrics["metrics/within_11_25"]) # procent pikselilibreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518Eksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Surface normals | Surface normals to ONNX: obsługiwane | Surface normals to TorchScript: obsługiwane | Surface normals to ExecuTorch: obsługiwane | Surface normals to TensorRT: obsługiwane | Surface normals to OpenVINO: obsługiwane | Surface normals to Paddle: brak obsługi | Surface normals to MNN: brak obsługi | Surface normals to RKNN: brak obsługi | Surface normals to ncnn: obsługiwane | Surface normals to TFLite: brak obsługi | Surface normals to CoreML: brak obsługi | Surface normals to Core AI: brak obsługi |
Eksport normalnych korzysta z kontraktu środowiska uruchomieniowego o stałej
rozdzielczości i rozmiarze batcha 1. Argument dynamic oraz batch inny niż 1
są odrzucane, a imgsz musi być podzielne przez rozmiar patcha enkodera ViT, co
LibreYOLO sprawdza przed rozpoczęciem przebiegu. Wyeksportowany artefakt jest
ponownie ładowany przez LibreYOLO() na podstawie rozszerzenia pliku, dlatego
plik .onnx zachowuje się jak checkpoint i zwraca ten sam obiekt Results.
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)Licencja
Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.
To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.
- Oryginalna praca
- MoGe-2, Microsoft
- Licencja projektu źródłowego
- MIT
- Kod źródłowy projektu
- github.com/microsoft/MoGe
- Kod LibreYOLO
- MIT
- Wagi
- MIT, ponownie opublikowane w huggingface.co/LibreYOLO
- Interpretacja
- 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.
Checkpointy s i l mają kopie w repozytoriach LibreYOLO; b pozostaje w repozytorium źródłowym. Pobrane artefakty zachowują licencję wydawcy.
Cytowanie
@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},
}Skopiowano z bloku cytowania autorów w github.com/microsoft/MoGe#-citation.