MoGe-2

MoGe-2 è un modello di geometria monoculare a singolo forward che predice un campo denso di normali di superficie a partire da una sola immagine RGB. LibreYOLO lo supporta solo per la stima delle normali, attraverso i checkpoint ufficiali ViT-S, ViT-B e ViT-L.

Task
normal
Dimensioni
s, b, l at 518 px
Installa
pip install libreyolo
Livello di supporto
Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
Origine
MoGe-2 di Microsoft, MIT. Articolo, sorgente
Licenze
Codice MIT, pesi MIT. Uso commerciale

Installazione

MoGe-2 non richiede nessun extra opzionale. Tutto ciò che importa è già nell'installazione base.

bash
pip install libreyolo

Predizione

I pesi vengono scaricati automaticamente al primo utilizzo: LibreYOLO preleva la dimensione corrispondente direttamente dai checkpoint ufficiali e la mette in cache in locale.

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)   # vettori unitari (H, W, 3) float32
CLI
libreyolo predict model=LibreMoGe2s-normal.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

MoGe-2 restituisce un campo denso invece di un insieme di rilevamenti, quindi result.boxes è vuoto e conf, iou e max_det non hanno alcun effetto. Il risultato sta in result.normal_map: un array (H, W, 3) di vettori unitari nel sistema di riferimento della camera OpenCV, dove +x va a destra, +y va verso il basso, +z entra nella scena, e una superficie rivolta verso la camera vale (0, 0, -1). Predire una lista di immagini esegue un forward pass per immagine; questa famiglia non ha un percorso rapido a batch impilato. Vedi predizione per sorgenti, streaming e gestione dei risultati.

Varianti

Tre dimensioni di encoder sono distribuite come checkpoint separati: ViT-S, ViT-B e ViT-L, tutte alla stessa risoluzione di input. Il banco di benchmark di LibreYOLO non ha misurato questa famiglia, quindi non ci sono numeri di accuratezza pubblicati per confrontarle; scegli una dimensione in base al tuo budget di calcolo.

Validazione

val() misura l'errore angolare rispetto a un dataset appaiato di mappe di normali: immagini affiancate a PNG di normali a 16 bit con lo stesso nome, più una maschera di validità opzionale, così i pixel di padding e quelli non validi non vengono mai conteggiati. Restituisce l'errore angolare medio e mediano in gradi, più la percentuale di pixel entro 11.25, 22.5 e 30 gradi.

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

Esportazione

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
normalnormal to ONNX: supportatonormal to TorchScript: supportatonormal to ExecuTorch: supportatonormal to TensorRT: supportatonormal to OpenVINO: supportatonormal to Paddle: non supportatonormal to MNN: non supportatonormal to RKNN: non supportatonormal to ncnn: supportatonormal to TFLite: non supportatonormal to CoreML: non supportatonormal to Core AI: non supportato

L'esportazione delle normali usa un contratto di runtime a risoluzione fissa e batch 1: dynamic e un batch diverso da 1 vengono rifiutati, e imgsz deve essere divisibile per la dimensione delle patch dell'encoder ViT, cosa che LibreYOLO verifica prima che l'esecuzione inizi. Un artefatto esportato si ricarica con LibreYOLO() in base al suffisso del file, quindi un file .onnx si comporta come un checkpoint e restituisce lo stesso 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
Usare il file esportato
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMoGe2s-normal.onnx")result = model(SAMPLE_IMAGE) print(result.normal_map.array.shape)

Licenze

Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.

Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.

Lavoro originale
MoGe-2, Microsoft
Licenza upstream
MIT
Sorgente upstream
github.com/microsoft/MoGe
Codice LibreYOLO
MIT
Pesi
MIT, distribuiti dai rispettivi autori. LibreYOLO non li ospita né ne mantiene una copia.
Interpretazione
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 non copia questi checkpoint nella propria organizzazione. LibreYOLO("LibreMoGe2s-normal.pt") scarica la dimensione corrispondente direttamente dai repository ufficiali su Hugging Face a una revisione fissata, e verifica il file rispetto a un checksum SHA-256 registrato prima dell'uso.

Citazione

@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}, 
}

Copiato dal blocco di citazione degli autori disponibile su github.com/microsoft/MoGe#-citation.

Verificato con LibreYOLO v1.5.0. Le tabelle di supporto, i checkpoint e i dati dei benchmark in questa pagina vengono generati dalla libreria rilasciata e dai pesi pubblicati, non scritti a mano.