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.

bash
pip install libreyolo

Predykcja

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.

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

MoGe-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.

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

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
normalnormal to ONNX: obsługiwanenormal to TorchScript: obsługiwanenormal to ExecuTorch: obsługiwanenormal to TensorRT: obsługiwanenormal to OpenVINO: obsługiwanenormal to Paddle: brak obsługinormal to MNN: brak obsługinormal to RKNN: brak obsługinormal to ncnn: obsługiwanenormal to TFLite: brak obsługinormal to CoreML: brak obsługinormal 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.

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
Użycie wyeksportowanego pliku
from 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.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.