MoGe-2
O MoGe-2 é um modelo de geometria monocular de uma única passagem que prediz um campo denso de normais de superfície a partir de uma imagem RGB. O LibreYOLO oferece suporte a ele apenas para estimativa de normais, através dos checkpoints oficiais ViT-S, ViT-B e ViT-L.
- Tarefas
- normal
- Tamanhos
- s, b, l at 518 px
- Instalação
pip install libreyolo- Nível de suporte
- Somente inferência, desde a v. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
- Origem
- MoGe-2 por Microsoft, MIT. Artigo, código-fonte
- Licenças
- Código MIT, pesos MIT. Uso comercial
Instalação
O MoGe-2 não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base.
pip install libreyoloPredição
Os pesos são baixados automaticamente no primeiro uso: o LibreYOLO busca o tamanho correspondente direto dos checkpoints oficiais e guarda em cache 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) # vetores unitários (H, W, 3) float32libreyolo predict model=LibreMoGe2s-normal.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueO MoGe-2 devolve um campo denso em vez de um conjunto de detecções, então
result.boxes fica vazio e conf, iou e max_det não têm efeito.
result.normal_map carrega o resultado: um array (H, W, 3) de vetores
unitários no referencial de câmera do OpenCV, onde +x é para a direita, +y é
para baixo, +z entra na cena, e uma superfície voltada para a câmera lê
(0, 0, -1). Predizer uma lista de imagens roda um forward pass por imagem;
esta família não tem caminho rápido de batch empilhado. Veja
predição para fontes, streaming e tratamento de resultados.
Variantes
Três tamanhos de encoder são publicados como checkpoints separados: ViT-S, ViT-B e ViT-L, todos na mesma resolução de entrada. O harness de benchmark do LibreYOLO não mediu esta família, então não há números de acurácia publicados para compará-los; escolha um tamanho de acordo com o seu próprio orçamento de computação.
Validação
val() mede o erro angular contra um dataset pareado de mapas de normais:
imagens ao lado de PNGs de normais de 16 bits com o mesmo nome-base, com uma
máscara de validade opcional para que pixels de padding e inválidos nunca
contem. Ele devolve o erro angular médio e mediano em graus, além da
porcentagem de pixels dentro de 11.25, 22.5 e 30 graus.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMoGe2s-normal.pt")metrics = model.val(data="my-dataset.yaml", imgsz=518) print(metrics["metrics/mean_angular_error"]) # grausprint(metrics["metrics/median_angular_error"])print(metrics["metrics/within_11_25"]) # porcentagem de pixelslibreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518Exportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| normal | normal to ONNX: compatível | normal to TorchScript: compatível | normal to ExecuTorch: compatível | normal to TensorRT: compatível | normal to OpenVINO: compatível | normal to Paddle: incompatível | normal to MNN: incompatível | normal to RKNN: incompatível | normal to ncnn: compatível | normal to TFLite: incompatível | normal to CoreML: incompatível | normal to Core AI: incompatível |
A exportação de normais usa um contrato de runtime de resolução fixa e batch 1:
dynamic e um batch diferente de 1 são rejeitados, e imgsz precisa ser
divisível pelo tamanho de patch do encoder ViT, o que o LibreYOLO confere antes
de a execução começar. Um artefato exportado é carregado de volta por
LibreYOLO() pelo sufixo do arquivo, então um arquivo .onnx se comporta como
um checkpoint e devolve o mesmo 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)Licenciamento
Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.
Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.
- Trabalho original
- MoGe-2, Microsoft
- Licença original
- MIT
- Código-fonte original
- github.com/microsoft/MoGe
- Código do LibreYOLO
- MIT
- Pesos
- MIT, distribuído pelos autores. O LibreYOLO não hospeda nem espelha esses pesos.
- Interpretação
- 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.
O LibreYOLO não copia esses checkpoints para a sua própria organização.
LibreYOLO("LibreMoGe2s-normal.pt") baixa o tamanho correspondente direto dos
repositórios oficiais no Hugging Face em uma revisão fixada, e verifica o
arquivo contra um checksum SHA-256 registrado antes de usar.
Citação
@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 do bloco de citação dos autores em github.com/microsoft/MoGe#-citation.