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
- normal
- Rozmiary
- s, b, l at 518 px
- Instalacja
pip install libreyolo- Poziom obsługi
- Tylko inferencja, od wersji v. 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
Przy pierwszym użyciu wagi są pobierane automatycznie. LibreYOLO pobiera odpowiedni rozmiar bezpośrednio z oficjalnych checkpointów i zapisuje go w lokalnej pamięci podręcznej.
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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| normal | normal to ONNX: obsługiwane | normal to TorchScript: obsługiwane | normal to ExecuTorch: obsługiwane | normal to TensorRT: obsługiwane | normal to OpenVINO: obsługiwane | normal to Paddle: brak obsługi | normal to MNN: brak obsługi | normal to RKNN: brak obsługi | normal to ncnn: obsługiwane | normal to TFLite: brak obsługi | normal to CoreML: brak obsługi | normal 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, rozpowszechniane przez autorów. LibreYOLO ich nie hostuje ani nie udostępnia kopii.
- Interpretacja
- 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 nie kopiuje tych checkpointów do własnej organizacji.
LibreYOLO("LibreMoGe2s-normal.pt") pobiera odpowiedni rozmiar bezpośrednio z
oficjalnych repozytoriów Hugging Face przy przypiętej rewizji i przed użyciem
weryfikuje plik względem zapisanego skrótu SHA-256.
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.