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
- surface normals
- Tamaños
- s, b, l at 518 px
- Instalación
pip install libreyolo- Nivel de compatibilidad
- Solo inferencia, desde v1.5.0. Solo permite predecir, validar y exportar. Las funciones de entrenamiento no se aplican.
- 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.
pip install libreyoloPredicción
Los pesos se descargan automáticamente en el primer uso. Los tamaños s y l usan mirrors de LibreYOLO; b sigue usando el checkpoint upstream.
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)libreyolo predict model=LibreMoGe2s-normal.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueMoGe-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.
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íxeleslibreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518Exportación
| Tarea | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Surface normals | Surface normals to ONNX: compatible | Surface normals to TorchScript: compatible | Surface normals to ExecuTorch: compatible | Surface normals to TensorRT: compatible | Surface normals to OpenVINO: compatible | Surface normals to Paddle: no compatible | Surface normals to MNN: no compatible | Surface normals to RKNN: no compatible | Surface normals to ncnn: compatible | Surface normals to TFLite: no compatible | Surface normals to CoreML: no compatible | Surface normals 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.
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)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, republicados en huggingface.co/LibreYOLO
- Interpretación
- 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.
Los checkpoints s y l están replicados por LibreYOLO; b permanece upstream. Los artefactos descargados conservan la licencia de su editor.
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.