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.
- 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: LibreYOLO obtiene el tamaño correspondiente directamente de los checkpoints oficiales y lo guarda en la caché local.
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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| normal | normal to ONNX: compatible | normal to TorchScript: compatible | normal to ExecuTorch: compatible | normal to TensorRT: compatible | normal to OpenVINO: compatible | normal to Paddle: no compatible | normal to MNN: no compatible | normal to RKNN: no compatible | normal to ncnn: compatible | normal to TFLite: no compatible | normal to CoreML: no compatible | normal 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, 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.