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.

bash
pip install libreyolo

Prediçã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.

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

O 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.

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

Exportação

TarefaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
normalnormal to ONNX: compatívelnormal to TorchScript: compatívelnormal to ExecuTorch: compatívelnormal to TensorRT: compatívelnormal to OpenVINO: compatívelnormal to Paddle: incompatívelnormal to MNN: incompatívelnormal to RKNN: incompatívelnormal to ncnn: compatívelnormal to TFLite: incompatívelnormal to CoreML: incompatívelnormal 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.

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 o arquivo exportado
from 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.

Verificado com o LibreYOLO v1.5.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.