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
- surface normals
- Tamanhos
- s, b, l at 518 px
- Instalação
pip install libreyolo- Nível de suporte
- Somente inferência, desde a v1.5.0. 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. Os tamanhos s e l usam espelhos do LibreYOLO; b continua usando o 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) # 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Surface normals | Surface normals to ONNX: compatível | Surface normals to TorchScript: compatível | Surface normals to ExecuTorch: compatível | Surface normals to TensorRT: compatível | Surface normals to OpenVINO: compatível | Surface normals to Paddle: incompatível | Surface normals to MNN: incompatível | Surface normals to RKNN: incompatível | Surface normals to ncnn: compatível | Surface normals to TFLite: incompatível | Surface normals to CoreML: incompatível | Surface normals 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, republicado em huggingface.co/LibreYOLO
- Interpretação
- 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.
O LibreYOLO espelha os checkpoints s e l; b permanece upstream. Os artefatos baixados mantêm a licença de seu publicador.
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.