MoGe-2

MoGe-2 es un modelo de geometría monocular de una sola pasada que predice un campo denso de normales de superficie a partir de una única imagen RGB. LibreYOLO lo soporta solo para estimación de normales, a través de los checkpoints oficiales ViT-S, ViT-B y ViT-L.

Tareas
normal
Tamaños
s, b, l at 518 px
Instalación
pip install libreyolo
Nivel de compatibilidad
Solo inferencia, desde v. Solo permite predecir, validar y exportar. Las funciones de entrenamiento no se aplican.
Proyecto original
MoGe-2 de Microsoft, MIT. Artículo, fuente
Licencias
Código MIT, pesos MIT. Uso comercial

Instalación

MoGe-2 no necesita ningún extra opcional. Todo lo que importa está en la instalación base.

bash
pip install libreyolo

Predicción

Los pesos se descargan automáticamente en el primer uso: LibreYOLO obtiene el tamaño correspondiente directamente de los checkpoints oficiales y lo guarda en la caché local.

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

MoGe-2 devuelve un campo denso en lugar de un conjunto de detecciones, así que result.boxes está vacío y conf, iou y max_det no tienen efecto. result.normal_map contiene el resultado: un array (H, W, 3) de vectores unitarios en el sistema de coordenadas de cámara de OpenCV, donde +x es hacia la derecha, +y hacia abajo, +z hacia el interior de la escena, y una superficie orientada hacia la cámara se lee como (0, 0, -1). Predecir una lista de imágenes ejecuta una pasada hacia delante por imagen; esta familia no tiene una ruta rápida de batch apilado. Consulta predicción para fuentes, streaming y manejo de resultados.

Variantes

Tres tamaños de encoder se publican como checkpoints separados: ViT-S, ViT-B y ViT-L, todos con la misma resolución de entrada. El banco de pruebas de LibreYOLO no ha medido esta familia, así que no hay cifras de precisión publicadas con las que compararlos; elige un tamaño según tu propio presupuesto de cómputo.

Validación

val() mide el error angular contra un dataset emparejado de mapas de normales: imágenes junto a PNG de normales de 16 bits con el mismo nombre base, con una máscara de validez opcional para que los píxeles rellenados e inválidos nunca cuenten. Devuelve el error angular medio y mediano en grados, más el porcentaje de píxeles dentro de 11,25, 22,5 y 30 grados.

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"])   # gradosprint(metrics["metrics/median_angular_error"])print(metrics["metrics/within_11_25"])          # porcentaje de píxeles
CLI
libreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518

Exportación

TareaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
normalnormal to ONNX: compatiblenormal to TorchScript: compatiblenormal to ExecuTorch: compatiblenormal to TensorRT: compatiblenormal to OpenVINO: compatiblenormal to Paddle: no compatiblenormal to MNN: no compatiblenormal to RKNN: no compatiblenormal to ncnn: compatiblenormal to TFLite: no compatiblenormal to CoreML: no compatiblenormal to Core AI: no compatible

La exportación de normales usa un contrato de ejecución de resolución fija y batch 1: se rechazan dynamic y cualquier batch distinto de 1, y imgsz debe ser divisible por el tamaño de parche del encoder ViT, algo que LibreYOLO comprueba antes de que empiece la ejecución. Un artefacto exportado se vuelve a cargar con LibreYOLO() según su extensión de archivo, así que un archivo .onnx se comporta como un checkpoint y devuelve el mismo 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
Usar el archivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMoGe2s-normal.onnx")result = model(SAMPLE_IMAGE) print(result.normal_map.array.shape)

Licencia

Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.

Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.

Trabajo original
MoGe-2, Microsoft
Licencia del proyecto original
MIT
Fuente del proyecto original
github.com/microsoft/MoGe
Código de LibreYOLO
MIT
Pesos
MIT, distribuidos por sus autores. LibreYOLO no los aloja ni los replica.
Interpretación
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 no copia estos checkpoints a su propia organización. LibreYOLO("LibreMoGe2s-normal.pt") descarga el tamaño correspondiente directamente de los repositorios oficiales de Hugging Face en una revisión fijada, y verifica el archivo contra un checksum SHA-256 registrado antes de usarlo.

Cita

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

Copiado del bloque de cita de los autores en github.com/microsoft/MoGe#-citation.

Verificado con LibreYOLO v1.5.0. Las tablas de compatibilidad, los checkpoints y las cifras de rendimiento de esta página se generan a partir de la biblioteca publicada y los pesos publicados; no se escriben a mano.