MoGe-2

MoGe-2 — монокулярная геометрическая модель, которая за один прямой проход предсказывает плотное поле нормалей поверхности по одному RGB-изображению. В LibreYOLO она доступна только для оценки нормалей — через официальные чекпойнты ViT-S, ViT-B и ViT-L.

Задачи
surface normals
Размеры
s, b, l at 518 px
Установка
pip install libreyolo
Уровень поддержки
Только инференс, начиная с v1.5.0. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
Исходный проект
MoGe-2 от Microsoft, MIT. Статья, исходный код
Лицензии
Код: MIT, веса: MIT. Коммерческое использование

Установка

MoGe-2 не требует установки дополнительных extra-пакетов. Всё, что он импортирует, входит в базовую установку.

bash
pip install libreyolo

Предсказание

Веса скачиваются автоматически при первом использовании. Размеры s и l используют зеркала LibreYOLO; b по-прежнему использует исходный чекпойнт.

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)   # (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

MoGe-2 возвращает плотное поле, а не набор детекций, поэтому result.boxes пуст, а conf, iou и max_det ни на что не влияют. Результат лежит в result.normal_map: массив (H, W, 3) из единичных векторов в системе координат камеры OpenCV, где +x — вправо, +y — вниз, +z — вглубь сцены, а обращённая к камере поверхность даёт (0, 0, -1). Предсказание по списку изображений выполняет по одному прямому проходу на изображение; быстрого пути со сборкой батча у этого семейства нет. Об источниках, стриминге и обработке результатов — в разделе предсказание.

Варианты

Три размера энкодера поставляются отдельными чекпойнтами: ViT-S, ViT-B и ViT-L, все с одним и тем же входным разрешением. Бенчмарк-стенд LibreYOLO это семейство не измерял, поэтому опубликованных чисел по точности, по которым их можно было бы сравнить, нет; выбирайте размер под свой бюджет вычислений.

Валидация

val() измеряет угловую ошибку на парном датасете карт нормалей: изображения рядом с 16-битными PNG нормалей с тем же именем файла и необязательная маска валидности, чтобы пиксели заполнения и некорректные пиксели никогда не учитывались. Возвращаются средняя и медианная угловая ошибка в градусах, а также процент пикселей, попавших в 11.25, 22.5 и 30 градусов.

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"])   # градусыprint(metrics["metrics/median_angular_error"])print(metrics["metrics/within_11_25"])          # процент пикселей
CLI
libreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518

Экспорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
Surface normalsSurface normals to ONNX: поддерживаетсяSurface normals to TorchScript: поддерживаетсяSurface normals to ExecuTorch: поддерживаетсяSurface normals to TensorRT: поддерживаетсяSurface normals to OpenVINO: поддерживаетсяSurface normals to Paddle: не поддерживаетсяSurface normals to MNN: не поддерживаетсяSurface normals to RKNN: не поддерживаетсяSurface normals to ncnn: поддерживаетсяSurface normals to TFLite: не поддерживаетсяSurface normals to CoreML: не поддерживаетсяSurface normals to Core AI: не поддерживается

Экспорт нормалей работает по контракту среды выполнения с фиксированным разрешением и батчем 1: dynamic и batch, отличный от 1, отклоняются, а imgsz должен нацело делиться на размер патча ViT-энкодера — LibreYOLO проверяет это до старта запуска. Экспортированный артефакт загружается обратно через LibreYOLO() по суффиксу файла, поэтому файл .onnx ведёт себя как чекпойнт и возвращает тот же 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
Использование экспортированного файла
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMoGe2s-normal.onnx")result = model(SAMPLE_IMAGE) print(result.normal_map.array.shape)

Лицензирование

Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.

Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.

Оригинальная работа
MoGe-2, Microsoft
Лицензия исходного проекта
MIT
Исходный код проекта
github.com/microsoft/MoGe
Код LibreYOLO
MIT
Веса
MIT, повторно опубликованы на huggingface.co/LibreYOLO
Толкование
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.

Чекпойнты s и l размещены на зеркалах LibreYOLO; b остаётся в исходном репозитории. Скачанные артефакты сохраняют лицензию издателя.

Цитирование

@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}, 
}

Скопировано из блока цитирования авторов на странице github.com/microsoft/MoGe#-citation.

Проверено с LibreYOLO v1.6.0. Таблицы поддержки, чекпойнты и результаты бенчмарков на этой странице сгенерированы из выпущенной библиотеки и опубликованных весов, а не написаны вручную.

Архитектура MoGe-2

Выберите вариант или обзор семейства, затем блок для просмотра подробностей. Откройте полную схему для увеличения или скачивания SVG и PNG. Схемы на английском языке.